<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
use App\DataProvider\Traits\CompanyRestrictedTrait;
use App\Entity\OrderRequest;
use App\Request\DeliveryNotePdfRequest;
use App\Security\CompanyUserProvider;
use App\Service\OrderRequestStateHandler;
use Doctrine\ORM\EntityManagerInterface;
use Doctrine\ORM\QueryBuilder;
use Symfony\Component\Security\Core\Security;
class DeliveryNotePdfDataProvider implements RestrictedDataProviderInterface, ItemDataProviderInterface
{
use CompanyRestrictedTrait;
/**
* DeliveryNotePdfDataProvider constructor.
*
* @param EntityManagerInterface $entityManager
* @param Security $security
* @param CompanyUserProvider $companyUserProvider
*/
public function __construct(EntityManagerInterface $entityManager, Security $security, CompanyUserProvider $companyUserProvider)
{
$this->entityManager = $entityManager;
$this->security = $security;
$this->userProvider = $companyUserProvider;
}
public function getItem(string $resourceClass, $id, string $operationName = null, array $context = [])
{
if (!$this->supports($resourceClass)) {
return null;
}
/**
* @var QueryBuilder $qb
*/
$qb = $this->entityManager->getRepository(OrderRequest::class)->createQueryBuilder('p');
$this->addRestrictions($qb)
->andWhere('p.authToken = :uuid')
->andWhere('p.state = :state')
->setParameter('state', OrderRequestStateHandler::STATE_CREATED)
->setParameter('uuid', $id);
return $qb->getQuery()->getOneOrNullResult();
}
public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
{
return DeliveryNotePdfRequest::class === $resourceClass;
}
}