| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- <?php
- namespace App\State\Provider\OnlineRegistration;
- use ApiPlatform\Metadata\GetCollection;
- use ApiPlatform\Metadata\Operation;
- use ApiPlatform\State\ProviderInterface;
- use App\ApiResources\OnlineRegistration\RegistrationStatus;
- use App\Entity\Access\Access;
- use App\Enum\OnlineRegistration\RegistrationStatusEnum;
- use App\Service\ApiLegacy\ApiLegacyRequestService;
- use Symfony\Bundle\SecurityBundle\Security;
- class RegistrationStatusProvider implements ProviderInterface
- {
- public function __construct(
- private readonly Security $security,
- private readonly ApiLegacyRequestService $apiLegacyRequestService,
- ) {
- }
- /**
- * @param mixed[] $uriVariables
- * @param mixed[] $context
- *
- * @throws \JsonException
- */
- public function provide(Operation $operation, array $uriVariables = [], array $context = []): ?RegistrationStatus
- {
- if ($operation instanceof GetCollection) {
- throw new \RuntimeException('not supported', 500);
- }
- /** @var Access $currentAccess */
- $currentAccess = $this->security->getUser();
- if ($uriVariables['accessId'] !== $currentAccess->getId()) {
- throw new \RuntimeException('forbidden', 503);
- }
- // --- L'appel au service remplacera l'appel à l'API v1 à l'avenir --
- // $registrationStatusValue = $this->registrationStatusService->getStatus($currentAccess);
- $response = $this->apiLegacyRequestService->getJsonContent(
- '/api/online_registration/registration_status',
- [],
- [],
- false
- );
- $statusMap = [
- 'your_application_is_awaiting_processing' => RegistrationStatusEnum::NEGOTIABLE,
- 'your_registration_file_has_been_validated' => RegistrationStatusEnum::ACCEPTED,
- 'you_have_been_placed_on_the_waiting_list' => RegistrationStatusEnum::PENDING,
- 'your_application_has_been_refused' => RegistrationStatusEnum::DENIED,
- null => null,
- ];
- $status = isset($response['status']) ? $statusMap[$response['status']] : null;
- $registrationStatus = new RegistrationStatus();
- $registrationStatus->setAccessId($currentAccess->getId());
- $registrationStatus->setStatus($status);
- return $registrationStatus;
- }
- }
|