src/DataProvider/DeliveryNotePdfDataProvider.php line 37

Open in your IDE?
  1. <?php
  2. namespace App\DataProvider;
  3. use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
  4. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  5. use App\DataProvider\Traits\CompanyRestrictedTrait;
  6. use App\Entity\OrderRequest;
  7. use App\Request\DeliveryNotePdfRequest;
  8. use App\Security\CompanyUserProvider;
  9. use App\Service\OrderRequestStateHandler;
  10. use Doctrine\ORM\EntityManagerInterface;
  11. use Doctrine\ORM\QueryBuilder;
  12. use Symfony\Component\Security\Core\Security;
  13. class DeliveryNotePdfDataProvider implements RestrictedDataProviderInterface, ItemDataProviderInterface
  14. {
  15. use CompanyRestrictedTrait;
  16. /**
  17. * DeliveryNotePdfDataProvider constructor.
  18. *
  19. * @param EntityManagerInterface $entityManager
  20. * @param Security $security
  21. * @param CompanyUserProvider $companyUserProvider
  22. */
  23. public function __construct(EntityManagerInterface $entityManager, Security $security, CompanyUserProvider $companyUserProvider)
  24. {
  25. $this->entityManager = $entityManager;
  26. $this->security = $security;
  27. $this->userProvider = $companyUserProvider;
  28. }
  29. public function getItem(string $resourceClass, $id, string $operationName = null, array $context = [])
  30. {
  31. if (!$this->supports($resourceClass)) {
  32. return null;
  33. }
  34. /**
  35. * @var QueryBuilder $qb
  36. */
  37. $qb = $this->entityManager->getRepository(OrderRequest::class)->createQueryBuilder('p');
  38. $this->addRestrictions($qb)
  39. ->andWhere('p.authToken = :uuid')
  40. ->andWhere('p.state = :state')
  41. ->setParameter('state', OrderRequestStateHandler::STATE_CREATED)
  42. ->setParameter('uuid', $id);
  43. return $qb->getQuery()->getOneOrNullResult();
  44. }
  45. public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
  46. {
  47. return DeliveryNotePdfRequest::class === $resourceClass;
  48. }
  49. }