ThemeCustomization.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <?php
  2. namespace Webkul\BagistoApi\Models;
  3. use ApiPlatform\Laravel\Eloquent\Filter\EqualsFilter;
  4. use ApiPlatform\Metadata\ApiProperty;
  5. use ApiPlatform\Metadata\ApiResource;
  6. use ApiPlatform\Metadata\Get;
  7. use ApiPlatform\Metadata\GetCollection;
  8. use ApiPlatform\Metadata\GraphQl\Query;
  9. use ApiPlatform\Metadata\GraphQl\QueryCollection;
  10. use ApiPlatform\Metadata\QueryParameter;
  11. use Illuminate\Database\Eloquent\Model;
  12. use Webkul\BagistoApi\Resolver\BaseQueryItemResolver;
  13. use Webkul\BagistoApi\State\CursorAwareCollectionProvider;
  14. #[ApiResource(
  15. routePrefix: '/api/shop',
  16. shortName: 'ThemeCustomization',
  17. operations: [
  18. new Get(
  19. uriTemplate: '/theme-customizations/{id}',
  20. normalizationContext: [
  21. 'skip_null_values' => false,
  22. ],
  23. ),
  24. new GetCollection(
  25. uriTemplate: '/theme-customizations',
  26. paginationEnabled: true,
  27. paginationItemsPerPage: 15,
  28. paginationMaximumItemsPerPage: 100,
  29. normalizationContext: [
  30. 'skip_null_values' => false,
  31. ],
  32. ),
  33. ],
  34. graphQlOperations: [
  35. new Query(resolver: BaseQueryItemResolver::class),
  36. new QueryCollection(provider: CursorAwareCollectionProvider::class),
  37. ],
  38. )]
  39. #[QueryParameter(key: 'type', property: 'type', filter: EqualsFilter::class)]
  40. #[QueryParameter(key: 'name', property: 'name', filter: EqualsFilter::class)]
  41. class ThemeCustomization extends \Webkul\Theme\Models\ThemeCustomization
  42. {
  43. /**
  44. * Get unique theme customization identifier for API
  45. */
  46. #[ApiProperty(identifier: true, writable: false)]
  47. public function getId(): int
  48. {
  49. return $this->id;
  50. }
  51. /**
  52. * Get translation for the current locale
  53. */
  54. #[ApiProperty(readable: true, writable: false, readableLink: true, description: 'Current locale translation')]
  55. public function getTranslation(?string $locale = null, ?bool $withFallback = null): ?Model
  56. {
  57. return $this->translation;
  58. }
  59. /**
  60. * Get all translations
  61. */
  62. #[ApiProperty(readable: true, writable: false, readableLink: true, description: 'All translations')]
  63. public function getTranslations()
  64. {
  65. return $this->translations;
  66. }
  67. }