src/Controller/HomeController.php line 65

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Agent;
  4. use App\Entity\MessageClient;
  5. use App\Entity\User;
  6. use App\Form\InscriptionAgentType;
  7. use App\Form\MessageClientFormType;
  8. use App\Form\ProspectFormType;
  9. use App\Repository\BlogRepository;
  10. use App\Repository\CategorieRepository;
  11. use App\Repository\ConferenceRepository;
  12. use App\Repository\EvenementRepository;
  13. use App\Repository\PackageRepository;
  14. use App\Repository\UserRepository;
  15. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  16. use Symfony\Component\HttpFoundation\Response;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\Routing\Annotation\Route;
  19. use App\Service\MailService;
  20. use App\Service\OrderService;
  21. use App\Service\ProspectService;
  22. use App\Service\SecurityService;
  23. use DateTime;
  24. use Doctrine\ORM\EntityManagerInterface;
  25. use Exception;
  26. use Symfony\Component\HttpClient\Exception\ServerException;
  27. use Symfony\Contracts\Translation\TranslatorInterface;
  28. class HomeController extends AbstractController
  29. {
  30.     private $mailService;
  31.     private $entityManager;
  32.     private $messageClientRepository;
  33.     private $userRepository;
  34.     private $repoPackage;
  35.     private $repoBlog;
  36.     private $securityService;
  37.     public function __construct(
  38.         MailService $mailService
  39.         EntityManagerInterface $entityManager
  40.         UserRepository $userRepository
  41.         PackageRepository $repoPackage,
  42.         BlogRepository $repoBlog,
  43.         SecurityService $securityService,
  44.         private OrderService $orderService,
  45.         private TranslatorInterface $translator,
  46.         private EvenementRepository $evenementRepository,
  47.         private ProspectService $prospectService,
  48.         private ConferenceRepository $conferenceRepository,
  49.     ){
  50.         $this->mailService $mailService;
  51.         $this->entityManager $entityManager;
  52.         $this->userRepository $userRepository;
  53.         $this->repoPackage $repoPackage;
  54.         $this->repoBlog $repoBlog;
  55.         $this->securityService $securityService;
  56.     }
  57.     #[Route('/'name'app_home')]
  58.     public function index(Request $requestCategorieRepository $categorieRepository): Response
  59.     {
  60.         $packages $this->repoPackage->findAll();
  61.         $blogs $this->repoBlog->findBy([], ['datePublication' => 'DESC'], 3);
  62.         $events $this->evenementRepository->findUpcomingEvent();
  63.         $form $this->createForm(ProspectFormType::class,[]);
  64.         $form->handleRequest($request);
  65.         if ($form->isSubmitted() && $form->isValid()) {
  66.             try{
  67.                 $content $this->prospectService->saveProspectToMether($form->getData());
  68.                 $this->addFlash($content['class'],  $content['message']);
  69.                return $this->redirectToRoute('app_home');;
  70.                 // $targetUrl = $route->getTargetUrl();
  71.                 // return $this->redirect($targetUrl.'#message-area');
  72.             } catch(\Exception $ex){
  73.                 // $error = $ex->getMessage();
  74.                 $this->addFlash('danger',  $ex->getMessage());
  75.             }
  76.         }
  77.          // Exemple de datetime à afficher
  78.         $upComingConference $this->conferenceRepository->getUpComingConference();
  79.         if($upComingConference){
  80.             $datetime $upComingConference->getDateConference();
  81.         }else{
  82.             $datetime = (new \DateTime())->modify('-1 hour');
  83.         }
  84.         return $this->render('home/home.html.twig', [
  85.             'packages' => $packages,
  86.             'blogs' => $blogs,
  87.             'calendly_link' => $_ENV["CALENDLY_LINK"],
  88.             'events' => $events,
  89.             'form' => $form->createView(),
  90.             'prospection' => $_ENV['SHOW_PROSPECTION'],
  91.             'datetime'=>$datetime
  92.         ]);
  93.     }
  94.     // #[Route('/about-us', name: 'app_about_us')]
  95.     // public function about_us(Request $request): Response
  96.     // {
  97.         
  98.     //     return $this->render('about_us/about_us.html.twig', [
  99.     //         'controller_name' => 'about_usController'
  100.     //     ]);
  101.     // }
  102.     // #[Route('/checkout', name: 'app_checkout')]
  103.     // public function checkout(Request $request, MailService $mailService): Response
  104.     // {
  105.     //     $user = new Agent();
  106.     //     $form = $this->createForm(InscriptionAgentType::class, $user);
  107.     //     $form->handleRequest($request);
  108.     //     if($form->isSubmitted() && $form->isValid()) {
  109.     //         try{
  110.     //             $plainFirstPassword = $request->request->get('inscription_agent')['password']['first'];
  111.     //             $correctPassword = $this->securityService->setPassword($user, $plainFirstPassword, $request->request->get('inscription_agent')['password']['second'], true);
  112.     //             if(!$correctPassword) throw new \Exception("Password mismatch");
  113.     //             $res = $this->orderService->insertAgent($user, $plainFirstPassword);
  114.     //             return $this->redirectToRoute('app_checkout_success');
  115.     //         }
  116.     //         catch(ServerException $ex){
  117.     //             $data = json_decode($ex->getResponse()->getContent(false), true);
  118.     //             // dd($data);
  119.     //             throw new Exception($data["message"] ?? "Erreur du serveur");
  120.     //         }
  121.     //         catch(Exception $ex){
  122.     //             throw $ex;
  123.     //         }  
  124.     //     }
  125.     //     return $this->render('checkout/checkout.html.twig', [
  126.     //         'form' => $form->createView()
  127.     //     ]);
  128.     // }
  129.     // #[Route('/checkout-success', name: 'app_checkout_success')]
  130.     // public function checkoutSuccess(Request $request, MailService $mailService): Response
  131.     // {
  132.         
  133.     //     return $this->render('checkout/checkout-success.html.twig', [
  134.     //         'controller_name' => 'checkoutController'
  135.     //     ]);
  136.     // }
  137.     // #[Route('/portfolio', name: 'app_portfolio')]
  138.     // public function portfolio(Request $request): Response
  139.     // {
  140.         
  141.     //     return $this->render('portfolio/portfolio.html.twig', [
  142.     //         'title' => 'Projets',
  143.     //         'img_banner' => 'assets/images/webp/home/banner/portfolio-banner.webp'
  144.     //     ]);
  145.     // }
  146.     #[Route('/legale-notice'name'app_legale_notice')]
  147.     public function app_legale_notice(Request $request): Response
  148.     {
  149.         
  150.         return $this->render('/home/legale-notice.html.twig', [
  151.             'title' => $this->translator->trans('Mentions légales')
  152.         ]);
  153.     }
  154.     
  155.     #[Route('/terms-and-conditions'name'app_terms_and_conditions')]
  156.     public function app_terms_and_conditions(Request $request): Response
  157.     {
  158.         return $this->render('/home/terms-and-conditions.html.twig', [
  159.             'title' => $this->translator->trans('Conditions générales de vente')
  160.         ]);
  161.     }
  162.     
  163.     #[Route('/contact'name'app_contact')]
  164.     public function contact(Request $requestMailService $mailService): Response
  165.     {
  166.         $messageClient = new MessageClient();
  167.         $form $this->createForm(MessageClientFormType::class, $messageClient);
  168.         $form->handleRequest($request);
  169.         $error "";
  170.         
  171.         if ($form->isSubmitted() && $form->isValid()) {
  172.             // try{
  173.                 $messageClient $form->getData();
  174.                 $mail = [
  175.                     'to' => $this->getParameter('contact_recipient_mail'),
  176.                     'subject' => "Nouveau contact de ".$messageClient->getFullName() ,
  177.                     'body' => $mailService->renderTwig('emails/contact.html.twig', ['contact' => $messageClient])
  178.                 ];
  179.                 $mailService->sendMail($mail);
  180.                 $messageClient->setCreatedAt(new \DateTime());
  181.                 $this->entityManager->persist($messageClient);
  182.                 $this->entityManager->flush();
  183.                 $this->addFlash('success''Message envoyé');   
  184.                 return $this->redirectToRoute('app_contact');
  185.               
  186.             // } catch(\Exception $ex){
  187.             //     $this->addFlash('danger', $ex->getMessage());
  188.             // }
  189.         }
  190.         return $this->render('contact/contact.html.twig', [
  191.             'form' => $form->createView(),
  192.             'contact' => $messageClient,
  193.             'error'=>$error
  194.         ]);
  195.     }
  196.     
  197. }