src/Controller/FrontController.php line 36
<?php
namespace App\Controller;
//use App\Entity\Booking;
//use App\Repository\BookingRepository;
use App\Entity\Contact;
use App\Form\ContactType;
use App\Repository\ContactRepository;
use App\Entity\LocalEvent;
use App\Form\LocalEventType;
use App\Repository\LocalEventRepository;
use App\Entity\Newsletter;
use App\Form\NewsletterType;
use App\Repository\NewsletterRepository;
//use App\Entity\Space;
//use App\Form\SpaceType;
//use App\Repository\SpaceRepository;
use App\Entity\User;
use App\Form\RegistrationFormType;
use DateTimeImmutable;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
//use Symfony\Component\Form\Extension\Core\Type\DateTimeType;
//use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Contracts\Translation\TranslatorInterface;
class FrontController extends AbstractController
{
#[Route('/', name: 'homepage', methods: ['GET', 'POST'])]
public function homepage(Request $request, NewsletterRepository $newsletterRepository): Response
{
$newsletter = new Newsletter();
$form = $this->createForm(NewsletterType::class, $newsletter);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$email = $newsletter->getEmail();
$existingNewsletter = $newsletterRepository->findOneBy(['email' => $email]);
if ($existingNewsletter !== null) {
$this->addFlash('warning', 'Cette adresse e-mail est déjà abonnée à la newsletter.');
return $this->redirectToRoute('homepage');
}
$newsletter->setCreatedAt(new \DateTimeImmutable());
$newsletterRepository->save($newsletter, true);
$this->addFlash('success', 'Vous êtes maintenant abonné à la newsletter !');
return $this->redirectToRoute('homepage');
}
return $this->renderForm('front/homepage.html.twig', [
'newsletter' => $newsletter,
'form' => $form,
'page_title' => 'Tiers lieu culturel à Perpignan',
'page_description' => 'description',
]);
}
#[Route('/coworking-a-perpignan', name: 'coworking')]
public function coworking(): Response
{
return $this->render('front/coworking.html.twig', [
'page_title' => 'Coworking à Perpignan',
'page_description' => 'description du coworking à perpignan',
]);
}
#[Route('/evenement-passe', name: 'local_event_past_index', methods: ['GET'])]
public function local_event_past_index(LocalEventRepository $localEventRepository): Response
{
return $this->render('front/local_event_index.html.twig', [
'local_events' => $localEventRepository->findAllPast(),
'page_title' => 'événements passés',
]);
}
#[Route('/evenement-a-venir', name: 'local_event', methods: ['GET'])]
public function local_event(LocalEventRepository $localEventRepository): Response
{
return $this->render('front/local_event_index.html.twig', [
'local_events' => $localEventRepository->findAllFuture(),
'page_title' => 'événements à venir',
]);
}
#[Route('/evenement/{slug}', name: 'local_event_show', methods: ['GET'])]
public function local_event_show(LocalEvent $localEvent): Response
{
return $this->render('front/local_event_show.html.twig', [
'local_event' => $localEvent,
'page_title' => 'événement local',
]);
}
#[Route('/nous-contacter', name: 'contact', methods: ['GET', 'POST'])]
public function contact(Request $request, ContactRepository $contactRepository): Response
{
$contact = new Contact();
$form = $this->createForm(ContactType::class, $contact);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$contact->setCreatedAt(new \DateTimeImmutable());
$contactRepository->save($contact, true);
return $this->redirectToRoute('homepage', [], Response::HTTP_SEE_OTHER);
}
return $this->renderForm('front/contact.html.twig', [
'contact' => $contact,
'form' => $form,
'page_title' => 'nous contacter',
'page_description' => 'description coworking perpignan',
]);
}
#[Route('/inscription', name: 'inscription')]
public function inscription(Request $request, UserPasswordHasherInterface $userPasswordHasher, EntityManagerInterface $entityManager): Response
{
$user = new User();
$form = $this->createForm(RegistrationFormType::class, $user);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
// encode the plain password
$user->setPassword(
$userPasswordHasher->hashPassword(
$user,
$form->get('plainPassword')->getData()
)
);
$user->setCreatedAt(new \DateTimeImmutable());
$entityManager->persist($user);
$entityManager->flush();
// do anything else you need here, like send an email
return $this->redirectToRoute('connexion');
}
return $this->render('front/inscription.html.twig', [
'registrationForm' => $form->createView(),
'page_title' => 'Rejoignez la communauté',
'page_description' => 'description',
]);
}
#[Route(path: '/connexion', name: 'connexion')]
public function connexion(AuthenticationUtils $authenticationUtils): Response
{
// if ($this->getUser()) {
// return $this->redirectToRoute('target_path');
// }
// get the login error if there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('front/connexion.html.twig', [
'last_username' => $lastUsername, 'error' => $error,
'page_title' => 'Connexion',
'page_description' => 'saisir une description de 150 caractères maximum. cette description doit comporter les mots clés principaux',
]);
}
#[Route(path: '/deconnexion', name: 'deconnexion')]
public function deconnexion(): void
{
throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
}
}