| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- <?php
- declare(strict_types=1);
- namespace App\State\Processor\Freemium;
- use ApiPlatform\Metadata\Delete;
- use ApiPlatform\Metadata\Operation;
- use ApiPlatform\Metadata\Post;
- use App\ApiResources\Freemium\FreemiumEvent;
- use App\Entity\Booking\Event;
- use App\Repository\Booking\EventRepository;
- use App\Service\ApiResourceBuilder\Freemium\EventMappingBuilder;
- use App\State\Processor\EntityProcessor;
- use Doctrine\ORM\EntityManagerInterface;
- /**
- * Classe FreemiumEventProcessor qui est un custom dataPersister gérant la resource FreemiumEvent.
- */
- class FreemiumEventProcessor extends EntityProcessor
- {
- public function __construct(
- private EntityManagerInterface $entityManager,
- private EventMappingBuilder $eventMappingBuilder,
- private EventRepository $eventRepository,
- ) {
- }
- /**
- * @param FreemiumEvent $data
- * @param array<mixed> $uriVariables
- * @param array<mixed> $context
- */
- public function process(mixed $data, Operation $operation, array $uriVariables = [], array $context = []): FreemiumEvent
- {
- if ($operation instanceof Post) {
- $event = new Event();
- } else {
- $event = $this->eventRepository->find($uriVariables['id']);
- }
- if ($operation instanceof Delete) {
- $this->entityManager->remove($event);
- $freemiumEvent = new FreemiumEvent();
- } else {
- $this->eventMappingBuilder->mapInformations($event, $data);
- $this->entityManager->persist($event);
- $freemiumEvent = $data;
- }
- $this->entityManager->flush();
- if ($operation instanceof Post) {
- $freemiumEvent->id = $event->getId();
- }
- return $freemiumEvent;
- }
- }
|