DolibarrAccountProvider.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\State\Provider\Dolibarr;
  4. use ApiPlatform\Metadata\GetCollection;
  5. use ApiPlatform\Metadata\Operation;
  6. use ApiPlatform\State\ProviderInterface;
  7. use App\ApiResources\Dolibarr\DolibarrAccount;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use App\Service\ApiResourceBuilder\Dolibarr\DolibarrAccountBuilder;
  10. use RuntimeException;
  11. /**
  12. * Custom provider pour les DolibarrAccounts récupérés via l'api dolibarr
  13. * @package App\DataProvider\Utils
  14. */
  15. final class DolibarrAccountProvider implements ProviderInterface
  16. {
  17. public function __construct(
  18. private DolibarrAccountBuilder $dolibarrAccountCreator,
  19. )
  20. {}
  21. /**
  22. * @param Operation $operation
  23. * @param mixed[] $uriVariables
  24. * @param mixed[] $context
  25. * @return DolibarrAccount|null
  26. */
  27. public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?DolibarrAccount
  28. {
  29. if($operation instanceof GetCollection) {
  30. throw new RuntimeException('not supported', Response::HTTP_METHOD_NOT_ALLOWED);
  31. }
  32. return $this->dolibarrAccountCreator->getDolibarrAccount($uriVariables['organizationId']);
  33. }
  34. }