src/Controller/FrontController.php line 555

Open in your IDE?
  1. <?php
  2. // src/Controller/LuckyController.php
  3. namespace App\Controller;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\Routing\Annotation\Route;
  6. use Doctrine\ORM\EntityManagerInterface;
  7. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\HttpFoundation\Response;
  10. use Doctrine\ORM\Query\Expr\Join;
  11. use App\Entity\CmsPage;
  12. use App\Entity\ProduitThalasso;
  13. use App\Service\FrontService;
  14. use App\Controller\BookingApiController;
  15. use Symfony\Contracts\Translation\TranslatorInterface;
  16. use App\Entity\CmsPageBlockComposantTrans\Translation as composantTranslation;
  17. use App\Entity\CmsPageBlockComposantItemsTrans\Translation as itemTranslation;
  18. use App\Entity\SubItemTrans\Translation as subItemTranslation;
  19. use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
  20. // use Knp\Bundle\SnappyBundle\Snappy\Response\PdfResponse;
  21. // use Knp\Snappy\Pdf;
  22. class FrontController extends AbstractController
  23. {
  24.   private $frontService;
  25.   private $apiController;
  26.   private $session;
  27.   private $em;
  28.   public function __construct(FrontService $frontServiceSessionInterface $session,BookingApiController $apiController,EntityManagerInterface $em
  29.   {
  30.       $this->frontService $frontService;
  31.       $this->apiController $apiController;
  32.       $this->session $session;
  33.       $this->em $em;
  34.   } 
  35.   /**
  36.    * @Route("/{_locale}/recherche", defaults={"_locale": "fr"}, name="render_mlc_recherche")
  37.    * @Route("/{_locale}/search", defaults={"_locale": "en"}, name="render_mlc_recherche_en")
  38.    * 
  39.    */
  40.   public function pageSearch($_localeRequest $requestEntityManagerInterface $em)
  41.   {
  42.     if($request->get('lang')){
  43.       $request->setLocale($request->get('lang'));
  44.     }
  45.     if(!$_locale){
  46.       $_locale "fr";
  47.     }
  48.     $params = [];
  49.     if(!empty($_POST)){
  50.       $params $_POST;
  51.       $params['pageSize'] = 10;
  52.       $params['page'] = 1;
  53.       // dump($_POST);exit;
  54.     }
  55. //var_dump($params); die;
  56.   if($_locale == "en")
  57.       $this->session->set('slang'$_locale );
  58.   else
  59.       $this->session->set('slang'"fr" );
  60.   # begin pages versions
  61.           #fr
  62.          
  63.           $page_versions[] = array(
  64.             // $this->generateUrl('render_mlc_recherche',["_locale"=>"fr"]),
  65.             "to" => ($_locale == 'fr') ? '#' $this->frontService->getHome("fr")["to"],
  66.             "value" => "fr",
  67.             "active" => ($_locale == "fr") ? true false
  68.           );
  69.           #en
  70.           $page_versions[] = array(
  71.             "to" => ($_locale == 'en') ? '#' $this->frontService->getHome("en")["to"],
  72.             "value" => "en",
  73.             "active" => ($_locale == "en") ? true false
  74.           );
  75.   # begin pages versions
  76.     
  77.     # get data from API
  78.         # call api method (data getter)
  79.         $res $this->forward('App\Controller\BookingApiController::getSearchResult', ['searchParams' => $params'lang' => $_locale]);
  80.         $search_result json_decode($res->getContent(), true);
  81.         // dump($search_result);exit;
  82.     # store search_params in session
  83.       $this->session->set('search_params'$search_result['params']);
  84.     # watch if post data has  sent some data
  85.     #
  86.     if($search_result['status'] == 501){
  87.       echo '<pre>';var_dump($search_result$params); echo '</pre>----------';exit;
  88.     }elseif($search_result['status'] == 404){
  89.       $search_result['response']['results'] = [];
  90.     }
  91.     elseif($search_result['status'] != 200){
  92.       $search_result['response']['results'] = [];
  93.     }
  94.     return $this->render('pages/akaru/search.html.twig', ['search_result'=>$search_result['response'], 'selected_params' => $params'lang' => $_locale,"page_versions"=>$page_versions]);
  95.   }
  96.   /**
  97.    * @Route("/{_locale}/reservations-gift", defaults={"_locale": "fr"}, name="render_mlc_gift")
  98.    * 
  99.    */
  100.   public function reservationsGift($_localeRequest $requestEntityManagerInterface $em)
  101.   {
  102.   # begin pages versions
  103.           #fr
  104.           $page_versions[] = array(
  105.             "to" => "/fr",
  106.             "value" => "fr",
  107.             "active" => ($_locale == "fr") ? true false
  108.           );
  109.           #en
  110.           $page_versions[] = array(
  111.             "to" => "/en",
  112.             "value" => "en",
  113.             "active" => ($_locale == "en") ? true false
  114.           );
  115.   # end pages versions
  116.     //get NRR parameter
  117.     $pourcentage_nrr=0;
  118.     $this->session->set('nrr_toapply'$pourcentage_nrr);
  119.     
  120.     $min_cheque_cadeau=0;
  121.     $max_cheque_cadeau=10000;
  122.     $val_min_cheque_cadeau$em->getRepository("App\Entity\Parametrage")->findOneByCode("min_cheque_cadeau");
  123.     $val_max_cheque_cadeau$em->getRepository("App\Entity\Parametrage")->findOneByCode("max_cheque_cadeau");
  124.     if($val_min_cheque_cadeau && $val_min_cheque_cadeau->getvarValue() ) $min_cheque_cadeau= (int)$val_min_cheque_cadeau->getvarValue();
  125.     if($val_max_cheque_cadeau && $val_max_cheque_cadeau->getvarValue() ) $max_cheque_cadeau= (int)$val_max_cheque_cadeau->getvarValue();
  126.   return $this->render('pages/akaru/reservations/gift.html.twig', ["min_cheque_cadeau"=>$min_cheque_cadeau,"max_cheque_cadeau"=>$max_cheque_cadeau,"page_versions"=>$page_versions]);
  127.   }
  128.   /**
  129.    * @Route("/{_locale}/reservations", defaults={"_locale": "fr"}, name="render_mlc_reservation")
  130.    * 
  131.    */
  132.   public function reservations($_localeRequest $requestEntityManagerInterface $em)
  133.   {
  134.     $request->setLocale($_locale);
  135.   # begin pages versions
  136.           #fr
  137.           $page_versions[] = array(
  138.             "to" => "/fr",
  139.             "value" => "fr",
  140.             "active" => ($_locale == "fr") ? true false
  141.           );
  142.           #en
  143.           $page_versions[] = array(
  144.             "to" => "/en",
  145.             "value" => "en",
  146.             "active" => ($_locale == "en") ? true false
  147.           );
  148.   # end pages versions
  149.     //get NRR parameter
  150.     $pourcentage_nrr=0;
  151.     $this->session->set('nrr_toapply'$pourcentage_nrr);
  152.         /*echo "<pre>";
  153.         var_dump($_POST);
  154.         echo "</pre>";
  155.         die;*/
  156.     //case thalasso produit fiche *******************************************************
  157.         //unset if case hotel search engine
  158.         if(!empty($_POST) && isset($_POST['rooms-num'])){
  159.           $this->session->remove('selected_thalasso');
  160.           $this->session->remove('selected_room');
  161.           unset($selected_thalasso);
  162.           unset($selected_room);
  163.         }
  164.         //get posted data
  165.         $selected_thalasso=$this->session->get('selected_thalasso');
  166.         $selected_room=$this->session->get('selected_room');
  167.         /*echo "<pre>";
  168.         var_dump($selected_thalasso);
  169.         echo "</pre>";
  170.         die;*/
  171.         if( isset($selected_thalasso) && $selected_thalasso["id"]!="")
  172.         {
  173.           $search_params=$this->session->get('search_params');
  174.         /*echo "<pre>";
  175.         var_dump($search_params);
  176.         echo "</pre>"; */
  177.      
  178.           $params = [];
  179.           $params['room_num'] = 1;
  180.           $params['room_id'] = 51//static 51 passerelle
  181.           $params['total_adults']=1;
  182.           $params['total_children']=0;
  183.           $search_params['duration']=(int)$selected_thalasso["duration"]-1;
  184.           $search_params['nbr_duration']=(int)$selected_thalasso["duration"]-1;
  185.           if($selected_thalasso["accomodation"]=="true")$search_params['type_bar']=3; else $search_params['type_bar']=4;
  186.           $search_params['adults'] = 1;
  187.           $search_params['children'] = 0
  188.           $search_params['date_start'] = $selected_thalasso["departure"]; 
  189.           $search_params['date_end'] = $selected_thalasso["arrival"]; 
  190.           //reset search_params
  191.           $this->session->set('search_params'$search_params);
  192.           /*echo "<pre>";
  193.           var_dump($search_params);
  194.           echo "</pre>"; 
  195.           die;*/
  196.           $this->session->set('selected_search'$params);
  197.         //verif session and redirect to homepage if lost 
  198.         if($this->verifRedirectSession())
  199.         return $this->verifRedirectSession();
  200.      
  201.             if($search_params['type_bar'] == 4
  202.               { 
  203.                 if(array_key_exists("soin"$selected_thalasso) &&  $selected_thalasso["soin"]=="true")
  204.                 {
  205.                  
  206.                         //apply NRR 
  207.                         $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_soins");
  208.                         if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() && $this->verifProductNrr($selected_thalasso["id"]) )
  209.                         {
  210.                           $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  211.                           $this->session->set('nrr_toapply'$pourcentage_nrr);
  212.                         }
  213.                   return $this->render('pages/akaru/reservations/care.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]); 
  214.                 }
  215.                 else {
  216.                         //apply NRR 
  217.                         $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_thalasso_sans_hebergement");
  218.                         if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() && $this->verifProductNrr($selected_thalasso["id"]))
  219.                         {
  220.                           $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  221.                           $this->session->set('nrr_toapply'$pourcentage_nrr);
  222.                         }                  
  223.                   return $this->render('pages/akaru/reservations/cure.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]);  
  224.                 }
  225.               }
  226.             if($search_params['type_bar'] == 3) {
  227.                         //apply NRR 
  228.                         $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_thalasso_avec_hebergement");
  229.                         if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() && $this->verifProductNrr($selected_thalasso["id"]))
  230.                         {
  231.                           $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  232.                           $this->session->set('nrr_toapply'$pourcentage_nrr);
  233.                         }     
  234.                         
  235.                         
  236.               return $this->render('pages/akaru/reservations/index.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]);            
  237.             }
  238.         }
  239.     //case chambre fiche *******************************************************
  240.         if( isset($selected_room) && $selected_room["id"]!="")
  241.         {
  242.           $search_params=$this->session->get('search_params');
  243.         /*echo "<pre>";
  244.         var_dump($selected_room);
  245.         echo "</pre>"; die;*/
  246.           $params = [];
  247.           $params['room_num'] = 1;
  248.           $params['room_id'] = $selected_room["id"]; 
  249.           $params['total_adults']=1;
  250.           $params['total_children']=0;
  251.           $params['board']=[1]; //set board default 
  252.           $search_params['duration']=(int)$selected_room["duration"]-1;
  253.           $search_params['nbr_duration']=(int)$selected_room["duration"]-1;
  254.           $search_params['type_bar']=2
  255.           $search_params['adults'] = 1;
  256.           $search_params['children'] = 0
  257.           $search_params['date_start'] = $selected_room["departure"]; 
  258.           $search_params['date_end'] = $selected_room["arrival"]; 
  259.           //reset search_params
  260.           $this->session->set('search_params'$search_params);
  261.         /*echo "<pre>";
  262.         var_dump($search_params);
  263.         echo "</pre>";
  264.         die; */
  265.           $this->session->set('selected_search'$params);
  266.           
  267.           //apply NRR 
  268.           $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_hotel");
  269.           if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() )
  270.           {
  271.             $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  272.             $this->session->set('nrr_toapply'$pourcentage_nrr);
  273.           }
  274.           return $this->render('pages/akaru/reservations/room.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]);
  275.         }
  276.  //case hotel seul residence *******************************************************
  277.     // dump($_POST);exit;
  278.     $params = [];
  279.     if(!empty($_POST)){
  280.       $params['room_num'] = intval($_POST['rooms-num']);
  281.       $params['room_id'] = $_POST['room_id'];
  282.     
  283.       # remove rooms number from post
  284.         unset($_POST['rooms-num']);
  285.         unset($_POST['room_id']);
  286.       #  store selected values in session as selected reservationvalues
  287.         foreach ($_POST as $identifier => $value) {
  288.           $room_data explode("-"$identifier);
  289.           # end if number chambres is reached
  290.             if(intval($room_data[1]) > $params['room_num']){
  291.               break;
  292.             }
  293.           # store (adults, children, board) values
  294.             $params[$room_data[2]][] = $value;
  295.           #
  296.         }
  297.       #
  298.       $params['total_adults'] = 1;
  299.       $params['total_children'] = 0;
  300.       /*if(isset($params['adults'])){
  301.         $params['total_adults'] = array_sum($params['adults']);
  302.       }
  303.       if(isset($params['children'])){
  304.         $params['total_children'] = array_sum($params['children']);
  305.       }*/
  306.       # store search_params in session
  307.         $this->session->set('selected_search'$params);
  308.         /*echo '<pre>';var_dump($_POST); echo '</pre>----------';
  309.         die;*/
  310.         
  311.       #
  312.     }else{
  313.       # redirect to search if  there was no process fallowed
  314.           return  $this->redirect($this->generateUrl('render_mlc_recherche'));
  315.       #
  316.     }
  317.     # get data from API
  318.         // $res = $this->apiController->getSearchResult($lang, $params);
  319.           // $search_result = json_decode($res->getContent(), true);
  320.         // dump($search_result);exit;
  321.     #
  322.     
  323.       if($this->session->get('search_params')['type_bar'] == $this->getParameter('hotel_seul_id')) {
  324.                         //apply NRR 
  325.                         $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_hotel");
  326.                         if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() )
  327.                         {
  328.                           $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  329.                           $this->session->set('nrr_toapply'$pourcentage_nrr);
  330.                         }         
  331.         return $this->render('pages/akaru/reservations/room.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]);
  332.       }else 
  333.       {
  334.                                 //apply NRR 
  335.                         $parm_pourcentage_nrr$em->getRepository("App\Entity\Parametrage")->findOneByCode("nrr_thalasso_avec_hebergement");
  336.                         if($parm_pourcentage_nrr && $parm_pourcentage_nrr->getvarValue() )
  337.                         {
  338.                           $pourcentage_nrr=$parm_pourcentage_nrr->getvarValue();
  339.                           $this->session->set('nrr_toapply'$pourcentage_nrr);
  340.                         }         
  341.         return $this->render('pages/akaru/reservations/index.html.twig', ['_locale' => $_locale,"page_versions"=>$page_versions]);
  342.       }
  343.   }
  344.   /**
  345.    * @Route("/addFormRecord/{formulaire_id}/{_locale}/{page}", name="add_form_record", requirements={ "_locale": "en|fr|de", }, methods="POST")
  346.    * 
  347.    */
  348.   public function addFormRecord(Request $request$formulaire_id$_locale$pageTranslatorInterface $translator)
  349.   {
  350.     if($this->frontService->addFormRecord($request$formulaire_id$_locale$page)){
  351.       $this->addFlash('success'$translator->trans('form_success_message'));
  352.       return  $this->redirect($request->server->get('HTTP_REFERER') . '#fm');
  353.     }
  354.     else{
  355.       $this->addFlash('error'$translator->trans('form_error_message'));
  356.       return $this->redirect($request->server->get('HTTP_REFERER') . '#fm');
  357.     }
  358.   }
  359.   /**
  360.    * @Route("/addSubscriberToNewsLetter/{_locale}", name="add_subscriber_to_newsletter", requirements={ "_locale": "en|fr|de"}, methods="POST")
  361.    * 
  362.    */
  363.   public function addSubscriberToNewsLetter(Request $request$_localeTranslatorInterface $translator)
  364.   {
  365.     $mode_residence $this->frontService->getResidenceMode();
  366.     $ancre '#nl';
  367.     if($request->request->get('email')){
  368.         $email $request->request->get('email');
  369.         $recaptcha $request->request->get('g-recaptcha-response');
  370.         $result $this->frontService->addSubscriberToNewsLetter($email$_locale$recaptcha);
  371.         
  372.         if($result == 0){
  373.           $this->addFlash('nl_success'$translator->trans('form_success_message'));
  374.           return  $this->redirect($request->server->get('HTTP_REFERER') . $ancre);
  375.         }
  376.         else if ($result == 1){
  377.           $this->addFlash('nl_error'$translator->trans('form_error_message'));
  378.           return $this->redirect($request->server->get('HTTP_REFERER') . $ancre);
  379.         }
  380.         else if ($result == 2){
  381.           $this->addFlash('nl_error'$translator->trans('used_email_error_message'));
  382.           return $this->redirect($request->server->get('HTTP_REFERER') . $ancre);
  383.         }
  384.     }else{
  385.         $this->addFlash('nl_error'$translator->trans('form_error_message'));
  386.         return $this->redirect($request->server->get('HTTP_REFERER') . $ancre);
  387.     }
  388.     
  389.   }
  390.   /**
  391.    * @Route("/addFooterFormRecord/{formulaire_id}/{_locale}", name="add_footer_form_record", requirements={ "_locale": "en|fr|de", })
  392.    * 
  393.    */
  394.   public function addFooterFormRecord(Request $request$formulaire_id$_localeTranslatorInterface $translator)
  395.   {
  396.     if($this->frontService->addFormRecord($request$formulaire_id$_locale)){
  397.       $this->addFlash('footer_success'$translator->trans('form_success_message'));
  398.       return  $this->redirect($request->server->get('HTTP_REFERER') . '#ffm');
  399.     }
  400.     else{
  401.       $this->addFlash('footer_error'$translator->trans('form_error_message'));
  402.       return $this->redirect($request->server->get('HTTP_REFERER') . '#ffm');
  403.     }
  404.   }
  405.   // /**
  406.   //  * @Route("/composant_trans", name="composant_trans")
  407.   //  * 
  408.   //  */
  409.   // public function composant_trans(EntityManagerInterface $em){
  410.   //   $composants = $em->getRepository("App\Entity\CmsPageBlockComposant")->findAll();
  411.   //   $items = $em->getRepository("App\Entity\CmsPageBlockComposantItems")->findAll();
  412.   //   $sub_items = $em->getRepository("App\Entity\SubItem")->findAll();
  413.     
  414.   //   foreach($composants as $composant){
  415.   //     if($composant->getMasquer() == 1){
  416.   //       $trans = new composantTranslation();
  417.   //       $trans->setObject($composant);
  418.   //       $trans->setLocale('fr');
  419.   //       $trans->setField('masquer');
  420.   //       $trans->setContent($composant->getMasquer());
  421.   //       $em->persist($trans);
  422.   //       $trans = new composantTranslation();
  423.   //       $trans->setObject($composant);
  424.   //       $trans->setLocale('en');
  425.   //       $trans->setField('masquer');
  426.   //       $trans->setContent($composant->getMasquer());
  427.   //       $em->persist($trans);
  428.   //       $em->flush();
  429.   //     }
  430.   //   }
  431.   //   foreach($items as $item){
  432.   //     if($item->getMasquer() == 1){
  433.   //       $trans_item = new itemTranslation();
  434.   //       $trans_item->setObject($item);
  435.   //       $trans_item->setLocale('fr');
  436.   //       $trans_item->setField('masquer');
  437.   //       $trans_item->setContent($item->getMasquer());
  438.   //       $em->persist($trans_item);
  439.   //       $trans_item = new itemTranslation();
  440.   //       $trans_item->setObject($item);
  441.   //       $trans_item->setLocale('en');
  442.   //       $trans_item->setField('masquer');
  443.   //       $trans_item->setContent($item->getMasquer());
  444.   //       $em->persist($trans_item);
  445.   //       $em->flush();
  446.   //     }
  447.   //   }
  448.   //   foreach($sub_items as $sub_item){
  449.   //     if($sub_item->getMasquer() == 1){
  450.   //       $sub_item_trans = new subItemTranslation();
  451.   //       $sub_item_trans->setObject($sub_item);
  452.   //       $sub_item_trans->setLocale('fr');
  453.   //       $sub_item_trans->setField('masquer');
  454.   //       $sub_item_trans->setContent($sub_item->getMasquer());
  455.   //       $em->persist($sub_item_trans);
  456.   //       $sub_item_trans = new subItemTranslation();
  457.   //       $sub_item_trans->setObject($sub_item);
  458.   //       $sub_item_trans->setLocale('en');
  459.   //       $sub_item_trans->setField('masquer');
  460.   //       $sub_item_trans->setContent($sub_item->getMasquer());
  461.   //       $em->persist($sub_item_trans);
  462.   //       $em->flush();
  463.   //     }
  464.   //   }
  465.   //   return new Response("done");
  466.   // }
  467.   /**
  468.     *@Route("/{_locale}/sitemap", name="render_sitemap", host="{hostname}", requirements={"_locale": "en|fr|de", "hostname"="miramar.test|residence-mlc.miramar.test|residence-lacigale.com|miramar-lacigale.com|mlc.local|mlc.digitz.dev|residence-mlc.mlc.local|residence-mlc.digitz.dev"})
  469.   */
  470.   public function sitemap($_locale nullRequest $requestEntityManagerInterface $em)
  471.   {
  472.     $sitemap $this->frontService->getSitemap($_locale);
  473.     return $this->render('pages/akaru/sitemap.html.twig', array('sitemap' => $sitemap'locale' => $_locale));
  474.   }
  475.   /**
  476.       ************************************************************ HOTEL **************************************************************
  477.     * @Route("/{_locale}/{slug}", name="render_mlc_pages", defaults={"_locale": "fr","host":"miramar.test"}, host="{hostname}", requirements={"_locale": "en|fr|de","hostname"="miramar.test|miramar-lacigale.com|mlc.local|mlc.digitz.dev"})
  478.     * @Route("/{_locale}", name="default_hotel_page", host="{hostname}", defaults={"slug" = "miramar-la-cigale"}, requirements={"_locale": "fr|en", "hostname"="miramar.test|miramar-lacigale.com|mlc.local|mlc.digitz.dev"})
  479.     ********************************************************** RESIDENCE *************************************************************
  480.     * @Route("/{_locale}", name="default_residence_page_fr", host="{hostname}", defaults={"slug" = "residence-miramar-la-cigale-arzon","hostname"="residence-mlc.miramar.test"}, requirements={"_locale"= "fr", "hostname"="residence-mlc.miramar.test|residence-lacigale.com|residence-mlc.mlc.local|residence-mlc.digitz.dev"})
  481.     * @Route("/{_locale}", name="default_residence_page_en", host="{hostname}", defaults={"slug" = "residence","hostname"="residence-mlc.miramar.test"}, requirements={"_locale"= "en", "hostname"="residence-mlc.miramar.test|residence-lacigale.com|residence-mlc.mlc.local|residence-mlc.digitz.dev"})
  482.     * @Route("/{_locale}/{slug}", name="render_residence_pages", host="{hostname}", defaults={"hostname"="residence-mlc.miramar.test"}, requirements={"_locale": "en|fr", "hostname"="residence-mlc.miramar.test|residence-lacigale.com|residence-mlc.mlc.local|residence-mlc.digitz.dev"})
  483.   */
  484.   public function page($_locale null$slugRequest $requestEntityManagerInterface $em)
  485.   {
  486.     $mode_residence $this->frontService->getResidenceMode();
  487.    
  488.     $page_versions = [];
  489.     $cms_template_cible=null;
  490.     if(!$_locale){
  491.       $_locale "fr";
  492.     }
  493.     if($mode_residence){
  494.       $page_type 'residence';
  495.     }else{
  496.       $page_type 'hotel';
  497.     }
  498.     
  499.     // $currentpageTrans = $em->getRepository("App\Entity\CmsPageTrans\Translation")->findOneBy(["locale"=>$_locale, "field" => "seo_slug", "content" => $slug]);
  500.     $currentpageTrans $em->getRepository("App\Entity\CmsPageTrans\Translation")->createQueryBuilder('page_trns')
  501.                         ->leftJoin('page_trns.object''page')
  502.                         ->where('page_trns.locale = :_locale')
  503.                         ->andWhere('page_trns.field = :_field')
  504.                         ->andWhere('page_trns.content = :slug')
  505.                         ->andWhere('page.page_type = :page_type')
  506.                         //->andWhere('page.actif = 1')
  507.                         ->setParameter('_field''seo_slug')
  508.                         ->setParameter('slug'$slug)
  509.                         ->setParameter('_locale'$_locale)
  510.                         ->setParameter('page_type'$page_type)
  511.                         ->setMaxResults(1)
  512.                         ->getQuery()
  513.                         ->getOneOrNullResult();
  514.     if($currentpageTrans && $this->frontService->getHeaderFields($currentpageTrans->getObject(), "actif"$_locale)){
  515.       $pageTranslations $em->getRepository("App\Entity\CmsPageTrans\Translation")->findBy(["object" => $currentpageTrans->getObject()->getId(), "field" => "seo_slug"]);
  516.       
  517.       if($pageTranslations){
  518.         foreach($pageTranslations as $pageTranslation){
  519.           if($this->frontService->getHeaderFields($currentpageTrans->getObject(), "actif"$pageTranslation->getLocale())){
  520.             $page_versions[] = array(
  521.               
  522.               "to" => ($mode_residence) ? $this->generateUrl('render_residence_pages', ['_locale' => $pageTranslation->getLocale(), 'slug' => $pageTranslation->getContent(), 'hostname' => $_SERVER['HTTP_HOST']]) : $this->generateUrl('render_mlc_pages', ['_locale' => $pageTranslation->getLocale(), 'slug' => $pageTranslation->getContent(), 'hostname' => $_SERVER['HTTP_HOST']]),
  523.               "value" => $pageTranslation->getLocale(),
  524.               "active" => ($_locale == $pageTranslation->getLocale()) ? true false
  525.             );
  526.           }
  527.           
  528.         }
  529.       }
  530.       $currentpage $currentpageTrans->getObject();
  531.       if($currentpage->getCmsTemplate()){
  532.         $cms_template_cible $currentpage->getCmsTemplate()->getNomTechniqueTemplate();
  533.       }
  534.           
  535.       if ($cms_template_cible == 'index.html.twig') {
  536.         
  537.             if ((!$this->session->get('popin_fr')) && ($_locale == 'fr')) {
  538.                 $this->session->set('first_visite_fr'true);
  539.                 $this->session->set('popin_fr'true);
  540.                 // Display the modal for the 'fr' language
  541.             } else {
  542.                 $this->session->set('first_visite_fr'false);
  543.             }
  544.         
  545.             if ((!$this->session->get('popin_en')) && ($_locale == 'en')) {
  546.                 $this->session->set('first_visite_en'true);
  547.                 $this->session->set('popin_en'true);
  548.                 // Display the modal for the 'en' language
  549.             } else {
  550.                 $this->session->set('first_visite_en'false);
  551.             }
  552.        }
  553.       $composants = array();
  554.       $page $currentpage;
  555.       if($page){
  556.         $composants $em->getRepository("App\Entity\CmsPageBlockComposant")->findBy(["cms_page" => $page],["position" => "ASC"]);
  557.         if($mode_residence){
  558.           return $this->render('pages/akaru/residence/'.$cms_template_cible, array('page_versions' => $page_versions'composants' => $composants'page' => $page));
  559.         }else{
  560.           return $this->render('pages/akaru/'.$cms_template_cible, array('page_versions' => $page_versions'composants' => $composants'page' => $page));
  561.         }
  562.         
  563.       }
  564.     } else {
  565.     throw $this->createNotFoundException('The page does not exist');
  566.     }    
  567.   }
  568.   // /**
  569.   //  * @Route("/htmlToPdf", name="htmlToPdf")
  570.   //  * 
  571.   // */
  572.   // public function htmlToPdf(Pdf $knpSnappyPdf)
  573.   // {
  574.   //   $html = $this->renderView(
  575.   //         'emails/customer_newsletter_email.html.twig'
  576.   //   );
  577.   //   return new PdfResponse(
  578.   //       $knpSnappyPdf->getOutputFromHtml($html),
  579.   //       'htmlToPdf.pdf'
  580.   //   );
  581.   // }
  582.   /**
  583.    * @Route("/base", name="base")
  584.    * 
  585.   */
  586.   public function base()
  587.   {
  588.     return $this->render('pages/akaru/base_page.html.twig');
  589.   }
  590.   public function verifRedirectSession()
  591.   {
  592.     $search_params $this->session->get('search_params');
  593.     $booking_cart_sess $this->session->get('booking_cart');
  594.     if( (!$search_params  || !isset($search_params['date_start']) || !isset($search_params['date_end']) || !isset($search_params['duration']) ) && !isset($booking_cart_sess['isGiftCard']) )
  595.     return $this->redirect($this->generateUrl('default_hotel_page', ['hostname' => $_SERVER['HTTP_HOST']]));
  596.     else
  597.     return false;
  598.   }  
  599.   
  600.   public function verifProductNrr($id_product=0)
  601.   {
  602.     $nrr_val false;
  603.     $produit $this->em->getRepository(ProduitThalasso::class)->findOneById($id_product);
  604.     if($produit && $produit->getNrr())
  605.     {
  606.       $nrr_val true;
  607.     }
  608.     return $nrr_val;
  609.   }  
  610.   
  611. }