src/Controller/Front/PageController.php line 429

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Front;
  3. use App\Constant\ContactMessageStatus;
  4. use App\Constant\ContactMessageType;
  5. use App\Constant\NotificationType;
  6. use App\Controller\AppController;
  7. use App\Entity\Accommodation;
  8. use App\Entity\ContactMessage;
  9. use App\Entity\Page;
  10. use App\Form\Front\ContactInvestorType;
  11. use App\Form\Front\ContactRoomType;
  12. use App\Form\Front\ContactType;
  13. use App\Repository\AccommodationRepository;
  14. use App\Repository\AddressAreaRepository;
  15. use App\Repository\FaqCategoryRepository;
  16. use App\Repository\OptionRepository;
  17. use App\Repository\QuestionAnswerRepository;
  18. use App\Service\Exporter;
  19. use Symfony\Component\HttpFoundation\Request;
  20. use Symfony\Component\Routing\Annotation\Route;
  21. /**
  22.  * @Route("", name="front_page_")
  23.  */
  24. class PageController extends AppController
  25. {
  26.     public const HOMEPAGE_VERSION_OPTION_SLUG 'homepage_version';
  27.     /**
  28.      * @Route("/export-images", name="export_images", methods={"GET", "POST"})
  29.      */
  30.     public function export_images(Exporter $exporter)
  31.     {
  32.         $exporter->exportAccommodationImages();
  33.     }
  34.     /**
  35.      * @Route("/", name="home")
  36.      */
  37.     public function home(
  38.         Request $request,
  39.         OptionRepository $optionRepository,
  40.         AccommodationRepository $accommodationRepository,
  41.         AddressAreaRepository $addressAreaRepository
  42.     ){
  43.         // ------------------------------------------------
  44.         // Find homepage template to use
  45.         $homepageTemplate $optionRepository->findOneBy(['slug' => self::HOMEPAGE_VERSION_OPTION_SLUG]);
  46.         $templateName "homepage-1";
  47.         if(!empty($homepageTemplate) && in_array($homepageTemplate->getValue(), [
  48.             "homepage-2""homepage-3""homepage-4""homepage-5""homepage-6""homepage-7"
  49.         ])) {
  50.             $templateName $homepageTemplate->getValue();
  51.         }
  52.         $version $request->query->get('version');
  53.         if (!empty($version)) {
  54.             switch($version) {
  55.                 case "1":
  56.                 case "2":
  57.                 case "3":
  58.                 case "4":
  59.                 case "5":
  60.                 case "6":
  61.                 case "7":
  62.                 $templateName "homepage-$version";
  63.                     break;
  64.             }
  65.         }
  66.         // ------------------------------------------------
  67.         // Get the featured accommodations
  68.         $accommodations $accommodationRepository->searchAccommodations(["active" => true], 19); // TODO - Filter the list
  69.         $totalAccommodations $accommodationRepository->countAccommodations(["active" => true]);
  70.         // ------------------------------------------------
  71.         // Render the page
  72.         $page = new Page();
  73.         $page->setMetaTitle("Citizens");
  74.         return $this->render('front/homepage/'.$templateName.'.html.twig', [
  75.             'page' => $page,
  76.             'accommodations' => $accommodations,
  77.             'totalAccommodations' => $totalAccommodations,
  78.             'addressAreas' => $addressAreaRepository->findAll(),
  79.         ]);
  80.     }
  81.     /**
  82.      * @Route("/home-5", name="home5")
  83.      */
  84.     public function home5(AccommodationRepository $accommodationRepository){
  85.         $templateName "homepage-5";
  86.         // ------------------------------------------------
  87.         // Get the featured accommodations
  88.         $accommodations $accommodationRepository->searchAccommodations(["active" => true], 19); // TODO - Filter the list
  89.         $totalAccommodations $accommodationRepository->countAccommodations(["active" => true]);
  90.         // ------------------------------------------------
  91.         // Render the page
  92.         $page = new Page();
  93.         $page->setMetaTitle("Citizens");
  94.         return $this->render('front/homepage/'.$templateName.'.html.twig', [
  95.             'page' => $page,
  96.             'accommodations' => $accommodations,
  97.             'totalAccommodations' => $totalAccommodations,
  98.         ]);
  99.     }
  100.     /**
  101.      * @Route("/membership", name="membership")
  102.      */
  103.     public function membership(){
  104.         $page = new Page();
  105.         $page->setMetaTitle("Membres - Citizens");
  106.         return $this->render('front/pages/membership.html.twig', [
  107.             'page' => $page,
  108.         ]);
  109.     }
  110.     /**
  111.      * @Route("/investisseurs", name="investors")
  112.      */
  113.     public function investors(Request $requestAccommodationRepository $accommodationRepository){
  114.         $message = new ContactMessage();
  115.         $form $this->createForm(ContactInvestorType::class, $message);
  116.         $form->handleRequest($request);
  117.         if ($form->isSubmitted() && $form->isValid()) {
  118.             $message->setType(ContactMessageType::INVESTOR);
  119.             $message->setStatus(ContactMessageStatus::TODO);
  120.             $this->em->persist($message);
  121.             $this->em->flush();
  122.             $this->notifier->admin(NotificationType::ADMIN_CONTACT, ["message" => $message]);
  123.             return $this->redirectToRoute('front_page_investors', ['success' => true]);
  124.         }
  125.         $page = new Page();
  126.         $page->setMetaTitle("Investir dans un bien coliving - Citizens");
  127.         switch($request->query->get('version'"4")) {
  128.             case "1":
  129.                 $pageVersion 'investors-1';
  130.                 break;
  131.             case "2":
  132.                 $pageVersion 'investors-2';
  133.                 break;
  134.             case "3":
  135.                 $pageVersion 'investors-3';
  136.                 break;
  137.             default:
  138.                 $pageVersion 'investors-4';
  139.         }
  140.         // ------------------------------------------------
  141.         // Get the featured accommodations
  142.         $accommodations $accommodationRepository->searchAccommodations(["active" => true], 19); // TODO - Filter the list
  143.         $totalAccommodations $accommodationRepository->countAccommodations(["active" => true]);
  144.         return $this->render('front/pages/' $pageVersion '.html.twig', [
  145.             'page' => $page,
  146.             'form' => $form->createView(),
  147.             'form2' => $form->createView(),
  148.             'success' => !empty($request->query->get('success')),
  149.             'accommodations' => $accommodations,
  150.             'totalAccommodations' => $totalAccommodations,
  151.         ]);
  152.     }
  153.     /**
  154.      * @Route("/proprietaires", name="owners")
  155.      */
  156.     public function owners(Request $requestAccommodationRepository $accommodationRepository){
  157.         $message = new ContactMessage();
  158.         $form $this->createForm(ContactInvestorType::class, $message);
  159.         $form->handleRequest($request);
  160.         if ($form->isSubmitted() && $form->isValid()) {
  161.             $message->setType(ContactMessageType::INVESTOR);
  162.             $message->setStatus(ContactMessageStatus::TODO);
  163.             $this->em->persist($message);
  164.             $this->em->flush();
  165.             $this->notifier->admin(NotificationType::ADMIN_CONTACT, ["message" => $message]);
  166.             return $this->redirectToRoute('front_page_owners', ['success' => true]);
  167.         }
  168.         $page = new Page();
  169.         $page->setMetaTitle("Transformer son bien en coliving - Citizens");
  170.         // ------------------------------------------------
  171.         // Get the featured accommodations
  172.         $accommodations $accommodationRepository->searchAccommodations(["active" => true], 19); // TODO - Filter the list
  173.         $totalAccommodations $accommodationRepository->countAccommodations(["active" => true]);
  174.         return $this->render('front/pages/owners-2.html.twig', [
  175.             'page' => $page,
  176.             'form' => $form->createView(),
  177.             'success' => !empty($request->query->get('success')),
  178.             'accommodations' => $accommodations,
  179.             'totalAccommodations' => $totalAccommodations,
  180.         ]);
  181.     }
  182.     /**
  183.      * @Route("/membres", name="members")
  184.      */
  185.     public function members(){
  186.         $page = new Page();
  187.         $page->setMetaTitle("Membres - Citizens");
  188.         return $this->render('front/pages/members.html.twig', [
  189.             'page' => $page,
  190.         ]);
  191.     }
  192.     /**
  193.      * @Route("/loisirs", name="community")
  194.      */
  195.     public function community(Request $request){
  196.         $page = new Page();
  197.         $page->setMetaTitle("Communautés - Citizens");
  198.         $version $request->query->get('version'"3");
  199.         return $this->render('front/pages/community-' $version '.html.twig', [
  200.             'page' => $page,
  201.         ]);
  202.     }
  203.     /**
  204.      * @Route("/faq", name="faq")
  205.      */
  206.     public function faq(Request $requestFaqCategoryRepository $faqCategoryRepository){
  207.         $faq $faqCategoryRepository->searchFaqCategories([], 1100);
  208.         $page = new Page();
  209.         $page->setMetaTitle("FAQ - Citizens");
  210.         $version $request->query->get('version'"2");
  211.         return $this->render('front/pages/faq-' $version '.html.twig', [
  212.             'page' => $page,
  213.             'faq' => $faq,
  214.         ]);
  215.     }
  216.     /**
  217.      * @Route("/contact", name="contact")
  218.      */
  219.     public function contact(Request $request){
  220.         $message = new ContactMessage();
  221.         $form $this->createForm(ContactType::class, $message);
  222.         $form->handleRequest($request);
  223.         if ($form->isSubmitted() && $form->isValid()) {
  224.             $message->setType(ContactMessageType::CONTACT);
  225.             $message->setStatus(ContactMessageStatus::TODO);
  226.             $this->em->persist($message);
  227.             $this->em->flush();
  228.             $this->notifier->admin(NotificationType::ADMIN_CONTACT, ["message" => $message]);
  229.             return $this->redirectToRoute('front_page_contact', ['success' => true]);
  230.         }
  231.         $page = new Page();
  232.         $page->setMetaTitle("Contact - Citizens");
  233.         return $this->render('front/pages/contact.html.twig', [
  234.             'page' => $page,
  235.             'form' => $form->createView(),
  236.             'success' => !empty($request->query->get('success')),
  237.         ]);
  238.     }
  239.     /**
  240.      * @Route("/contact/{id}", name="contact_room")
  241.      */
  242.     public function contact_room(Request $requestAccommodation $accommodation){
  243.         $message = new ContactMessage();
  244.         $form $this->createForm(ContactRoomType::class, $message);
  245.         $form->handleRequest($request);
  246.         if ($form->isSubmitted() && $form->isValid()) {
  247.             $message->setAccommodation($accommodation);
  248.             // $message->setRoom($room);
  249.             $message->setType(ContactMessageType::ROOM);
  250.             $message->setStatus(ContactMessageStatus::TODO);
  251.             $this->em->persist($message);
  252.             $this->em->flush();
  253.             $this->notifier->admin(NotificationType::ADMIN_CONTACT, ["message" => $message]);
  254.             return $this->redirectToRoute('front_page_contact_room', ['success' => true'id' => $accommodation->getId()]);
  255.         }
  256.         $page = new Page();
  257.         $page->setMetaTitle("Contact - Citizens");
  258.         return $this->render('front/pages/contact_room.html.twig', [
  259.             'page' => $page,
  260.             'accommodation' => $accommodation,
  261.             'form' => $form->createView(),
  262.             'success' => !empty($request->query->get('success')),
  263.         ]);
  264.     }
  265.     /**
  266.      * @Route("/concept/qualite", name="benefits_quality")
  267.      */
  268.     public function benefits_quality(){
  269.         $page = new Page();
  270.         $page->setMetaTitle("100% Qualité - Avantages - Citizens");
  271.         return $this->render('front/pages/benefits/quality.html.twig', [
  272.             'page' => $page,
  273.         ]);
  274.     }
  275.     /**
  276.      * @Route("/concept/services", name="benefits_service")
  277.      */
  278.     public function benefits_service(){
  279.         $page = new Page();
  280.         $page->setMetaTitle("100% Service - Avantages - Citizens");
  281.         return $this->render('front/pages/benefits/service.html.twig', [
  282.             'page' => $page,
  283.         ]);
  284.     }
  285.     /**
  286.      * @Route("/concept/citoyens", name="benefits_citizens")
  287.      */
  288.     public function benefits_citizens(Request $request){
  289.         $page = new Page();
  290.         $page->setMetaTitle("100% Citoyens - Avantages - Citizens");
  291.         $version $request->query->get('version'"3");
  292.         return $this->render('front/pages/benefits/citizens-' $version '.html.twig', [
  293.             'page' => $page,
  294.         ]);
  295.     }
  296.     /**
  297.      * @Route("/concept/plaisir", name="benefits_pleasure")
  298.      */
  299.     public function benefits_pleasure(){
  300.         $page = new Page();
  301.         $page->setMetaTitle("100% Plaisir - Avantages - Citizens");
  302.         return $this->render('front/pages/benefits/pleasure.html.twig', [
  303.             'page' => $page,
  304.         ]);
  305.     }
  306.     /**
  307.      * @Route("/organigramme", name="company_organizational_chart")
  308.      */
  309.     public function organizational_chart(){
  310.         $page = new Page();
  311.         $page->setMetaTitle("Organigramme - Citizens");
  312.         throw $this->createNotFoundException('Not found');
  313.         /*return $this->render('front/pages/organizational-chart.html.twig', [
  314.             'page' => $page,
  315.         ]);*/
  316.     }
  317.     /**
  318.      * @Route("/nos-metiers", name="company_our_jobs")
  319.      */
  320.     public function our_jobs(){
  321.         $page = new Page();
  322.         $page->setMetaTitle("Nos métiers - Citizens");
  323.         return $this->render('front/pages/our-jobs.html.twig', [
  324.             'page' => $page,
  325.         ]);
  326.     }
  327.     /**
  328.      * @Route("/a-propos-de-citizens", name="company_about")
  329.      */
  330.     public function about(){
  331.         $page = new Page();
  332.         $page->setMetaTitle("À propos de CITIZENS - Citizens");
  333.         return $this->render('front/pages/about.html.twig', [
  334.             'page' => $page,
  335.         ]);
  336.     }
  337.     /**
  338.      * @Route("/services", name="services")
  339.      */
  340.     public function services(Request $request){
  341.         $page = new Page();
  342.         $page->setMetaTitle("Services - Citizens");
  343.         $version $request->query->get('version'"1");
  344.         return $this->render('front/pages/services-'$version .'.html.twig', [
  345.             'page' => $page,
  346.         ]);
  347.     }
  348.     /**
  349.      * @Route("/confort-5-etoiles", name="comfort")
  350.      */
  351.     public function comfort(Request $request){
  352.         $page = new Page();
  353.         $page->setMetaTitle("Confort 5 étoiles - Citizens");
  354.         $version $request->query->get('version'"1");
  355.         return $this->render('front/pages/comfort-'$version .'.html.twig', [
  356.             'page' => $page,
  357.         ]);
  358.     }
  359.     /**
  360.      * @Route("/privacy", name="privacy")
  361.      */
  362.     public function privacy(){
  363.         $page = new Page();
  364.         $page->setMetaTitle("Confidentialité - Citizens");
  365.         return $this->render('front/pages/privacy.html.twig', [
  366.             'page' => $page,
  367.         ]);
  368.     }
  369.     /**
  370.      * @Route("/terms-conditions", name="terms_conditions")
  371.      */
  372.     public function terms_conditions(){
  373.         $page = new Page();
  374.         $page->setMetaTitle("Conditions générales d'utilisation - Citizens");
  375.         return $this->render('front/pages/terms-conditions.html.twig', [
  376.             'page' => $page,
  377.         ]);
  378.     }
  379. }