src/EventSubscriber/PayementSubscriber.php line 64

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\Entity\Payment;
  5. use App\Entity\Reservation;
  6. use App\Repository\ReservationRepository;
  7. use App\Service\ReservationService;
  8. use App\Service\Utils;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use JetBrains\PhpStorm\ArrayShape;
  11. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpKernel\Event\ViewEvent;
  14. use Symfony\Component\HttpKernel\KernelEvents;
  15. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  16. class PayementSubscriber implements EventSubscriberInterface
  17. {
  18.     public function __construct(
  19.         private UserPasswordHasherInterface $encoder,
  20.         private ReservationRepository $reservationRepository,
  21.         private EntityManagerInterface $em
  22.     ) {
  23.     }
  24.     #[
  25.         ArrayShape([KernelEvents::VIEW => "array"])
  26.     ]
  27.     public static function getSubscribedEvents(): array
  28.     {
  29.         return [
  30.             KernelEvents::VIEW => [
  31.                 ['prePersistePayement'EventPriorities::PRE_WRITE],
  32.                 ['postPersistePayement'EventPriorities::POST_WRITE]
  33.                 ]
  34.         ];
  35.     }
  36.     public function prePersistePayement(ViewEvent $event): void
  37.     {
  38.         $payement $event->getControllerResult();
  39.         $method $event->getRequest()->getMethod();
  40.         if (!$payement instanceof Payment || Request::METHOD_POST !== $method) {
  41.             return;
  42.         }
  43.         if ($payement->getModePayment() !==null && $payement->getModePayment()->getLabel() === "Espèce") {
  44.             $payement->setStatut('succes');
  45.         }
  46.         if ($payement->getReservation() !==null) {
  47.             $reservation $payement->getReservation();
  48.             $montant $reservation->getPrice()->getMontant() ?? 0;
  49.             $montant $reservation->getQuantityTime() * $montant;
  50.             $reservation->setIsSold(ReservationService::isSold($montant$reservation->getPayements()->toArray()));
  51.             $this->em->persist($reservation);
  52.             $this->em->flush();
  53.         }
  54.     }
  55.     public function postPersistePayement(ViewEvent $event): void
  56.     {
  57.         $payement $event->getControllerResult();
  58.         $method $event->getRequest()->getMethod();
  59.         if (!$payement instanceof Payment || Request::METHOD_POST !== $method) {
  60.             return;
  61.         }
  62.         // if ($payement->getReservation() !==null) {
  63.         //     $reservation = $payement->getReservation();
  64.         //     $montant = $reservation->getPrice()->getMontant() ?? 0;
  65.         //     $montant = $reservation->getQuantityTime() * $montant;
  66.         //     $reservation->setIsSold(ReservationService::isSold($montant, $reservation->getPayements()->toArray()));
  67.         //     $this->em->persist($reservation);
  68.         //     $this->em->flush();
  69.         // }
  70.     }
  71. }