src/Controller/TombolaController.php line 23
<?phpnamespace App\Controller;use App\Entity\CommandeTicket;use App\Entity\Reservation;use App\Entity\Tombola;use App\Entity\User;use App\Form\CommandeTicketType;use App\Net15\PaiementBundle\Entity\ModePaiement;use App\Repository\CommandeTicketRepository;use App\Repository\EditionRepository;use App\Repository\TicketRepository;use App\Repository\TombolaRepository;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\RedirectResponse;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;class TombolaController extends AbstractController{#[Route('/tombola/{tombola}', name: 'app_tombola_front_commande')]public function app_tombola_front_commande(Tombola $tombola,Request $request,CommandeTicketRepository $commandeRepo,TombolaRepository $tombolaRepo): Response{$user = $this->getUser();if (!$user instanceof User) {return $this->redirectToRoute('login');}$commande = new CommandeTicket($tombola, $user);$form = $this->createForm(CommandeTicketType::class, $commande, ['tailles_disponibles' => $tombola->getTaillesDisponibles(),]);$form->handleRequest($request);// helper de rendu (évite les duplications)$renderForm = fn () => $this->render('tombola/commande.html.twig', ['tombola' => $tombola,'ventesOuvertes' => $tombola->isVenteOuverte(),'form' => $form->createView(),]);if ($form->isSubmitted() && $form->isValid()) {// ventes ferméesif (!$tombola->isVenteOuverte()) {$this->addFlash('error','Désolé, la période de vente des tickets pour cette tombola est terminée.');return $renderForm();}$quantiteDemandee = count($commande->getTickets());$ticketsRestants = $tombola->getTicketRestant();// stock insuffisantif ($quantiteDemandee > $ticketsRestants) {$message = $ticketsRestants === 0? 'Désolé, tous les tickets pour cette tombola ont été vendus.': sprintf('Vous avez demandé %d ticket(s), mais il n\'en reste que %d disponible(s).',$quantiteDemandee,$ticketsRestants);$this->addFlash('error', $message);return $renderForm();}// commande valide$commande->setQuantite($quantiteDemandee)->setPrix($tombola->getPrix())->setModePaiement(ModePaiement::PAYBOX)->setStatus(CommandeTicket::STATUT_EN_ATTENTE_PAIEMENT);$commandeRepo->save($commande);$tombola->venteTicket($quantiteDemandee);$tombolaRepo->save($tombola);$this->addFlash('success', 'Votre commande a bien été enregistrée !');$recapitulatif = ['type' => 'tombola','id' => $commande->getId(),'name' => $quantiteDemandee . ' ticket(s) de tombola','price' => $commande->getTotalPrice(),'email' => $commande->getUser()->getEmail(),];return $this->redirectToRoute('paiement_payer', ['parent_entity_class' => null,'parent_entity_id' => null,'entity_class' => CommandeTicket::class,'entity_id' => $commande->getUlid(),'libelle' => 'Motards du viaduc - Tombola ' . $tombola->getTitre(),'montant' => $commande->getTotalPrice(),'recapitulatif' => $recapitulatif,'payement_method' => ModePaiement::PAYBOX,'back_path' => 'app_tombola_front_tickets','prenom' => $user->getFirstname(),'nom' => $user->getLastname(),'adresse1' => $user->getAddress(),'adresse2' => $user->getAddressComplement(),'zipcode' => $user->getZipCode(),'city' => $user->getCity(),'country' => $user->getPays()->getId(),], Response::HTTP_SEE_OTHER);}return $renderForm();}#[Route('/tombola-mes-tickets', name: 'app_tombola_front_tickets')]public function app_tombola_front_tickets(EditionRepository $editionRepository,TombolaRepository $tombolaRepository,CommandeTicketRepository $commandeTicketRepository): RedirectResponse|Response{$user = $this->getUser();if(!$user instanceof User){return $this->redirectToRoute('login');}$edition = $editionRepository->getEditionEnCours();// dd($edition);$tombola = $tombolaRepository->findOneBy(['edition'=>$edition]);// dump($tombola);$commandes = $commandeTicketRepository->findBy(['user'=>$user,'tombola' => $tombola]);return $this->render('tombola/mes_tickets.html.twig', ['tombola' => $tombola,'commandes' => $commandes,]);}}