src/Controller/PageController.php line 124

  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactType;
  4. use Symfony\Component\Mime\Email;
  5. use App\Repository\PageRepository;
  6. use App\Repository\VenteRepository;
  7. use Symfony\Component\Mime\Address;
  8. use App\Repository\AvocatRepository;
  9. use App\Repository\CabinetRepository;
  10. use App\Repository\DomaineRepository;
  11. use App\Repository\SettingRepository;
  12. use App\Repository\CategoryRepository;
  13. use App\Repository\HomepageRepository;
  14. use App\Repository\HonoraireRepository;
  15. use Doctrine\ORM\EntityManagerInterface;
  16. use Knp\Component\Pager\PaginatorInterface;
  17. use Symfony\Component\HttpFoundation\Request;
  18. use Symfony\Component\Mailer\MailerInterface;
  19. use Symfony\Component\HttpFoundation\Response;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  22. class PageController extends AbstractController
  23. {
  24.     /* Page Ventes immobilière pour pagination */
  25.     #[Route('/ventes-immobilieres/ventes'name'app_page_vente')]
  26.     public function pagevente(
  27.         SettingRepository $settingRepository,
  28.         HomepageRepository $homepageRepository,
  29.         PageRepository $pageRepository,
  30.         CategoryRepository $categoryRepository,
  31.         VenteRepository $venteRepository,
  32.         Request $request,
  33.         PaginatorInterface $paginator,
  34.         EntityManagerInterface $em
  35.     ): Response
  36.     {
  37.         // Pathinfo de la page
  38.         $pathInfo $request->getPathInfo();
  39.         // Pagination Ventes Immobilières
  40.         $dql   "SELECT v FROM App:Vente v";
  41.         $query $em->createQuery($dql);
  42.         $ventes $paginator->paginate(
  43.             $query/* query NOT result */
  44.             $request->query->getInt('page'1), /*page number*/
  45.             /*limit per page*/
  46.         );
  47.         return $this->render('pages/page.ventes.html.twig', [
  48.             'pageTitle' => 'ventes',
  49.             'settings' => $settingRepository->findAll(),
  50.             'homepage' => $homepageRepository->findAll(),
  51.             'pages' => $pageRepository->findBy(['isEnabled' => true], []),
  52.             'page' => $pageRepository->findByPage('ventes'),
  53.             'categories' => $categoryRepository->findAll(),
  54.             'ventes' => $ventes,
  55.             'pathInfo' =>$pathInfo
  56.         ]);
  57.     }
  58.     /* Page Ventes immobilières Détails */
  59.     #[Route('/ventes-immobilieres/{page}/{id}'name'app_page_vente_show')]
  60.     public function vente(
  61.         SettingRepository $settingRepository,
  62.         HomepageRepository $homepageRepository,
  63.         PageRepository $pageRepository,
  64.         CategoryRepository $categoryRepository,
  65.         VenteRepository $venteRepository,
  66.         Request $request,
  67.         $page,
  68.         $id
  69.     ): Response
  70.     {
  71.         // Pathinfo de la page
  72.         $pathInfo $request->getPathInfo();
  73.         return $this->render('pages/page.vente-details.html.twig', [
  74.             'pageTitle' => $page,
  75.             'settings' => $settingRepository->findAll(),
  76.             'homepage' => $homepageRepository->findAll(),
  77.             'pages' => $pageRepository->findBy(['isEnabled' => true], []),
  78.             'page' => $pageRepository->findByPage($page),
  79.             'categories' => $categoryRepository->findAll(),
  80.             'ventes' => $venteRepository->findAll(),
  81.             'vente' => $venteRepository->findByVente($id),
  82.             'pathInfo' =>$pathInfo,
  83.         ]);
  84.     }
  85.     /* Page Avocat Détails */
  86.     #[Route('/lequipe/{page}/{nom}'name'app_page_avocat_show')]
  87.     public function avocat(
  88.         SettingRepository $settingRepository,
  89.         HomepageRepository $homepageRepository,
  90.         PageRepository $pageRepository,
  91.         CategoryRepository $categoryRepository,
  92.         AvocatRepository $avocatRepository,
  93.         Request $request,
  94.         $page,
  95.         $nom
  96.     ): Response
  97.     {
  98.         // Pathinfo de la page
  99.         $pathInfo $request->getPathInfo();
  100.         return $this->render('pages/page.avocat-details.html.twig', [
  101.             'pageTitle' => $page,
  102.             'settings' => $settingRepository->findAll(),
  103.             'homepage' => $homepageRepository->findAll(),
  104.             'pages' => $pageRepository->findBy(['isEnabled' => true], []),
  105.             'page' => $pageRepository->findByPage($page),
  106.             'categories' => $categoryRepository->findAll(),
  107.             'avocats' => $avocatRepository->findBy([], ['sortOrder' => 'ASC']),
  108.             'avocat' => $avocatRepository->findByAvocat($nom),
  109.             'pathInfo' =>$pathInfo,
  110.         ]);
  111.     }
  112.     /* Les pages - route généraliste */
  113.     #[Route('/{cat}/{page}'name'app_page')]
  114.     public function index(
  115.         SettingRepository $settingRepository,
  116.         PageRepository $pageRepository,
  117.         CategoryRepository $categoryRepository,
  118.         HomepageRepository $homepageRepository,
  119.         AvocatRepository $avocatRepository,
  120.         DomaineRepository $domaineRepository,
  121.         CabinetRepository $cabinetRepository,
  122.         HonoraireRepository $honoraireRepository,
  123.         Request $request,
  124.         PaginatorInterface $paginator,
  125.         EntityManagerInterface $em,
  126.         MailerInterface $mailer,
  127.         $page,
  128.         $cat
  129.     ): Response
  130.     {
  131.         // Dossier du template de la page
  132.         $pageTemplate 'pages/page.' $page '.html.twig';
  133.         // Pathinfo de la page
  134.         $pathInfo $request->getPathInfo();
  135.         // // Pagination Ventes Immobilières
  136.         // $dql   = "SELECT v FROM App:Vente v";
  137.         // $query = $em->createQuery($dql);
  138.         // $ventes = $paginator->paginate(
  139.         //     $query, /* query NOT result */
  140.         //     $request->query->getInt('page', 1), /*page number*/
  141.         //     6 /*limit per page*/
  142.         // );
  143.         // Page contact
  144.         $form $this->createForm(ContactType::class);
  145.         $form->handleRequest($request);
  146.         // On recherche l'email et le nom du site dans Setting
  147.         // pour injecter dans le mail
  148.         $dataMail $settingRepository->findAll();
  149.         $siteEmail $dataMail[0]->getSiteEmail();
  150.         $siteName $dataMail[0]->getSiteName();
  151.         $siteUrl $dataMail[0]->getSiteUrl();
  152.         if ($form->isSubmitted() && $form->isValid()) {
  153.             $contactFormData $form->getData();
  154.             // Si le champ adresse est rempli...
  155.             if ($contactFormData['email'] != null) {
  156.                 // On met l'adresse de la personne
  157.                 $emailOrig $contactFormData['email'];
  158.             } else {
  159.                 // Sinon on met l'adresse du site
  160.                 $emailOrig 'noreply@gerigny-associes.com';
  161.             }
  162.             $email = (new Email())
  163.                 //->from($contactFormData['email'])
  164.                 ->from($emailOrig)
  165.                 ->to(new Address($siteEmail$siteName))
  166.                 ->subject('Message depuis ' $siteUrl ' : ' $contactFormData['sujet'])
  167.                 ->html(
  168.                     '<h4 style="color: #153860; font-weight: bold;">Message envoyé depuis le site web ' $siteUrl '</h4>' .
  169.                     '<span style="color: #153860; font-weight: bold;">De :</span> ' $contactFormData['prenom'] . ' ' $contactFormData['nom'] . '<br>' .
  170.                     '<span style="color: #153860; font-weight: bold;">E-mail :</span> ' $contactFormData['email'] . '<br>' .
  171.                     '<span style="color: #153860; font-weight: bold;">Sujet : </span> ' $contactFormData['sujet'] . '<br>' .
  172.                     '<span style="color: #153860; font-weight: bold;">Téléphone : </span> ' $contactFormData['telephone'] .
  173.                     '<p><span style="color: #153860; font-weight: bold;">Message</span> : <br>' $contactFormData['message'] . '</p>',
  174.                     'text/plain'
  175.                 );
  176.             ;
  177.             $mailer->send($email);
  178.             $this->addFlash('success''Le message a bien été envoyé !');
  179.             return $this->redirect('/contact/contactez-nous');
  180.         }
  181.         return $this->render($pageTemplate, [
  182.             'settings' => $settingRepository->findAll(),
  183.             'pages' => $pageRepository->findBy(['isEnabled' => true], []),
  184.             'page' => $pageRepository->findByPage($page),
  185.             'category' => $categoryRepository->findByCat($cat),
  186.             'categories' => $categoryRepository->findAll(),
  187.             'pageTitle' => $page,
  188.             'pathInfo' =>$pathInfo,
  189.             'homepage' => $homepageRepository->findAll(),
  190.             'avocats' => $avocatRepository->findBy([], ['sortOrder' => 'ASC']),
  191.             'domaines' => $domaineRepository->findAll(),
  192.             'cabinets' => $cabinetRepository->findAll(),
  193.             // 'ventes' => $ventes,
  194.             'honoraires' => $honoraireRepository->findAll(),
  195.             'form' => $form->createView(),
  196.         ]);
  197.     }
  198. }