src/DataProvider/CompanyCustomFieldDataProvider.php line 42

Open in your IDE?
  1. <?php
  2. namespace App\DataProvider;
  3. use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
  4. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  5. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  6. use App\DataProvider\Traits\CompanyRestrictedTrait;
  7. use App\DataTransformer\CompanyCustomFieldDataTransformer;
  8. use App\Entity\CustomFieldSetting;
  9. use App\Request\CompanyCustomFieldRequest;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Symfony\Component\Security\Core\Security;
  12. class CompanyCustomFieldDataProvider implements CollectionDataProviderInterface, RestrictedDataProviderInterface, ItemDataProviderInterface
  13. {
  14. use CompanyRestrictedTrait;
  15. /**
  16. * @var CompanyCustomFieldDataTransformer
  17. */
  18. private $transformer;
  19. /**
  20. * CompanyCustomFieldDataProvider constructor.
  21. *
  22. * @param EntityManagerInterface $entityManager
  23. * @param Security $security
  24. * @param CompanyCustomFieldDataTransformer $transformer
  25. */
  26. public function __construct(EntityManagerInterface $entityManager, Security $security, CompanyCustomFieldDataTransformer $transformer)
  27. {
  28. $this->entityManager = $entityManager;
  29. $this->transformer = $transformer;
  30. $this->security = $security;
  31. }
  32. public function getCollection(string $resourceClass, string $operationName = null)
  33. {
  34. $company = $this->getCompany();
  35. if ($company === null) {
  36. return null;
  37. }
  38. $data = $company->getCustomFieldSettings()->map(
  39. function (CustomFieldSetting $setting) {
  40. return $this->transformer->transform($setting);
  41. }
  42. );
  43. return $data;
  44. }
  45. public function getItem(string $resourceClass, $id, string $operationName = null, array $context = [])
  46. {
  47. return null;
  48. }
  49. public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
  50. {
  51. return CompanyCustomFieldRequest::class === $resourceClass;
  52. }
  53. }