src/Controller/FormulaireMontageController.php line 83

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\DemandeFormType;
  4. use App\Form\OffreFormType;
  5. use App\Entity\DemandeDeTravail;
  6. use App\Entity\OffreDeTravail;
  7. use App\Repository\StatusOffreRepository;
  8. use DateTimeImmutable;
  9. use Doctrine\ORM\EntityManagerInterface;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. class FormulaireMontageController extends AbstractController
  15. {
  16.     #[Route('/formulaire-offre-de-montage'name'app_form_offre_montage')]
  17.     public function offreMontage(
  18.         Request $request,
  19.         EntityManagerInterface $entityManager,
  20.         StatusOffreRepository $statusOffreRepository,
  21.         \MercurySeries\FlashyBundle\FlashyNotifier $flashy
  22.     ): Response {
  23.         $connectedUser $this->getUser();
  24.         //On crée le formulaire
  25.         $offreMontageForm $this->createForm(OffreFormType::class);
  26.         //On traite la requête du formulaire
  27.         $offreMontageForm->handleRequest($request);
  28.         //On vérifie si le formulaire est soumis ET valide
  29.         if($offreMontageForm->isSubmitted() && $offreMontageForm->isValid()){
  30.             //Récupérer les réponses du formulaire
  31.             $reponsesData $offreMontageForm->getData();
  32.             $titre $reponsesData['titre'];
  33.             $description $reponsesData['description'];
  34.             $localisation $reponsesData['localisation'];
  35.             $remuneration $reponsesData['remuneration'];
  36.             $dateDebutMontage $reponsesData['dateDebutMontage'];
  37.             $dateFinMontage $reponsesData['dateFinMontage'];
  38.             //Paramétrer le status de l'offre à "Libre" par défaut
  39.             $statusLibre $statusOffreRepository->find(1);
  40.             $offerMontageEntity = new OffreDeTravail();
  41.             $offerMontageEntity->setUserId($connectedUser);
  42.             $offerMontageEntity->settitre($titre);
  43.             $offerMontageEntity->setDescription($description);
  44.             $offerMontageEntity->setStatus($statusLibre);
  45.             $offerMontageEntity->setLocalisation($localisation);
  46.             $offerMontageEntity->setRemuneration($remuneration);
  47.             $offerMontageEntity->setDateDebutMontage($dateDebutMontage);
  48.             $offerMontageEntity->setDateFinMontage($dateFinMontage);
  49.             // slug
  50.             $offerMontageEntity->setSlug($this->slugify($titre));
  51.              //envoie a l'entité
  52.              $entityManager->persist($offerMontageEntity);
  53.              $entityManager->flush();
  54.  
  55.              $flashy->success('Ton offre de montage a été validé avec succès ! 🚀');
  56.  
  57.              //On redirige
  58.              return $this->redirectToRoute('app_liste_offre_montage');
  59.         }
  60.         
  61.         return $this->render('formulaire_montage/offre.html.twig', [
  62.             'controller_name' => 'ListeMontageController',
  63.             'offreMontageForm' => $offreMontageForm->createView(),
  64.             'user' => $connectedUser,
  65.         ]);
  66.     }
  67.     #[Route('/formulaire-demande-de-montage'name'app_form_demande_montage')]
  68.     public function demandeMontage(
  69.         Request $request,
  70.         EntityManagerInterface $entityManager,
  71.         \MercurySeries\FlashyBundle\FlashyNotifier $flashy
  72.     ): Response {
  73.         $connectedUser $this->getUser();
  74.         //On crée le formulaire
  75.         $demandeMontageForm $this->createForm(DemandeFormType::class);
  76.         //On traite la requête du formulaire
  77.         $demandeMontageForm->handleRequest($request);
  78.         //On vérifie si le formulaire est soumis ET valide
  79.         if($demandeMontageForm->isSubmitted() && $demandeMontageForm->isValid()){
  80.             //Récupérer les réponses du formulaire
  81.             $reponsesData $demandeMontageForm->getData();
  82.             $titre $reponsesData['titre'];
  83.             $description $reponsesData['description'];
  84.             $disponibilite $reponsesData['disponibilite'];
  85.             $zoneAction $reponsesData['zoneAction'];
  86.             $salaire $reponsesData['salaire'];
  87.             
  88.             $demandeMontageEntity = new DemandeDeTravail();
  89.             $demandeMontageEntity->setUserId($connectedUser);
  90.             $demandeMontageEntity->setTitre($titre);
  91.             $demandeMontageEntity->setDescription($description);
  92.             $demandeMontageEntity->setDisponibilite($disponibilite);
  93.             $demandeMontageEntity->setZoneAction($zoneAction);
  94.             $demandeMontageEntity->setSalaire($salaire);
  95.             $demandeMontageEntity->setCreatedAt(new DateTimeImmutable());
  96.             // slug
  97.             $demandeMontageEntity->setSlug($this->slugify($titre));
  98.             //envoie a l'entité
  99.             $entityManager->persist($demandeMontageEntity);
  100.             $entityManager->flush();
  101.  
  102.             $flashy->success('Ta demande de montage a été validé avec succès ! 🚀');
  103.             //On redirige
  104.             return $this->redirectToRoute('app_liste_demande_montage');
  105.         }
  106.         return $this->render('formulaire_montage/demande.html.twig', [
  107.             'controller_name' => 'ListeMontageController',
  108.             'demandeMontageForm' => $demandeMontageForm->createView(),
  109.             'user' => $connectedUser,
  110.         ]);
  111.     }
  112.     private function slugify(string $text): string
  113.     {
  114.         $text strtolower(trim($text));
  115.         $text preg_replace('~[^\pL\d]+~u''-'$text);
  116.         $text trim($text'-');
  117.         $text iconv('UTF-8''ASCII//TRANSLIT'$text);
  118.         $text preg_replace('~[^-\w]+~'''$text);
  119.         return $text ?: 'annonce';
  120.     }
  121. }