Files
ludikevent_crm/src/Controller/ReserverController.php

151 lines
5.3 KiB
PHP
Raw Normal View History

<?php
namespace App\Controller;
use App\Entity\Account;
use App\Entity\AccountResetPasswordRequest;
use App\Form\RequestPasswordConfirmType;
use App\Form\RequestPasswordRequestType;
use App\Logger\AppLogger;
use App\Repository\ProductRepository;
use App\Service\Mailer\Mailer;
use App\Service\ResetPassword\Event\ResetPasswordConfirmEvent;
use App\Service\ResetPassword\Event\ResetPasswordEvent;
use Doctrine\ORM\EntityManagerInterface;
use Fkrzski\RobotsTxt\RobotsTxt;
use KnpU\OAuth2ClientBundle\Client\ClientRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Attribute\Route;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Symfony\Contracts\HttpClient\HttpClientInterface;
class ReserverController extends AbstractController
{
#[Route('/robots.txt', name: 'robots_txt', defaults: ['_format' => 'txt'])]
public function index(Request $request): Response
{
$robots = new RobotsTxt();
$robots->disallow('/signature');
$robots->disallow('/payment');
$robots->crawlDelay(60);
$robots->allow('/reservation');
$robots->sitemap($request->getSchemeAndHttpHost().$this->generateUrl('PrestaSitemapBundle_index',['_format' => 'xml']));
return new Response($robots->toString(),Response::HTTP_OK,[
'Content-Type' => 'text/plain'
]);
}
#[Route('/reservation', name: 'reservation')]
public function revervation(ProductRepository $productRepository): Response
{
$products =$productRepository->findBy([], ['updatedAt' => 'DESC']);
return $this->render('revervation/home.twig',[
'products' => $products
]);
}
#[Route('/reservation/catalogue', name: 'reservation_catalogue')]
public function revervationCatalogue(ProductRepository $productRepository): Response
{
return $this->render('revervation/catalogue.twig',[
'products' => $productRepository->findAll(),
]);
}
#[Route('/reservation/produit/{id}', name: 'reservation_product_show')]
public function revervationShowProduct(ProductRepository $productRepository): Response
{
}
#[Route('/reservation/contact', name: 'reservation_contact')]
public function revervationContact(Request $request, Mailer $mailer): Response
{
$form = $this->createFormBuilder()
->add('name', TextType::class, [
'label' => 'Nom',
'required' => true,
])
->add('surname', TextType::class, [
'label' => 'Prenom',
'required' => true,
])
->add('email', EmailType::class, [
'label' => 'Email',
'required' => true,
])
->add('phone', TextType::class, [
'label' => 'Telephone',
'required' => true,
])
->add('message', TextareaType::class, [
'label' => 'Message',
'required' => true,
]);
$formObject = $form->getForm();
$formObject->handleRequest($request);
if ($formObject->isSubmitted() && $formObject->isValid()) {
$data = $formObject->getData();
$mailer->send(
'lilian@ludikevent.fr',
"Ludikevent",
"[Ludikevent] - Demande de contact via la plateforme de reservation",
"mails/reserve/contact.twig",
$data
);
// Ajout du message flash de succès
$this->addFlash('success', 'Votre message a bien été envoyé ! Notre équipe vous répondra dans les plus brefs délais.');
return $this->redirectToRoute('reservation_contact');
}
return $this->render('revervation/contact.twig', [
'form' => $formObject->createView()
]);
}
#[Route('/reservation/recherche', name: 'reservation_search')]
public function recherche()
{
}
#[Route('/reservation/mentions-legal', name: 'reservation_mentions-legal')]
public function revervationLegal()
{
return $this->render('revervation/legal.twig');
}
#[Route('/reservation/rgpd', name: 'reservation_rgpd')]
public function revervationRgpd()
{
return $this->render('revervation/rgpd.twig');
}
#[Route('/reservation/cookies', name: 'reservation_cookies')]
public function revervationCookies()
{
return $this->render('revervation/cookies.twig');
}
#[Route('/reservation/cgv', name: 'reservation_cgv')]
public function revervationCgv()
{
return $this->render('revervation/cgv.twig');
}
#[Route('/reservation/hosting', name: 'reservation_hosting')]
public function revervationHosting()
{
return $this->render('revervation/hosting.twig');
}
}