src/Controller/TombolaController.php line 20

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\CommandeTicket;
  4. use App\Entity\Reservation;
  5. use App\Entity\Tombola;
  6. use App\Entity\User;
  7. use App\Form\CommandeTicketType;
  8. use App\Net15\PaiementBundle\Entity\ModePaiement;
  9. use App\Repository\CommandeTicketRepository;
  10. use App\Repository\TombolaRepository;
  11. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. class TombolaController extends AbstractController
  16. {
  17.     #[Route('/tombola/{tombola}'name'app_tombola_front_commande')]
  18.     public function app_tombola_front_commande(
  19.         Tombola $tombola,
  20.         Request $request,
  21.         CommandeTicketRepository $repository,
  22.         TombolaRepository $tombolaRepository
  23.     ): Response
  24.     {
  25.         $user $this->getUser();
  26.         if(!$user instanceof User){
  27.             return $this->redirectToRoute('login');
  28.         }
  29.         // Nouvelle commande liée à cette tombola
  30.         $commande = new CommandeTicket($tombola$user);
  31.         // Création du formulaire
  32.         $form $this->createForm(CommandeTicketType::class, $commande);
  33.         $form->handleRequest($request);
  34.         // Si le formulaire est soumis et valide
  35.         if ($form->isSubmitted() && $form->isValid()) {
  36.             // Mise à jour des compteurs de tickets
  37.             $commande->setQuantite(count($commande->getTickets()));
  38.             $commande->setPrix($tombola->getPrix());
  39.             $commande->setModePaiement(ModePaiement::PAYBOX);
  40.             $commande->setStatus(CommandeTicket::STATUT_EN_ATTENTE_PAIEMENT);
  41.             $repository->save($commande);
  42.             $tombola->venteTicket($commande->getQuantite());
  43.             $tombolaRepository->save($tombola);
  44.             $this->addFlash('success''Votre commande a bien été enregistrée !');
  45.            $recapitulatif = [
  46.                 'type'              => 'tombola',
  47.                 'id'                => $commande->getId(),
  48.                 'name'              => $commande->getQuantite()." ticket(s) de tombola",
  49.                 'price'             => $commande->getTotalPrice(),
  50.                 'email'             => $commande->getUser()->getEmail(),
  51.             ];
  52.             return $this->redirectToRoute('paiement_payer', [
  53.                 'parent_entity_class' => null,
  54.                 'parent_entity_id'    => null,
  55.                 'entity_class'        => CommandeTicket::class,
  56.                 'entity_id'           => $commande->getId()->toRfc4122(),
  57.                 'libelle'             => 'Motards du viaduc - Tombola '.$tombola->getTitre(),
  58.                 'montant'             => $commande->getTotalPrice(),
  59.                 'recapitulatif'       => $recapitulatif,
  60.                 'payement_method'     => ModePaiement::PAYBOX,
  61.                 'back_path'           => 'app_reservation_index',
  62.                 'prenom'              => $commande->getUser()->getFirstname(),
  63.                 'nom'                 => $commande->getUser()->getLastname(),
  64.                 'adresse1'            => $commande->getUser()->getAddress(),
  65.                 'adresse2'            => $commande->getUser()->getAddressComplement(),
  66.                 'zipcode'             => $commande->getUser()->getZipCode(),
  67.                 'city'                => $commande->getUser()->getCity(),
  68.                 'country'             => $commande->getUser()->getPays()->getId(),
  69.             ], Response::HTTP_SEE_OTHER);
  70.         }
  71.         return $this->render('tombola/commande.html.twig', [
  72.             'tombola' => $tombola,
  73.             'form'    => $form->createView(),
  74.         ]);
  75.     }
  76. }