<?php
namespace App\DataProvider;
use ApiPlatform\Core\DataProvider\CollectionDataProviderInterface;
use ApiPlatform\Core\DataProvider\ItemDataProviderInterface;
use ApiPlatform\Core\DataProvider\RestrictedDataProviderInterface;
use App\DataProvider\Traits\CompanyRestrictedTrait;
use App\DataTransformer\CompanyCustomFieldDataTransformer;
use App\Entity\CustomFieldSetting;
use App\Request\CompanyCustomFieldRequest;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\Security\Core\Security;
class CompanyCustomFieldDataProvider implements CollectionDataProviderInterface, RestrictedDataProviderInterface, ItemDataProviderInterface
{
use CompanyRestrictedTrait;
/**
* @var CompanyCustomFieldDataTransformer
*/
private $transformer;
/**
* CompanyCustomFieldDataProvider constructor.
*
* @param EntityManagerInterface $entityManager
* @param Security $security
* @param CompanyCustomFieldDataTransformer $transformer
*/
public function __construct(EntityManagerInterface $entityManager, Security $security, CompanyCustomFieldDataTransformer $transformer)
{
$this->entityManager = $entityManager;
$this->transformer = $transformer;
$this->security = $security;
}
public function getCollection(string $resourceClass, string $operationName = null)
{
$company = $this->getCompany();
if ($company === null) {
return null;
}
$data = $company->getCustomFieldSettings()->map(
function (CustomFieldSetting $setting) {
return $this->transformer->transform($setting);
}
);
return $data;
}
public function getItem(string $resourceClass, $id, string $operationName = null, array $context = [])
{
return null;
}
public function supports(string $resourceClass, string $operationName = null, array $context = []): bool
{
return CompanyCustomFieldRequest::class === $resourceClass;
}
}