src/DataProvider/UserCollectionDataProvider.php line 14

Open in your IDE?
  1. <?php
  2. namespace App\DataProvider;
  3. use App\Entity\User;
  4. use App\Service\EsCache;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use ApiPlatform\Doctrine\Orm\Util\QueryNameGenerator;
  7. use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
  8. use ApiPlatform\Core\DataProvider\ContextAwareCollectionDataProviderInterface;
  9. final class UserCollectionDataProvider implements ContextAwareCollectionDataProviderInterfaceRestrictedDataProviderInterface
  10. {
  11.     public function __construct(private EntityManagerInterface $_em, private $collectionExtensions = [], private EsCache $esCache)
  12.     {}
  13.     public function supports(string $resourceClassstring $operationName null, array $context = []): bool
  14.     {
  15.         return User::class === $resourceClass && $operationName === 'get_for_assign_with_group';
  16.     }
  17.     public function getCollection(string $resourceClassstring $operationName null, array $context = []): iterable
  18.     {
  19.         $queryBuilder $this->_em->getRepository(User::class)->createQueryBuilder('x');
  20.         $queryNameGenerator = new QueryNameGenerator();   
  21.         foreach ($this->collectionExtensions as $extension) {
  22.             $extension->applyToCollection($queryBuilder$queryNameGenerator$resourceClass$operationName$context);
  23.         }
  24.         $users $queryBuilder->getQuery()->getResult();
  25.         $cond ' WHERE client_id = '.$this->esCache->getClient()->getId().' AND is_generated = 0';
  26.         if (isset($context['filters']['user_name_search']) && strlen($context['filters']['user_name_search']) > 0) {
  27.             $cond .= ' AND name LIKE "%'.$context['filters']['user_name_search'].'%"';
  28.         }
  29.         $query 'SELECT id, name as firstName, "" as lastName, "" as company, "" as jobTitle, "" as country, "" as imageName, "group" as type FROM user_group'.$cond;
  30.         $statement $this->_em->getConnection()->prepare($query);
  31.         $userGroups $statement->executeQuery()->fetchAllAssociative();
  32.         return [...$users, ...$userGroups];
  33.     }
  34. }