src/DataProvider/ValidationKycDataProvider.php line 38

Open in your IDE?
  1. <?php
  2. namespace App\DataProvider;
  3. use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\PaginationExtension;
  4. use ApiPlatform\Core\Bridge\Doctrine\Orm\Extension\QueryResultCollectionExtensionInterface;
  5. use ApiPlatform\Core\Bridge\Doctrine\Orm\Util\QueryNameGenerator;
  6. use ApiPlatform\Core\DataProvider\ContextAwareCollectionDataProviderInterface;
  7. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  8. use App\Repository\OrganizationRepository;
  9. use Evo\Infrastructure\MappingORM\Organization;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. final class ValidationKycDataProvider implements ContextAwareCollectionDataProviderInterfaceRestrictedDataProviderInterface
  13. {
  14.     private const OPERATION 'validation_kyc';
  15.     private OrganizationRepository $orgaRepo;
  16.     private RequestStack $requestStack;
  17.     private PaginationExtension $paginationExtension;
  18.     public function __construct(
  19.         OrganizationRepository $orgaRepo,
  20.         RequestStack $requestStack,
  21.         PaginationExtension $paginationExtension
  22.     ) {
  23.         $this->orgaRepo $orgaRepo;
  24.         $this->requestStack $requestStack;
  25.         $this->paginationExtension $paginationExtension;
  26.     }
  27.     public function supports(string $resourceClassstring $operationName null, array $context = []): bool
  28.     {
  29.         return Organization::class === $resourceClass && self::OPERATION === $operationName;
  30.     }
  31.     public function getCollection(string $resourceClassstring $operationName null, array $context = [])
  32.     {
  33.         $allStatus = [];
  34.         $request $this->requestStack->getCurrentRequest();
  35.         if (!$request instanceof Request) {
  36.             return [];
  37.         }
  38.         $status $request->attributes->get('status');
  39.         $allStatus[] = $status;
  40.         if (null !== $request->query->get('organization_status') && !empty($request->query->get('organization_status'))) {
  41.             foreach ($request->query->get('organization_status') as $orgaStatus) {
  42.                 $allStatus[] = $orgaStatus;
  43.             }
  44.         }
  45.         $queryBuilder $this->orgaRepo->getOrgaToKYC($allStatustrue);
  46.         $this->paginationExtension->applyToCollection($queryBuilder, new QueryNameGenerator(), $resourceClass$operationName$context);
  47.         if ($this->paginationExtension instanceof QueryResultCollectionExtensionInterface
  48.             && $this->paginationExtension->supportsResult($resourceClass$operationName$context)) {
  49.             return $this->paginationExtension->getResult($queryBuilder$resourceClass$operationName$context);
  50.         }
  51.         return $queryBuilder->getQuery()->getResult();
  52.     }
  53. }