src/Controller/FrontController.php line 36

  1. <?php
  2. namespace App\Controller;
  3. //use App\Entity\Booking;
  4. //use App\Repository\BookingRepository;
  5. use App\Entity\Contact;
  6. use App\Form\ContactType;
  7. use App\Repository\ContactRepository;
  8. use App\Entity\LocalEvent;
  9. use App\Form\LocalEventType;
  10. use App\Repository\LocalEventRepository;
  11. use App\Entity\Newsletter;
  12. use App\Form\NewsletterType;
  13. use App\Repository\NewsletterRepository;
  14. //use App\Entity\Space;
  15. //use App\Form\SpaceType;
  16. //use App\Repository\SpaceRepository;
  17. use App\Entity\User;
  18. use App\Form\RegistrationFormType;
  19. use DateTimeImmutable;
  20. use Doctrine\ORM\EntityManagerInterface;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. //use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
  23. //use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  24. use Symfony\Component\HttpFoundation\Request;
  25. use Symfony\Component\HttpFoundation\Response;
  26. use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
  27. use Symfony\Component\Routing\Annotation\Route;
  28. use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
  29. use Symfony\Contracts\Translation\TranslatorInterface;
  30. class FrontController extends AbstractController
  31. {
  32.     #[Route('/'name'homepage'methods: ['GET''POST'])]
  33.     public function homepage(Request $requestNewsletterRepository $newsletterRepository): Response
  34.     {
  35.         $newsletter = new Newsletter();
  36.         $form $this->createForm(NewsletterType::class, $newsletter);
  37.         $form->handleRequest($request);
  38.         if ($form->isSubmitted() && $form->isValid()) {
  39.             $email $newsletter->getEmail();
  40.             $existingNewsletter $newsletterRepository->findOneBy(['email' => $email]);
  41.             if ($existingNewsletter !== null) {
  42.                 $this->addFlash('warning''Cette adresse e-mail est déjà abonnée à la newsletter.');
  43.                 return $this->redirectToRoute('homepage');
  44.             }
  45.             $newsletter->setCreatedAt(new \DateTimeImmutable());
  46.             $newsletterRepository->save($newslettertrue);
  47.             $this->addFlash('success''Vous êtes maintenant abonné à la newsletter !');
  48.             return $this->redirectToRoute('homepage');
  49.         }
  50.         return $this->renderForm('front/homepage.html.twig', [
  51.             'newsletter' => $newsletter,
  52.             'form' => $form,
  53.             'page_title' => 'Tiers lieu culturel à Perpignan',
  54.             'page_description' => 'description',
  55.         ]);
  56.     }
  57.     #[Route('/coworking-a-perpignan'name'coworking')]
  58.     public function coworking(): Response
  59.     {
  60.         return $this->render('front/coworking.html.twig', [
  61.             'page_title' => 'Coworking à Perpignan',
  62.             'page_description' => 'description du coworking à perpignan',
  63.         ]);
  64.     }
  65.     #[Route('/evenement-passe'name'local_event_past_index'methods: ['GET'])]
  66.     public function local_event_past_index(LocalEventRepository $localEventRepository): Response
  67.     {
  68.         return $this->render('front/local_event_index.html.twig', [
  69.             'local_events' => $localEventRepository->findAllPast(),
  70.             'page_title' => 'événements passés',
  71.         ]);
  72.     }
  73.     #[Route('/evenement-a-venir'name'local_event'methods: ['GET'])]
  74.     public function local_event(LocalEventRepository $localEventRepository): Response
  75.     {
  76.         return $this->render('front/local_event_index.html.twig', [
  77.             'local_events' => $localEventRepository->findAllFuture(),
  78.             'page_title' => 'événements à venir',
  79.         ]);
  80.     }
  81.     #[Route('/evenement/{slug}'name'local_event_show'methods: ['GET'])]
  82.     public function local_event_show(LocalEvent $localEvent): Response
  83.     {
  84.         return $this->render('front/local_event_show.html.twig', [
  85.             'local_event' => $localEvent,
  86.             'page_title' => 'événement local',
  87.         ]);
  88.     }
  89.     #[Route('/nous-contacter'name'contact'methods: ['GET''POST'])]
  90.     public function contact(Request $requestContactRepository $contactRepository): Response
  91.     {
  92.         $contact = new Contact();
  93.         $form $this->createForm(ContactType::class, $contact);
  94.         $form->handleRequest($request);
  95.         if ($form->isSubmitted() && $form->isValid()) {
  96.             $contact->setCreatedAt(new \DateTimeImmutable());
  97.             $contactRepository->save($contacttrue);
  98.             return $this->redirectToRoute('homepage', [], Response::HTTP_SEE_OTHER);
  99.         }
  100.         return $this->renderForm('front/contact.html.twig', [
  101.             'contact' => $contact,
  102.             'form' => $form,
  103.             'page_title' => 'nous contacter',
  104.             'page_description' => 'description coworking perpignan',
  105.         ]);
  106.     }
  107.     #[Route('/inscription'name'inscription')]
  108.     public function inscription(Request $requestUserPasswordHasherInterface $userPasswordHasherEntityManagerInterface $entityManager): Response
  109.     {
  110.         $user = new User();
  111.         $form $this->createForm(RegistrationFormType::class, $user);
  112.         $form->handleRequest($request);
  113.         if ($form->isSubmitted() && $form->isValid()) {
  114.             // encode the plain password
  115.             $user->setPassword(
  116.                 $userPasswordHasher->hashPassword(
  117.                     $user,
  118.                     $form->get('plainPassword')->getData()
  119.                 )
  120.             );
  121.             $user->setCreatedAt(new \DateTimeImmutable());
  122.             $entityManager->persist($user);
  123.             $entityManager->flush();
  124.             // do anything else you need here, like send an email
  125.             return $this->redirectToRoute('connexion');
  126.         }
  127.         return $this->render('front/inscription.html.twig', [
  128.             'registrationForm' => $form->createView(),
  129.             'page_title' => 'Rejoignez la communauté',
  130.             'page_description' => 'description',
  131.         ]);
  132.     }
  133.     #[Route(path'/connexion'name'connexion')]
  134.     public function connexion(AuthenticationUtils $authenticationUtils): Response
  135.     {
  136.         // if ($this->getUser()) {
  137.         //     return $this->redirectToRoute('target_path');
  138.         // }
  139.         // get the login error if there is one
  140.         $error $authenticationUtils->getLastAuthenticationError();
  141.         // last username entered by the user
  142.         $lastUsername $authenticationUtils->getLastUsername();
  143.         return $this->render('front/connexion.html.twig', [
  144.             'last_username' => $lastUsername'error' => $error,
  145.             'page_title' => 'Connexion',
  146.             'page_description' => 'saisir une description de 150 caractères maximum. cette description doit comporter les mots clés principaux',
  147.         ]);
  148.     }
  149.     #[Route(path'/deconnexion'name'deconnexion')]
  150.     public function deconnexion(): void
  151.     {
  152.         throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
  153.     }
  154. }