<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\ContextAwareCollectionDataProviderInterface;
use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
use App\Repository\ActivitySubdomainRepository;
use Evo\Infrastructure\MappingORM\ActivitySubdomain;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;
final class ActivitySubdomainAllDataProvider implements ContextAwareCollectionDataProviderInterface, RestrictedDataProviderInterface
{
private const OPERATION = 'activity_subdomain_all';
private ActivitySubdomainRepository $ActivitySubdomainRepository;
private RequestStack $requestStack;
public function __construct(
ActivitySubdomainRepository $ActivitySubdomainRepository,
RequestStack $requestStack
) {
$this->ActivitySubdomainRepository = $ActivitySubdomainRepository;
$this->requestStack = $requestStack;
}
public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
{
return ActivitySubdomain::class === $resourceClass && self::OPERATION === $operationName;
}
/**
* @return array|float|int|iterable|mixed|string
*/
public function getCollection(string $resourceClass, string $operationName = null, array $context = [])
{
$request = $this->requestStack->getCurrentRequest();
if (!$request instanceof Request) {
return [];
}
$order = $request->query->get('order');
$label = (string) $request->query->get('label');
$activityDomainId = $request->query->get('activityDomain_id');
$queryBuilder = $this->ActivitySubdomainRepository->getByLabel($label, $order, $activityDomainId);
return $queryBuilder->getQuery()->getResult();
}
}