src/EventSubscriber/ReservationSubscriber.php line 60

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use ApiPlatform\Core\EventListener\EventPriorities;
  4. use App\Entity\PitchDisponibility;
  5. use App\Entity\Reservation;
  6. use App\Repository\ReservationRepository;
  7. use App\Service\CinetPayService;
  8. use App\Service\ReservationService;
  9. use App\Service\Sender;
  10. use App\Service\Utils;
  11. use JetBrains\PhpStorm\ArrayShape;
  12. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  13. use Symfony\Component\HttpFoundation\Request;
  14. use Symfony\Component\HttpKernel\Event\ViewEvent;
  15. use Symfony\Component\HttpKernel\KernelEvents;
  16. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  17. class ReservationSubscriber implements EventSubscriberInterface
  18. {
  19.     public function __construct(
  20.         private UserPasswordHasherInterface $encoder,
  21.         private ReservationRepository $reservationRepository,
  22.         private Sender $sender,
  23.         private CinetPayService $cinetPayService
  24.     ) {
  25.     }
  26.     #[
  27.         ArrayShape([KernelEvents::VIEW => "array"])
  28.     ]
  29.     public static function getSubscribedEvents(): array
  30.     {
  31.         return [
  32.             KernelEvents::VIEW => [
  33.                 ['prePersiste'EventPriorities::PRE_WRITE],
  34.                 ['postPersiste'EventPriorities::POST_WRITE]
  35.             ],
  36.         ];
  37.     }
  38.     public function prePersiste(ViewEvent $event): void
  39.     {
  40.         $reservation $event->getControllerResult();
  41.         $method $event->getRequest()->getMethod();
  42.         if (!$reservation instanceof Reservation || Request::METHOD_POST !== $method) {
  43.             return;
  44.         }
  45.         if ($reservation->getPayements()->last()->getModePayment()->getLabel() === "Espèce") {
  46.             $reservation->getPayements()->last()->setStatut('succes');
  47.         }
  48.         $montant $reservation->getQuantityTime()*$reservation->getPrice()->getMontant();
  49.         $reservation->setIsSold(ReservationService::isSold($montant$reservation->getPayements()->toArray()));
  50.     }
  51.     public function postPersiste(ViewEvent $event): void
  52.     {
  53.         $reservation $event->getControllerResult();
  54.         $method $event->getRequest()->getMethod();
  55.         if (!$reservation instanceof Reservation || Request::METHOD_POST !== $method) {
  56.             return;
  57.         }
  58.         if ($reservation->getPayements()->last()->getModePayment() !== null) {
  59.             if ($reservation->getPayements()->last()->getModePayment()->getLabel() !== "Espèce") {
  60.                 $host $event->getRequest()->headers->get('host');
  61.                 $urlNotitfiction "https://".$host."/payments/notification";
  62.                 //$urlReturn = "https://".$host."/payments/return_url";
  63.                 $reservation->urlPayement $this->cinetPayService->initPayement($reservation->getPayements()->last(), $urlNotitfictionnull);
  64.             }
  65.         }
  66.         if ($event->getRequest()->query->has('mobile')) {
  67.             $host $event->getRequest()->headers->get('host');
  68.             $urlNotitfiction "https://".$host."/payments/notification";
  69.             //$urlReturn = "https://".$host."/payments/return_url";
  70.             $reservation->urlPayement $this->cinetPayService->initPayement($reservation->getPayements()->last(), $urlNotitfictionnull);
  71.         }
  72.         if ($reservation->getPayements()->last()->getModePayment() !== null) {
  73.             if ($reservation->getPayements()->last()->getModePayment()->getLabel() === "Espèce") {
  74.                 $this->sender->sendSms(
  75.                     $reservation->getCustomer()->getPhone(),
  76.                     sprintf(
  77.                         "Nous avons le plaisir de vous confirmer votre réservation du %s à partir de %s .
  78.         Merci de choisir le Temple du foot. ",
  79.                         $reservation->getDate()->format('d-m-Y'),
  80.                         $reservation->getPitchDisponibilities()->toArray()[0]->getHoure()->getHoureStart()->format('H:i')
  81.                     )
  82.                 );
  83.             }
  84.         }
  85.     }
  86. }