src/Controller/PrivateController.php line 2166

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Main\ApiAgency;
  4. use App\Entity\Main\ApiAgencyLang;
  5. use App\Entity\Main\ApiAgencyHomeImage;
  6. use App\Entity\Main\ApiFeatures;
  7. use App\Entity\Main\ApiImages;
  8. use App\Entity\Main\ApiLocations;
  9. use App\Entity\Main\ApiMenu;
  10. use App\Entity\Main\ApiOrderPages;
  11. use App\Entity\Main\ApiPropertiesSupertype;
  12. use App\Entity\Main\ApiProperties;
  13. use App\Entity\Main\ApiPropertiesSupertypeI18n;
  14. use App\Entity\Main\ApiProvinces;
  15. use App\Entity\Main\TipusOperacio;
  16. use App\Entity\Main\ApiPages;
  17. use App\Entity\Main\ApiPagesBK;
  18. use App\Entity\Main\ApiPropertiesFeatures;
  19. use App\Entity\Main\ApiPropertiesI18n;
  20. use App\Entity\Main\ApiPropertiesSubtypesI18n;
  21. use App\Entity\Main\PluginGroups;
  22. use App\Entity\Main\Plugins;
  23. use App\Entity\Main\Textos;
  24. use App\Entity\Main\Tracking;
  25. use App\Entity\Main\ApiAgencyHomeAgent;
  26. use App\Entity\Main\ApiAgencyHomeOnepage;
  27. use App\Entity\Main\ApiAgencySlider;
  28. use App\Entity\Admin\AgencyLicense;
  29. use App\Entity\Main\ApiHistory;
  30. use DateTime;
  31. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  32. use Symfony\Component\HttpFoundation\RedirectResponse;
  33. use Symfony\Component\HttpFoundation\Response;
  34. use Symfony\Component\HttpFoundation\Request;
  35. use Symfony\Component\HttpFoundation\JsonResponse;
  36. use Symfony\Component\Routing\Annotation\Route;
  37. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  38. use Doctrine\Persistence\ManagerRegistry;
  39. use App\Service\Utilities;
  40. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  41. /**
  42.  * @Route("/private", priority="1")
  43.  * 
  44.  */
  45. class PrivateController extends AbstractController
  46. {
  47.     private $LICENSE;
  48.     private $DOMINI_APIBCN_FOTOS;
  49.     
  50.     public function __construct()
  51.     {
  52.         $this->LICENSE 'LICA13096_041220';
  53.         $this->DOMINI_APIBCN_FOTOS 'https://imagenes.ghestia.cat/images/webs/'.$this->LICENSE.'/';
  54.     }
  55.     /**
  56.      * @Route("", name="private_page_home", methods={"GET"})
  57.      * @Route("/", name="private_page", methods={"GET"})
  58.      * 
  59.      */
  60.     public function privatePage(Request $requestManagerRegistry $doctrine): Response
  61.     {
  62.         $user $this->getUser();
  63.         if (!$user) {
  64.             return $this->redirectToRoute('app_login');
  65.         }
  66.         $em $doctrine->getManager();
  67.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  68.         $langs $apiAgencyLangRepo->findAll();
  69.         return $this->render('main/private/profile.html.twig', [
  70.             "user" => $user,
  71.             "langs" => $langs,
  72.             "page_active" => "private"
  73.         ]);
  74.     }
  75.     /**
  76.      * @Route("/updateProfile", name="update_profile", methods={"POST"})
  77.      * 
  78.      */
  79.     public function updateProfile(Request $requestManagerRegistry $doctrineUserPasswordEncoderInterface $passwordEncoder): Response
  80.     {
  81.         $user $this->getUser();
  82.         if (!$user) {
  83.             return $this->redirectToRoute('app_login');
  84.         }
  85.         if (!empty($request->getContent())) {
  86.             $post = (array) json_decode($request->getContent());
  87.             if (count($post) == 0) {
  88.                 $post = (array) $request->request->all();
  89.             }
  90.         } else {
  91.             $post = (array) $request->request->all();
  92.         }
  93.         $response = array(
  94.             "status" => "error",
  95.             "type" => "error",
  96.             "message" => "Ocurrió un error"
  97.         );
  98.         $em $doctrine->getManager();
  99.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  100.         $apiPagesRepo $em->getRepository(ApiPages::class);
  101.         $langs $apiAgencyLangRepo->findAll();
  102.         if (key_exists('company'$post)) {
  103.             //Info update
  104.             try {
  105.                 $user->setName($post["company"]);
  106.                 $user->setAddress($post["address0"]);
  107.                 $user->setEmail($post["email"]);
  108.                 $user->setPhone($post["phone"]);
  109.                 $user->setFacebook(isset($post["facebook"])?$post["facebook"]:null);
  110.                 $user->setTwitter(isset($post["twitter"])?$post["twitter"]:null);
  111.                 $user->setLinkedin(isset($post["linkedin"])?$post["linkedin"]:null);
  112.                 $user->setInstagram(isset($post["instagram"])?$post["instagram"]:null);
  113.                 $user->setTiktok(isset($post["tiktok"])?$post["tiktok"]:null);
  114.                 $user->setGoogle(isset($post["google"])?$post["google"]:null);
  115.                 $user->setYoutube(isset($post["youtube"])?$post["youtube"]:null);
  116.                 $user->setDomain(isset($post["domain"])?$post["domain"]:null);
  117.                 //Update lang preferences
  118.                 $findOtherDefault false;
  119.                 $noneVisible 0;
  120.                 $currentDefault "";
  121.                 foreach ($langs as $lang) {
  122.                     if(key_exists('lang_' $lang->getCod(), $post)){
  123.                         $lang->setVisible($post['lang_' $lang->getCod()]);
  124.                         $pagesLang $apiPagesRepo->findBy(array("lang" => $lang->getCod()));
  125.                         foreach ($pagesLang as $pLang) {
  126.                             $pLang->setStatus(1);
  127.                             $em->persist($pLang);
  128.                         }
  129.                     }else{
  130.                         $lang->setVisible(0);
  131.                         $pagesLang $apiPagesRepo->findBy(array("lang" => $lang->getCod()));
  132.                         foreach ($pagesLang as $pLang) {
  133.                             $pLang->setStatus(0);
  134.                             $em->persist($pLang);
  135.                         }
  136.                     }
  137.                     if (key_exists('lang_default'$post)){
  138.                         $currentDefault $post['lang_default'];
  139.                         if ($currentDefault == $lang->getCod()) {
  140.                             $lang->setVisible(1);
  141.                             $lang->setPredeterminado(1);
  142.                             $pagesLang $apiPagesRepo->findBy(array("lang" => $lang->getCod()));
  143.                             foreach ($pagesLang as $pLang) {
  144.                                 $pLang->setStatus(1);
  145.                                 $em->persist($pLang);
  146.                             }
  147.                         } else {
  148.                             $lang->setPredeterminado(0);
  149.                         }
  150.                     }
  151.                     
  152.                     $em->persist($lang);
  153.                 }
  154.                 
  155.                 $em->persist($user);
  156.                 $em->flush();
  157.                 $response = array(
  158.                     "status" => "success",
  159.                     "type" => "success",
  160.                     "message" => "Información actualizada correctamente"
  161.                 );
  162.             } catch (\Exception $e) {
  163.                 if ($_SERVER['APP_DEBUG']) {
  164.                     $response['message_explain'] = $e->getMessage();
  165.                 }
  166.             }
  167.         } else {
  168.             //Password update
  169.             try {
  170.                 //Comprobar que coincideixen els pass
  171.                 $oldPassword $passwordEncoder->encodePassword(
  172.                     $user,
  173.                     $post["oldpass"]
  174.                 );
  175.                 if ($oldPassword == $user->getPassword()) {
  176.                     $password $passwordEncoder->encodePassword(
  177.                         $user,
  178.                         $post["newpass"]
  179.                     );
  180.                     $user->setPassword($password);
  181.                     $em->persist($user);
  182.                     $em->flush();
  183.                     $response = array(
  184.                         "status" => "success",
  185.                         "type" => "success",
  186.                         "message" => "Información actualizada correctamente"
  187.                     );
  188.                 }else{
  189.                     $response = array(
  190.                         "status" => "error",
  191.                         "type" => "error",
  192.                         "message" => "La contraseƱa actual no es correcta"
  193.                     );
  194.                 }
  195.             } catch (\Exception $e) {
  196.                 if ($_SERVER['APP_DEBUG']) {
  197.                     $response['message_explain'] = $e->getMessage();
  198.                 }
  199.             }
  200.         }
  201.         return new JsonResponse($response);
  202.     }
  203.     /**
  204.      * @Route("/design", name="design_page", methods={"GET"})
  205.      * 
  206.      */
  207.     public function designPage(Request $requestManagerRegistry $doctrine): Response
  208.     {
  209.         $user $this->getUser();
  210.        
  211.         if (!$user) {
  212.             return $this->redirectToRoute('app_login');
  213.         }
  214.         $langSubstr substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 02);
  215.         $lang str_replace("-","_",substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 05));
  216.         $em $doctrine->getManager();
  217.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  218.         $apiAgencyHomeImageRepo $em->getRepository(ApiAgencyHomeImage::class);
  219.         $apiTipusOperacioRepo $em->getRepository(TipusOperacio::class);
  220.         $apiPropertiesSupertypeRepo $em->getRepository(ApiPropertiesSupertypeI18n::class);
  221.         $apiProvincesRepo $em->getRepository(ApiProvinces::class);
  222.         $langs $apiAgencyLangRepo->findAll();
  223.         $images $apiAgencyHomeImageRepo->findOneBy(array("id" => $user->getId()));
  224.         $operations $apiTipusOperacioRepo->findOperationsByLang($langSubstr$em);
  225.         $supertype $apiPropertiesSupertypeRepo->findSupertypesByLang($lang$em);
  226.         $provincesCa $apiProvincesRepo->findBy(array("autonomouscommunity" => 9));
  227.         $provinces $apiProvincesRepo->findAll();
  228.         return $this->render('main/private/design.html.twig', [
  229.             "user" => $user,
  230.             "langs" => $langs,
  231.             "images" => $images,
  232.             "operations" => $operations,
  233.             "supertype" => $supertype,
  234.             "provincesCa" => $provincesCa,
  235.             "provinces" => $provinces,
  236.             "lang" => ucfirst($lang)
  237.         ]);
  238.     }
  239.     /**
  240.      * @Route("/updateDesign", name="update_design_page", methods={"POST"})
  241.      * 
  242.      */
  243.     public function updateDesignPage(Request $requestManagerRegistry $doctrine): Response
  244.     {
  245.         $user $this->getUser();
  246.         if (!$user) {
  247.             return $this->redirectToRoute('app_login');
  248.         }
  249.         if (!empty($request->getContent())) {
  250.             $post = (array) json_decode($request->getContent());
  251.             if (count($post) == 0) {
  252.                 $post = (array) $request->request->all();
  253.             }
  254.         } else {
  255.             $post = (array) $request->request->all();
  256.         }
  257.         $em $doctrine->getManager();
  258.         // dd($post);
  259.         $response = array(
  260.             "status" => "error",
  261.             "type" => "error",
  262.             "message" => "Ocurrió un error"
  263.         );
  264.         if (key_exists('primary_color'$post)) {
  265.             $response $this->updateColors($post$em$user);
  266.         } else if (key_exists('newsletter'$post)) {
  267.             $response $this->updateNewsletter($post$em$user);
  268.         } else if (key_exists('banner_url'$post)) {
  269.             $response $this->updateBanner($post$em$user);
  270.         } else if (key_exists('logos'$post)) {
  271.             $response $this->updateLogos($em$user);
  272.         } else if (key_exists('cover'$post)) {
  273.             $response $this->updateCover($em$user);
  274.         }
  275.         return new JsonResponse($response);
  276.     }
  277.     public function updateColors($post$em$user)
  278.     {
  279.         $response = array(
  280.             "status" => "error",
  281.             "type" => "error",
  282.             "message" => "Ocurrió un error"
  283.         );
  284.         // dd($post);
  285.         try {
  286.             $user->setColorPrimary($post['primary_color']);
  287.             $user->setColorSecondary($post['secondary_color']);
  288.             $user->setPrimaryFoot1($post['primary_foot_1']);
  289.             $user->setPrimaryFoot2($post['primary_foot_2']);
  290.             $user->setFilterHeader((isset($post['filter_header']))? $post['filter_header'] : );
  291.             $em->persist($user);
  292.             $em->flush();
  293.             $response = array(
  294.                 "status" => "success",
  295.                 "type" => "success",
  296.                 "message" => "Información actualizada correctamente"
  297.             );
  298.         } catch (\Exception $e) {
  299.             if ($_SERVER['APP_DEBUG']) {
  300.                 $response['message_explain'] = $e->getMessage();
  301.             }
  302.         }
  303.         return $response;
  304.     }
  305.     public function updateNewsletter($post$em$user)
  306.     {
  307.         $response = array(
  308.             "status" => "error",
  309.             "type" => "error",
  310.             "message" => "Ocurrió un error"
  311.         );
  312.         try {
  313.             $user->setNewsletter( ( isset($post['newsletter_check']) && $post['newsletter_check'] == ) ? );
  314.             $em->persist($user);
  315.             $em->flush();
  316.             $response = array(
  317.                 "status" => "success",
  318.                 "type" => "success",
  319.                 "message" => "Información actualizada correctamente"
  320.             );
  321.         } catch (\Exception $e) {
  322.             if ($_SERVER['APP_DEBUG']) {
  323.                 $response['message_explain'] = $e->getMessage();
  324.             }
  325.         }
  326.         return $response;
  327.     }
  328.     public function updateLogos($em$user)
  329.     {
  330.         $response = array(
  331.             "status" => "error",
  332.             "type" => "error",
  333.             "message" => "Ocurrió un error"
  334.         );
  335.         $nombreImg "";
  336.         $logos = [
  337.             'logoMain' => function ($nomImg) use ($user) {
  338.                 $user->setLogo(isset($nomImg) ? $nomImg 'null');
  339.             },
  340.             'logoFav' => function ($nomImg) use ($user) {
  341.                 $user->setLogoFav(isset($nomImg) ? $nomImg 'null');
  342.             },
  343.             'logoMov' => function ($nomImg) use ($user) {
  344.                 $user->setLogoMobileEmail(isset($nomImg) ? $nomImg 'null');
  345.             },
  346.             'logoContact' => function ($nomImg) use ($user) {
  347.                 $user->setLogoContact(isset($nomImg) ? $nomImg 'null');
  348.             },
  349.             'logoIcat' => function ($nomImg) use ($user) {
  350.                 $user->setLogoAicat(isset($nomImg) ? $nomImg 'null');
  351.             },
  352.             'logoAgencia' => function ($nomImg) use ($user) {
  353.                 $user->setLogoAgente(isset($nomImg) ? $nomImg 'null');
  354.             },
  355.             'logoMiembro' => function ($nomImg) use ($user) {
  356.                 $user->setLogoMiembro(isset($nomImg) ? $nomImg 'null');
  357.             }
  358.         ];
  359.         try {
  360.             $callbackImages = [];
  361.             $callbackImagesName = [];
  362.             if (isset($_FILES)) {
  363.                 foreach ($logos as $logo) {
  364.                     $key key($logos);
  365.                     if (isset($_FILES[$key])) {
  366.                         $file $_FILES[$key];
  367.                         $nombreImg $this->typeSelector($file["name"], $file["type"]);
  368.                         if (!$nombreImg) {
  369.                             $response "3";
  370.                             return new JsonResponse($response);
  371.                         }
  372.                         $callbackImagesName[$key] = $nombreImg;
  373.                         $destino 'images/private/design/' $nombreImg;
  374.                         //Save the logo image
  375.                         $moved move_uploaded_file($file['tmp_name'], $destino);
  376.                         $callbackImages[$key] = "/" $destino;
  377.                         //Set the logo image
  378.                         call_user_func($logos[$key], $nombreImg);
  379.                     }
  380.                     next($logos);
  381.                 }
  382.             }
  383.             $em->persist($user);
  384.             $em->flush();
  385.             $response = array(
  386.                 "status" => "success",
  387.                 "type" => "success",
  388.                 "message" => "Información actualizada correctamente",
  389.                 //"reload" => 1,
  390.                 "images" => $callbackImages,
  391.                 "imageName" => $callbackImagesName
  392.             );
  393.         } catch (\Exception $e) {
  394.             if ($_SERVER['APP_DEBUG']) {
  395.                 $response['message_explain'] = $e->getMessage();
  396.             }
  397.         }
  398.         return $response;
  399.     }
  400.     public function updateBanner($post$em$user)
  401.     {
  402.         $response = array(
  403.             "status" => "error",
  404.             "type" => "error",
  405.             "message" => "Ocurrió un error"
  406.         );
  407.         try {
  408.             $callbackImages = [];
  409.             if (isset($_FILES["banner"])) {
  410.                 $nombreImg $this->typeSelector($_FILES["banner"]["name"], $_FILES["banner"]["type"]);
  411.                 if (!$nombreImg) {
  412.                     $response["message"] = "Revise el formato de las imĆ”genes. Permitidos: png, jpeg";
  413.                     return new JsonResponse($response);
  414.                 }
  415.                 $destino 'images/private/design/' $nombreImg;
  416.                 $moved move_uploaded_file($_FILES['banner']['tmp_name'], $destino);
  417.                 if ($moved) {
  418.                     $user->setBanner($nombreImg);
  419.                     $callbackImages["banner"] = "/" $destino;
  420.                 } else {
  421.                     $response["message"] ="Error al guardar la foto";
  422.                     return new JsonResponse($response);
  423.                 }
  424.             }
  425.             $user->setBannerUrl($post['banner_url']);
  426.             $em->persist($user);
  427.             $em->flush();
  428.             $response = array(
  429.                 "status" => "success",
  430.                 "type" => "success",
  431.                 "message" => "Información actualizada correctamente",
  432.                 //"reload" => 1
  433.                 "images" => $callbackImages
  434.             );
  435.         } catch (\Exception $e) {
  436.             if ($_SERVER['APP_DEBUG']) {
  437.                 $response['message_explain'] = $e->getMessage();
  438.             }
  439.         }
  440.         return $response;
  441.     }
  442.     public function updateCover($em$user)
  443.     {
  444.         $response = array(
  445.             "status" => "error",
  446.             "type" => "error",
  447.             "message" => "Ocurrió un error"
  448.         );
  449.         $apiAgencyHomeImageRepo $em->getRepository(ApiAgencyHomeImage::class);
  450.         $images $apiAgencyHomeImageRepo->findOneBy(array("id" => $user->getId()));
  451.         $callbackImages = [];
  452.         try {
  453.             if (isset($_FILES["cover_image"])) {
  454.                 $nombreImg $this->typeSelector($_FILES["cover_image"]["name"], $_FILES["cover_image"]["type"]);
  455.                 if (!$nombreImg) {
  456.                     $response["message"] = "Revise el formato de las imĆ”genes. Permitidos: png, jpeg";
  457.                     return new JsonResponse($response);
  458.                 }
  459.                 $destino 'images/private/design/' $nombreImg;
  460.                 $moved move_uploaded_file($_FILES['cover_image']['tmp_name'], $destino);
  461.                 if ($moved) {
  462.                     $images->setImage1($nombreImg);
  463.                     $callbackImages["coverImage"] = "/" $destino;
  464.                 } else {
  465.                     $response["message"] = "Error al guardar la foto";
  466.                     return new JsonResponse($response);
  467.                 }
  468.             } 
  469.             
  470.             if (isset($_FILES["cover_video"])) {
  471.                 $nombreVideo $this->typeSelector($_FILES["cover_video"]["name"], $_FILES["cover_video"]["type"]);
  472.                 if (!$nombreVideo) {
  473.                     $response["message"] = "Revise el formato del video. Permitidos: mp4, mov";
  474.                     return new JsonResponse($response);
  475.                 }
  476.                 $destino 'images/private/design/' $nombreVideo;
  477.                 $moved move_uploaded_file($_FILES['cover_video']['tmp_name'], $destino);
  478.                 if ($moved) {
  479.                     $images->setLink1($nombreVideo);
  480.                     $callbackImages["coverVideo"] = "/" $destino;
  481.                 } else {
  482.                     $response["message"] = "Error al guardar la vĆ­deo";
  483.                     return new JsonResponse($response);
  484.                 }
  485.             }
  486.             $em->persist($images);
  487.             $em->flush();
  488.             $response = array(
  489.                 "status" => "success",
  490.                 "type" => "success",
  491.                 "message" => "Información actualizada correctamente",
  492.                 //"reload" => 1
  493.                 "images" => $callbackImages
  494.             );
  495.         } catch (\Exception $e) {
  496.             if ($_SERVER['APP_DEBUG']) {
  497.                 $response['message_explain'] = $e->getMessage();
  498.             }
  499.         }
  500.         return $response;
  501.     }
  502.     /**
  503.      * @Route("/deleteVideo", name="private_delete_video", methods={"GET"})
  504.      * 
  505.      */
  506.     public function deleteVideo(Request $requestManagerRegistry $doctrine)
  507.     {
  508.         $user $this->getUser();
  509.         $em $doctrine->getManager();
  510.         $response = array(
  511.             "status" => "error",
  512.             "type" => "error",
  513.             "message" => "Ocurrió un error"
  514.         );
  515.         $fileName $request->get('file');
  516.         $imgType $request->get('type');
  517.         //TYPE -> 1 = images / 0 = user
  518.         // dd($imgType);
  519.         if ($imgType == 1) {
  520.             $apiAgencyHomeImageRepo $em->getRepository(ApiAgencyHomeImage::class);
  521.             $images $apiAgencyHomeImageRepo->findOneBy(array("id" => $user->getId()));
  522.             try{
  523.                 $images->setLink1(NULL);
  524.             
  525.                 $em->persist($images);
  526.                 $em->flush();
  527.     
  528.                 $videoPath 'images/private/design/'.$fileName;
  529.                 unlink($videoPath);
  530.             }catch(\Exception $e){
  531.                 return new JsonResponse($response);
  532.             }
  533.             
  534.             $response = array(
  535.                 "status" => "success",
  536.                 "type" => "success",
  537.                 "message" => "Información actualizada correctamente"
  538.             );
  539.         } else if ($imgType == 0) {
  540.         }
  541.         return new JsonResponse($response);
  542.     }
  543.     /**
  544.      * @Route("/deleteImage", name="private_delete_image", methods={"GET"})
  545.      * 
  546.      */
  547.     public function deleteImage(Request $requestManagerRegistry $doctrine)
  548.     {
  549.         $user $this->getUser();
  550.         $em $doctrine->getManager();
  551.         $response = array(
  552.             "status" => "error",
  553.             "type" => "error",
  554.             "message" => "Ocurrió un error"
  555.         );
  556.         $fileName $request->get('file');
  557.         $imgType $request->get('type');
  558.         //TYPE -> 2 = media images / 1 = images / 0 = user
  559.         // dd($imgType);
  560.         if ($imgType == 1) {
  561.             $apiAgencyHomeImageRepo $em->getRepository(ApiAgencyHomeImage::class);
  562.             $images $apiAgencyHomeImageRepo->findOneBy(array("id" => $user->getId()));
  563.             try{
  564.                 $images->setImage1(NULL);
  565.                 $em->persist($images);
  566.                 $em->flush();
  567.     
  568.                 $imgPath 'images/private/design/'.$fileName;
  569.                 unlink($imgPath);
  570.             }catch(\Exception $e){
  571.                 return new JsonResponse($response);
  572.             }
  573.         } else if ($imgType == 0) {
  574.             try{
  575.                 if($user->getLogo() == $fileName){
  576.                     $user->setLogo(NULL);
  577.                 }else if($user->getLogoMobileEmail() == $fileName){
  578.                     $user->setLogoMobileEmail(NULL);
  579.                 }else if($user->getLogoContact() == $fileName){
  580.                     $user->setLogoContact(NULL);
  581.                 }else if($user->getLogoFav() == $fileName){
  582.                     $user->setLogoFav(NULL);
  583.                 }else if($user->getLogoAicat() == $fileName){
  584.                     $user->setLogoAicat(NULL);
  585.                 }else if($user->getLogoAgente() == $fileName){
  586.                     $user->setLogoAgente(NULL);
  587.                 }else if($user->getLogoMiembro() == $fileName){
  588.                     $user->setLogoMiembro(NULL);
  589.                 }else if($user->getBanner() == $fileName){
  590.                     $user->setBanner(NULL);
  591.                 }
  592.     
  593.                 $em->persist($user);
  594.                 $em->flush();
  595.     
  596.                 $imgPath 'images/private/design/'.$fileName;
  597.                 unlink($imgPath);
  598.             }catch(\Exception $e){
  599.                 return new JsonResponse($response);
  600.             }
  601.         }else if($imgType == 2){
  602.             try{
  603.                 $imageId $request->get('imageId');
  604.                 $apiImagesRepo $em->getRepository(ApiImages::class);
  605.                 $image $apiImagesRepo->findOneBy(array("id" => $imageId));
  606.                 $em->remove($image);
  607.                 $em->flush();
  608.                 
  609.                 $imgPath 'images/web/'.$image->getName().".".$image->getType();
  610.                 
  611.                 unlink($imgPath);
  612.             }catch(\Exception $e){
  613.                 return new JsonResponse($response);
  614.             }
  615.         }
  616.         $response = array(
  617.             "status" => "success",
  618.             "type" => "success",
  619.             "message" => "Información actualizada correctamente"
  620.         );
  621.         return new JsonResponse($response);
  622.     }
  623.     /**
  624.      * @Route("/content", name="content_page", methods={"GET"})
  625.      * 
  626.      */
  627.     public function contentPage(Request $requestManagerRegistry $doctrine): Response
  628.     {
  629.         $user $this->getUser();
  630.         if (!$user) {
  631.             return $this->redirectToRoute('app_login');
  632.         }
  633.         $em $doctrine->getManager();
  634.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  635.         $apiPagesRepo $em->getRepository(ApiPages::class);
  636.         $langs $apiAgencyLangRepo->findBy(array("visible" => 1));
  637.         $langPredeterminado $apiAgencyLangRepo->findOneBy(array("predeterminado" => 1));
  638.         $pages $apiPagesRepo->findBy(array("lang"=>$langPredeterminado));
  639.         // dd($pages);
  640.         return $this->render('main/private/content.html.twig', [
  641.             "user" => $user,
  642.             "langs" => $langs,
  643.             "pages" => $pages,
  644.             "page_active" => "content",
  645.             "predeterminado" => $langPredeterminado
  646.         ]);
  647.     }
  648.     /**
  649.      * @Route("/content/delete/{group_id}", name="content_delete_page", methods={"GET"})
  650.      * 
  651.      */
  652.     public function pageDelete(Request $requestManagerRegistry $doctrine$group_id){
  653.         $user $this->getUser();
  654.         if (!$user) {
  655.             return $this->redirectToRoute('app_login');
  656.         }
  657.         $em $doctrine->getManager();
  658.         $apiPagesRepo $em->getRepository(ApiPages::class);
  659.         $apiPagesBKRepo $em->getRepository(ApiPagesBK::class);
  660.         $apiOrderPagesRepo $em->getRepository(ApiOrderPages::class);
  661.         $historyRepo $em->getRepository(ApiHistory::class);
  662.         try{
  663.             $toDelete =  $apiPagesRepo->findBy(array("groupPage" => $group_id));
  664.             foreach($toDelete as $delete){
  665.                 $pageBK $apiPagesBKRepo->findBy(array("page" => $delete));
  666.                 // dd($pageBK);
  667.                 if($pageBK ){
  668.                     foreach($pageBK as $pBK){
  669.                         $em->remove($pBK);
  670.                         $em->flush();
  671.                     }
  672.                 }
  673.                 //Borramos las paginas hijas del menu
  674.                 $childs $apiOrderPagesRepo->findBy(array("parentId" => $delete->getId()));
  675.                 if($childs){
  676.                     foreach($childs as $child){
  677.                         $em->remove($child);
  678.                         $em->flush();
  679.                     }
  680.                 }
  681.                 //Borramos la pagina del menu
  682.                 $parentPage $apiOrderPagesRepo->findOneBy(array("page" => $delete));
  683.                 if($parentPage)$em->remove($parentPage);
  684.                 //borramos historial
  685.                 $history $historyRepo->findOneBy(array("page" => $delete));
  686.                 if($history)$em->remove($history);
  687.                 $em->remove($delete);
  688.             }
  689.             $em->flush();
  690.             // dd($toDelete);
  691.             $response = array(
  692.                 "status" => "success",
  693.                 "type" => "success",
  694.                 "message" => "Información actualizada correctamente"
  695.             );
  696.         }catch(\Exception $e){
  697.             $response = array(
  698.                 "status" => "error",
  699.                 "type" => "error",
  700.                 "message" => $e->getMessage()
  701.             );
  702.             return new JsonResponse($response);
  703.         }
  704.         return new JsonResponse($response);
  705.     }
  706.     /**
  707.      * @Route("/content/change/status", name="content_change_status", methods={"POST"})
  708.      * 
  709.      */
  710.     public function pageChangeStatus(Request $requestManagerRegistry $doctrine){
  711.         $user $this->getUser();
  712.         if (!$user) {
  713.             return $this->redirectToRoute('app_login');
  714.         }
  715.         $status $request->get("status");
  716.         $id $request->get("id");
  717.         $response = new JsonResponse();
  718.         $em $doctrine->getManager();
  719.         $apiPagesRepo $em->getRepository(ApiPages::class);
  720.         try{
  721.             $toChangeStatus =  $apiPagesRepo->findOneBy(array("id" => $id));
  722.             $toChangeStatus->setStatus($status);
  723.             $em->persist($toChangeStatus);
  724.             $em->flush();
  725.             $response->setStatusCode(200);
  726.             $response->setData(array(
  727.                 "status" => "success",
  728.             ));
  729.         }catch(\Exception $e){
  730.             $response->setStatusCode(500);
  731.             $response->setData(array(
  732.                 "status" => "failed",
  733.             ));
  734.         }
  735.         return $response;
  736.     }
  737.     /**
  738.      * @Route("/page/edit/new", name="private_page_edit_new", methods={"GET"})
  739.      * 
  740.      */
  741.     public function pageEditNew(Request $requestManagerRegistry $doctrine)
  742.     {
  743.         $user $this->getUser();
  744.         if (!$user) {
  745.             return $this->redirectToRoute('app_login');
  746.         }
  747.         $em $doctrine->getManager();
  748.         $apiAgencyRepo $em->getRepository(ApiAgency::class);
  749.         $lang $em->getRepository(ApiAgencyLang::class)->findOneBy(array("predeterminado" => 1));
  750.         $allImages $em->getRepository(ApiImages::class)->findBy( array(), array('id' => 'DESC') );
  751.         $imagenes = array();
  752.         $textosDate $em->getRepository(Textos::class)->getDateTexts($lang->getCod());
  753.         $agency $apiAgencyRepo->findOneBy(array());
  754.         foreach($allImages as $img){
  755.             $newImage = array();
  756.             $newImage["id"] = $img->getId();
  757.             $newImage["name"] = $img->getName();
  758.             $newImage["size"] = $img->getSize();
  759.             $newImage["proportions"] = $img->getProportions();
  760.             $newImage["date"] = date_format($img->getDate(), "d/m/Y");
  761.             $newImage["url"] = (empty($_SERVER['HTTPS']) ? 'http' 'https') . "://$_SERVER[HTTP_HOST]"."/images/web/".$img->getName().".".$img->getType();
  762.             $newImage["src"] = "/images/web/".$img->getName().".".$img->getType();
  763.             
  764.             array_push($imagenes$newImage);
  765.         }
  766.         return $this->render('main/private/pages/new.html.twig', [
  767.             "user" => $user,
  768.             "lang" => $lang,
  769.             "agency" => $agency,
  770.             "imagenes" => $imagenes,
  771.             "dateTexts" => json_encode($textosDate),
  772.         ]);
  773.     }
  774.     /**
  775.      * @Route("/page/edit/{id}", name="private_page_edit", methods={"GET"})
  776.      * 
  777.      */
  778.     public function pageEdit(Request $requestManagerRegistry $doctrine$id)
  779.     {
  780.         $user $this->getUser();
  781.         if (!$user) {
  782.             return $this->redirectToRoute('app_login');
  783.         }
  784.         $em $doctrine->getManager();
  785.         $apiAgencyRepo $em->getRepository(ApiAgency::class);
  786.         $lang $em->getRepository(ApiAgencyLang::class)->findBy([]);
  787.         $langPredeterminada $em->getRepository(ApiAgencyLang::class)->findOneBy(array("predeterminado" => 1));
  788.         $page $em->getRepository(ApiPages::class)->findOneBy(array("id" => $id));
  789.         
  790.         if($page){
  791.             $otherPage $em->getRepository(ApiPages::class)->findBy(array("groupPage" => $page->getGroupPage()));
  792.             $allImages $em->getRepository(ApiImages::class)->findAll();
  793.             $imagenes = array();
  794.             $agency $apiAgencyRepo->findOneBy(array());
  795.             $textosDate $em->getRepository(Textos::class)->getDateTexts($langPredeterminada->getCod());
  796.             foreach($allImages as $img){
  797.                 $newImage = array();
  798.                 $newImage["id"] = $img->getId();
  799.                 $newImage["name"] = $img->getName();
  800.                 $newImage["size"] = $img->getSize();
  801.                 $newImage["proportions"] = $img->getProportions();
  802.                 $newImage["date"] = date_format($img->getDate(), "d/m/Y");
  803.                 $newImage["url"] = (empty($_SERVER['HTTPS']) ? 'http' 'https') . "://$_SERVER[HTTP_HOST]"."/images/web/".$img->getName().".".$img->getType();
  804.                 $newImage["src"] = "/images/web/".$img->getName().".".$img->getType();
  805.                 array_push($imagenes$newImage);
  806.             }
  807.             
  808.             $history $em->getRepository(ApiHistory::class)->findOneBy(array("page" => $page));
  809.             return $this->render('main/private/pages/edit.html.twig', [
  810.                 "user" => $user,
  811.                 "page" => $page,
  812.                 "other_page" => $otherPage,
  813.                 "lang" => $lang,
  814.                 "agency" => $agency,
  815.                 "imagenes" => $imagenes,
  816.                 "dateTexts" => json_encode($textosDate),
  817.                 "default" => $page->getDefaultPage(),
  818.                 "history" => $history
  819.             ]);
  820.         }else{
  821.             $response = new JsonResponse();
  822.             $response->setStatusCode(404);
  823.             $response->setData(array(
  824.                 "status" => "failed",
  825.                 "data" => "No page found"
  826.             ));
  827.         }
  828.     }
  829.     /**
  830.      * @Route("/restore", name="private_restore_history", methods={"POST"})
  831.      * 
  832.      */
  833.     public function restoreHistory(Request $requestManagerRegistry $doctrine){
  834.         $user $this->getUser();
  835.         if (!$user) {
  836.             return $this->redirectToRoute('app_login');
  837.         }
  838.         if (!empty($request->getContent())) {
  839.             $post = (array) json_decode($request->getContent());
  840.             if (count($post) == 0) {
  841.                 $post = (array) $request->request->all();
  842.             }
  843.         } else {
  844.             $post = (array) $request->request->all();
  845.         }
  846.         // dd($post);
  847.         $em $doctrine->getManager();   
  848.         $page $em->getRepository(ApiPages::class)->find($post["pageId"]);
  849.         $pageHistory $em->getRepository(ApiHistory::class)->findOneBy(array("page" => $page));
  850.         try{
  851.             switch($post["version"]){
  852.                 case "version1":
  853.                     $page->setJsonBack($pageHistory->getVersion1JsonBack());
  854.                     $page->setStrHtml($pageHistory->getVersion1StrHtml());
  855.                     break;
  856.                 case "version2":
  857.                     $page->setJsonBack($pageHistory->getVersion2JsonBack());
  858.                     $page->setStrHtml($pageHistory->getVersion2StrHtml());
  859.                     break;
  860.                 case "version3":
  861.                     $page->setJsonBack($pageHistory->getVersion3JsonBack());
  862.                     $page->setStrHtml($pageHistory->getVersion3StrHtml());
  863.                     break;
  864.                 case "version4":
  865.                     $page->setJsonBack($pageHistory->getVersion4JsonBack());
  866.                     $page->setStrHtml($pageHistory->getVersion4StrHtml());
  867.                     break;
  868.                 case "version5":
  869.                     $page->setJsonBack($pageHistory->getVersion5JsonBack());
  870.                     $page->setStrHtml($pageHistory->getVersion5StrHtml());
  871.                     break;
  872.             }
  873.             $em->persist($page);
  874.             $em->flush();
  875.         }catch(\Exception $e){
  876.             return new JsonResponse([
  877.                 "status" => "error",
  878.                 "message" => $e
  879.             ]);
  880.         }
  881.         
  882.         return new JsonResponse([
  883.             "status" => "success"
  884.         ]);
  885.     }
  886.      /**
  887.      * @Route("/page/copy/{id}", name="private_page_copy", methods={"GET"})
  888.      * 
  889.      */
  890.     public function pageCopy(Request $requestManagerRegistry $doctrine$id): Response
  891.     {
  892.         $user $this->getUser();
  893.         if (!$user) {
  894.             return $this->redirectToRoute('app_login');
  895.         }
  896.         $em $doctrine->getManager();
  897.         $pagesRepo $em->getRepository(ApiPages::class);
  898.         $langPredeterminada $em->getRepository(ApiAgencyLang::class)->findOneBy(array("predeterminado" => 1));
  899.         try{
  900.             $paginaActual $pagesRepo->findOneBy(array("id" => $id));
  901.             $paginaIdiomaDefault $pagesRepo->findOneBy(array("lang" => $langPredeterminada"groupPage" => $paginaActual->getGroupPage()));
  902.             $pageBK = new ApiPagesBK();
  903.             $pageBK->setLang($paginaActual->getLang());
  904.             $pageBK->setPage($paginaActual);
  905.             $pageBK->setGroupPage($paginaActual->getGroupPage());
  906.             $pageBK->setSlug($paginaActual->getSlug());
  907.             $pageBK->setTitle($paginaActual->getTitle());
  908.             $pageBK->setStrHtml($paginaActual->getStrHtml());
  909.             $pageBK->setJsonBack($paginaActual->getJsonBack());
  910.             $pageBK->setDateCreated(new \DateTime());
  911.             $pageBK->setStatus($paginaActual->getStatus());
  912.             $em->persist($pageBK);
  913.             $paginaActual->setTitle($paginaIdiomaDefault->getTitle());
  914.             $paginaActual->setStrHtml($paginaIdiomaDefault->getStrHtml());
  915.             $paginaActual->setJsonBack($paginaIdiomaDefault->getJsonBack());
  916.             $em->persist($paginaActual);
  917.             $em->flush();
  918.         }catch(\Exception $e){
  919.             return new JsonResponse([
  920.                 "status" => "error",
  921.                 "message" => "Error al copiar"
  922.             ]);
  923.         }
  924.         return new JsonResponse([
  925.             "status" => "success",
  926.             "message" => "Copiado correctamente",
  927.             "id" => $paginaActual->getId()
  928.         ]);
  929.     }
  930.     /**
  931.      * @Route("/page/save", name="save_page", methods={"POST"})
  932.      * 
  933.      */
  934.     public function savePage(Request $requestManagerRegistry $doctrine): Response
  935.     {
  936.         $user $this->getUser();
  937.         if (!$user) {
  938.             return $this->redirectToRoute('app_login');
  939.         }
  940.         if (!empty($request->getContent())) {
  941.             $post = (array) json_decode($request->getContent());
  942.             if (count($post) == 0) {
  943.                 $post = (array) $request->request->all();
  944.             }
  945.         } else {
  946.             $post = (array) $request->request->all();
  947.         }
  948.         $em $doctrine->getManager();        
  949.         if(isset($post["id"]) && $post["id"] != "" && $post["id"] != " "){
  950.             $page $em->getRepository(ApiPages::class)->find($post["id"]);
  951.             if($page){
  952.                 $existsSlug $em->getRepository(ApiPages::class)->findOneBy(["slug" => $post["slug"]]);
  953.                 if($existsSlug && $page->getId() != $existsSlug->getId()){
  954.                     $response = new JsonResponse();
  955.                     $response->setStatusCode(200);
  956.                     $response->setData(array(
  957.                         "status" => "error",
  958.                         "message" => "Este slug ya existe"
  959.                     ));
  960.                     return $response;
  961.                 }
  962.                 $em->flush();
  963.                 //Save BK page
  964.                 $pageBK = new ApiPagesBK();
  965.                 $pageBK->setLang($page->getLang());
  966.                 $pageBK->setPage($page);
  967.                 $pageBK->setGroupPage($page->getGroupPage());
  968.                 $pageBK->setSlug($page->getSlug());
  969.                 $pageBK->setTitle($page->getTitle());
  970.                 $pageBK->setStrHtml($page->getStrHtml());
  971.                 $pageBK->setJsonBack($page->getJsonBack());
  972.                 $pageBK->setDateCreated(new \DateTime());
  973.                 $pageBK->setStatus($page->getStatus());
  974.                 $em->persist($pageBK);
  975.                 $em->flush();
  976.                 //Update info page
  977.                 $page->setLang($post["lang"]);
  978.                 if(!$page->getDefaultPage()){
  979.                     $page->setSlug($post["slug"]);
  980.                     $page->setTitle($post["name"]);
  981.                 }
  982.                 $page->setStrHtml($post["html"]);
  983.                 $page->setJsonBack($post["json"]);
  984.                 // $page->setDefaultPage(0);
  985.                 $em->persist($page);
  986.                 $em->flush();
  987.                 $groupId $page->getId();
  988.                 //History version
  989.                 $pageHistory $em->getRepository(ApiHistory::class)->findOneBy(array("page" => $page));
  990.                 $historyKey "";
  991.                 if($pageHistory){
  992.                     foreach((array)$pageHistory as $key => $history){
  993.                         if($pageHistory->getLastVersion() == $history){
  994.                             $historyKey $key;
  995.                             break;
  996.                         }
  997.                     }
  998.                     $realKey substr($historyKey28);
  999.                     switch($realKey){
  1000.                         case "version1JsonBack":
  1001.                             $pageHistory->setVersion2JsonBack($page->getJsonBack());
  1002.                             $pageHistory->setVersion2StrHtml($page->getStrHtml());
  1003.                             $pageHistory->setLastVersion($page->getJsonBack());
  1004.                             $pageHistory->setVersion2DateCreated(new \DateTime());
  1005.                             break;
  1006.                         case "version2JsonBack":
  1007.                             $pageHistory->setVersion3JsonBack($page->getJsonBack());
  1008.                             $pageHistory->setVersion3StrHtml($page->getStrHtml());
  1009.                             $pageHistory->setLastVersion($page->getJsonBack());
  1010.                             $pageHistory->setVersion3DateCreated(new \DateTime());
  1011.                             break;
  1012.                         case "version3JsonBack":
  1013.                             $pageHistory->setVersion4JsonBack($page->getJsonBack());
  1014.                             $pageHistory->setVersion4StrHtml($page->getStrHtml());
  1015.                             $pageHistory->setLastVersion($page->getJsonBack());
  1016.                             $pageHistory->setVersion4DateCreated(new \DateTime());
  1017.                             break;
  1018.                         case "version4JsonBack":
  1019.                             $pageHistory->setVersion5JsonBack($page->getJsonBack());
  1020.                             $pageHistory->setVersion5StrHtml($page->getStrHtml());
  1021.                             $pageHistory->setLastVersion($page->getJsonBack());
  1022.                             $pageHistory->setVersion5DateCreated(new \DateTime());
  1023.                             break;
  1024.                         case "version5JsonBack":
  1025.                             $pageHistory->setVersion1JsonBack($page->getJsonBack());
  1026.                             $pageHistory->setVersion1StrHtml($page->getStrHtml());
  1027.                             $pageHistory->setLastVersion($page->getJsonBack());
  1028.                             $pageHistory->setVersion1DateCreated(new \DateTime());
  1029.                             break;
  1030.                     }
  1031.                     $em->persist($pageHistory);
  1032.                 }else{
  1033.                     $history = new ApiHistory();
  1034.                     $history->setVersion1JsonBack($page->getJsonBack());
  1035.                     $history->setVersion1StrHtml($page->getStrHtml());
  1036.                     $history->setPage($page);
  1037.                     $history->setLastVersion($page->getJsonBack());
  1038.                     $history->setVersion1DateCreated(new \DateTime());
  1039.                     $em->persist($history);
  1040.                 }
  1041.                 $em->flush();
  1042.             }else{
  1043.                 $response = new JsonResponse();
  1044.                 $response->setStatusCode(500);
  1045.                 $response->setData(array(
  1046.                     "status" => "error",
  1047.                     "message" => "Ha habido un error"
  1048.                 ));
  1049.                 return $response;
  1050.             }
  1051.         }else{
  1052.             $existsSlug $em->getRepository(ApiPages::class)->find($post["slug"]);
  1053.             if($existsSlug){
  1054.                 $response = new JsonResponse();
  1055.                 $response->setStatusCode(200);
  1056.                 $response->setData(array(
  1057.                     "status" => "error",
  1058.                     "message" => "Este slug ya existe"
  1059.                 ));
  1060.                 return $response;
  1061.             }
  1062.             $page = new ApiPages();
  1063.             $page->setLang($post["lang"]);
  1064.             $page->setSlug($post["slug"]);
  1065.             $page->setTitle($post["name"]);
  1066.             $page->setStrHtml($post["html"]);
  1067.             $page->setJsonBack($post["json"]);
  1068.             $page->setDateCreated(new \DateTime());
  1069.             $page->getDefaultPage(0);
  1070.             $page->setStatus(1);
  1071.             $em->persist($page);
  1072.             $em->flush();
  1073.             $groupId $page->getId();
  1074.             $page->setGroupPage($groupId);
  1075.             $em->persist($page);
  1076.             $em->flush();
  1077.             $history = new ApiHistory();
  1078.             $history->setVersion1JsonBack($page->getJsonBack());
  1079.             $history->setVersion1StrHtml($page->getStrHtml());
  1080.             $history->setVersion1DateCreated(new \DateTime());
  1081.             $history->setPage($page);
  1082.             $history->setLastVersion($page->getJsonBack());
  1083.             $em->persist($history);
  1084.             $em->flush();
  1085.             $langs $em->getRepository(ApiAgencyLang::class)->findBy([]);
  1086.             foreach($langs as $lang){
  1087.                 if($lang->getCod() != $post["lang"]){
  1088.                     $page = new ApiPages();
  1089.                     $page->setLang($lang->getCod());
  1090.                     $page->setSlug($post["slug"]."-".$lang->getCod());
  1091.                     $page->setTitle($post["name"]);
  1092.                     $page->setStrHtml('');
  1093.                     $page->setJsonBack('[]');
  1094.                     $page->setDateCreated(new \DateTime());
  1095.                     $page->setGroupPage($groupId);
  1096.                     $page->setStatus(1);
  1097.                     $em->persist($page);
  1098.                     $em->flush();
  1099.                 }
  1100.             }
  1101.         }
  1102.         $jsonBack json_decode($post["json"]);
  1103.         foreach($jsonBack as $object){
  1104.             if($object->id == "home"){
  1105.                 if(property_exists($object"valueJSON")){
  1106.                     $valueJSON = (array) $object->valueJSON;
  1107.                     switch($valueJSON["theme"]){
  1108.                         case 'homemap':
  1109.                         case 'superprop':
  1110.                             break;
  1111.                         case 'agency':
  1112.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1113.                             foreach($apiAgencySlider as $aas){
  1114.                                 $em->remove($aas);
  1115.                             }
  1116.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1117.                                 foreach($valueJSON[$valueJSON["theme"]] as $key => $value){
  1118.                                     switch($key){
  1119.                                         case "image-".$object->hash[0]."-agency-1":
  1120.                                             $apiAgencySlider = new ApiAgencySlider();
  1121.                                             $apiAgencySlider->setImage($value);
  1122.                                             $apiAgencySlider->setNorder(1);
  1123.                                             $apiAgencySlider->setVideo(0);
  1124.                                             $em->persist($apiAgencySlider);
  1125.                                             break;
  1126.                                         case "image-".$object->hash[0]."-agency-2":
  1127.                                             $apiAgencySlider = new ApiAgencySlider();
  1128.                                             $apiAgencySlider->setImage($value);
  1129.                                             $apiAgencySlider->setNorder(2);
  1130.                                             $apiAgencySlider->setVideo(0);
  1131.                                             $em->persist($apiAgencySlider);
  1132.                                             break;
  1133.                                         case "image-".$object->hash[0]."-agency-3":
  1134.                                             $apiAgencySlider = new ApiAgencySlider();
  1135.                                             $apiAgencySlider->setImage($value);
  1136.                                             $apiAgencySlider->setNorder(3);
  1137.                                             $apiAgencySlider->setVideo(0);
  1138.                                             $em->persist($apiAgencySlider);
  1139.                                             break;
  1140.                                         case "image-".$object->hash[0]."-agency-4":
  1141.                                             $apiAgencySlider = new ApiAgencySlider();
  1142.                                             $apiAgencySlider->setImage($value);
  1143.                                             $apiAgencySlider->setNorder(4);
  1144.                                             $apiAgencySlider->setVideo(0);
  1145.                                             $em->persist($apiAgencySlider);
  1146.                                             break;
  1147.                                     }
  1148.                                 }
  1149.                             }
  1150.                             $em->flush();
  1151.                             break;
  1152.                         case 'portal':
  1153.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1154.                             foreach($apiAgencySlider as $aas){
  1155.                                 $em->remove($aas);
  1156.                             }
  1157.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1158.                                 foreach($valueJSON[$valueJSON["theme"]] as $key => $value){
  1159.     
  1160.                                     switch($key){
  1161.                                         case "image-".$object->hash[0]."-portal-1":
  1162.                                             $apiAgencySlider = new ApiAgencySlider();
  1163.                                             $apiAgencySlider->setImage($value);
  1164.                                             $apiAgencySlider->setNorder(1);
  1165.                                             $apiAgencySlider->setVideo(0);
  1166.                                             $em->persist($apiAgencySlider);
  1167.                                             break;
  1168.                                     }
  1169.                                 }
  1170.                             }
  1171.                             $em->flush();
  1172.                             break;
  1173.                         case 'agent':
  1174.                             $apiAgencyHomeAgent $em->getRepository(ApiAgencyHomeAgent::class)->findOneBy(array("lang" => $post["lang"]));
  1175.                             if(!$apiAgencyHomeAgent){
  1176.                                 $apiAgencyHomeAgent = new ApiAgencyHomeAgent(); 
  1177.                                 $apiAgencyHomeAgent->setLang($post["lang"]);
  1178.                             }
  1179.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1180.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1181.                                 $apiAgencyHomeAgent->setTitle($obj["title-agent"]);
  1182.                                 $apiAgencyHomeAgent->setName($obj["name-agent"]);
  1183.                                 $apiAgencyHomeAgent->setLink($obj["link-agent"]);
  1184.                                 $apiAgencyHomeAgent->setDescription($obj["text-".$object->hash[0]."-agent"]);
  1185.                                 $apiAgencyHomeAgent->setJob($obj["charge-agent"]);
  1186.                                 $apiAgencyHomeAgent->setImageMain1($obj["image-".$object->hash[0]."-agent-1"]);
  1187.                                 $apiAgencyHomeAgent->setImageMain2($obj["image-".$object->hash[0]."-agent-2"]);
  1188.                                 $apiAgencyHomeAgent->setImagePersonal($obj["image-".$object->hash[0]."-agent-3"]);
  1189.                                 $em->persist($apiAgencyHomeAgent);
  1190.                                 $em->flush();
  1191.                             }
  1192.                             break;
  1193.                         case 'corporate':
  1194.                             $apiAgencyHomeImage $em->getRepository(apiAgencyHomeImage::class)->findOneBy(array());
  1195.                             if(!$apiAgencyHomeImage){
  1196.                                 $apiAgencyHomeImage = new apiAgencyHomeImage(); 
  1197.                             }
  1198.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1199.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1200.                                 $apiAgencyHomeImage->setImage1($obj["image-".$object->hash[0]."-corporate-1"]);
  1201.                                 $apiAgencyHomeImage->setImage2($obj["image-".$object->hash[0]."-corporate-2"]);
  1202.                                 $apiAgencyHomeImage->setImage3($obj["image-".$object->hash[0]."-corporate-3"]);
  1203.                                 $apiAgencyHomeImage->setImage4($obj["image-".$object->hash[0]."-corporate-4"]);
  1204.                                 $apiAgencyHomeImage->setImage5($obj["image-".$object->hash[0]."-corporate-5"]);
  1205.                                 $apiAgencyHomeImage->setImage6($obj["image-".$object->hash[0]."-corporate-6"]);
  1206.                                 $apiAgencyHomeImage->setLink1($obj["link-corporate-1"]);
  1207.                                 $apiAgencyHomeImage->setLink2($obj["link-corporate-2"]);
  1208.                                 $apiAgencyHomeImage->setLink3($obj["link-corporate-3"]);
  1209.                                 $apiAgencyHomeImage->setLink4($obj["link-corporate-4"]);
  1210.                                 $apiAgencyHomeImage->setLink5($obj["link-corporate-5"]);
  1211.                                 $apiAgencyHomeImage->setLink6($obj["link-corporate-6"]);
  1212.                                 $em->persist($apiAgencyHomeImage);
  1213.                                 $em->flush();
  1214.                             }
  1215.                             break;
  1216.                         case 'geoloc':
  1217.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1218.                             foreach($apiAgencySlider as $aas){
  1219.                                 $em->remove($aas);
  1220.                             }
  1221.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1222.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1223.                                 $apiAgencySlider = new ApiAgencySlider();
  1224.                                 $apiAgencySlider->setImage($obj["image-".$object->hash[0]."-geoloc-1"]);
  1225.                                 $apiAgencySlider->setNorder(1);
  1226.                                 $apiAgencySlider->setVideo(0);
  1227.                                 $em->persist($apiAgencySlider);
  1228.                                 $em->flush();
  1229.                             }
  1230.                             break;
  1231.                         case 'lateralscroll':
  1232.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1233.                             foreach($apiAgencySlider as $aas){
  1234.                                 $em->remove($aas);
  1235.                             }
  1236.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1237.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1238.                                 $apiAgencySlider = new ApiAgencySlider();
  1239.                                 $apiAgencySlider->setImage($obj["image-".$object->hash[0]."-lateralscroll-1"]);
  1240.                                 $apiAgencySlider->setNorder(1);
  1241.                                 $apiAgencySlider->setVideo(0);
  1242.                                 $em->persist($apiAgencySlider);
  1243.                                 $em->flush();
  1244.                             }
  1245.                             break;
  1246.                         case 'megaimage':
  1247.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1248.                             foreach($apiAgencySlider as $aas){
  1249.                                 $em->remove($aas);
  1250.                             }
  1251.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1252.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1253.                                 $apiAgencySlider = new ApiAgencySlider();
  1254.                                 $apiAgencySlider->setImage($obj["image-".$object->hash[0]."-megaimage-1"]);
  1255.                                 $apiAgencySlider->setNorder(1);
  1256.                                 $apiAgencySlider->setVideo(0);
  1257.                                 $em->persist($apiAgencySlider);
  1258.                                 $em->flush();
  1259.                             }
  1260.                             break;
  1261.                         case 'megascroll':
  1262.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1263.                             foreach($apiAgencySlider as $aas){
  1264.                                 $em->remove($aas);
  1265.                             }
  1266.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1267.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1268.                                 $apiAgencySlider = new ApiAgencySlider();
  1269.                                 $apiAgencySlider->setImage($obj["image-".$object->hash[0]."-megascroll-1"]);
  1270.                                 $apiAgencySlider->setNorder(1);
  1271.                                 $apiAgencySlider->setVideo(0);
  1272.                                 $em->persist($apiAgencySlider);
  1273.                                 $em->flush();
  1274.                             }
  1275.                             break;
  1276.                         case 'onepage':
  1277.                             $apiAgencyHomeOnepage $em->getRepository(ApiAgencyHomeOnepage::class)->findOneBy(array("lang" => $post["lang"]));
  1278.                             if(!$apiAgencyHomeOnepage){
  1279.                                 $apiAgencyHomeOnepage = new ApiAgencyHomeOnepage(); 
  1280.                                 $apiAgencyHomeOnepage->setLang($post["lang"]);
  1281.                             }
  1282.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1283.                             
  1284.                                 foreach($valueJSON[$valueJSON["theme"]] as $key => $value){
  1285.                                     switch($key){
  1286.                                         case "principal-title":
  1287.                                             $apiAgencyHomeOnepage->setTitle($value);
  1288.                                             break;
  1289.                                         case "image-".$object->hash[0]."-onepage":
  1290.                                             $apiAgencyHomeOnepage->setImage($value);
  1291.                                             break;
  1292.                                         case "text-".$object->hash[0]."-onepage-1":
  1293.                                             $apiAgencyHomeOnepage->setDescription1($value);
  1294.                                             break;
  1295.                                         case "text-".$object->hash[0]."-onepage-2":
  1296.                                             $apiAgencyHomeOnepage->setDescription2($value);
  1297.                                             break;
  1298.                                         case "text-".$object->hash[0]."-onepage-3":
  1299.                                             $apiAgencyHomeOnepage->setDescription3($value);
  1300.                                             break;
  1301.                                         case "text-".$object->hash[0]."-onepage-4":
  1302.                                             $apiAgencyHomeOnepage->setDescription4($value);
  1303.                                             break;
  1304.                                         case "title-onepage-1":
  1305.                                             $apiAgencyHomeOnepage->setTitle1($value);
  1306.                                             break;
  1307.                                         case "link-onepage-1":
  1308.                                             $apiAgencyHomeOnepage->setLink1($value);
  1309.                                             break;
  1310.                                         case "title-onepage-2":
  1311.                                             $apiAgencyHomeOnepage->setTitle2($value);
  1312.                                             break;
  1313.                                         case "link-onepage-2":
  1314.                                             $apiAgencyHomeOnepage->setLink2($value);
  1315.                                             break;
  1316.                                         case "title-onepage-3":
  1317.                                             $apiAgencyHomeOnepage->setTitle3($value);
  1318.                                             break;
  1319.                                         case "link-onepage-3":
  1320.                                             $apiAgencyHomeOnepage->setLink3($value);
  1321.                                             break;
  1322.                                         case "title-onepage-4":
  1323.                                             $apiAgencyHomeOnepage->setTitle4($value);
  1324.                                             break;
  1325.                                         case "link-onepage-4":
  1326.                                             $apiAgencyHomeOnepage->setLink4($value);
  1327.                                             break;
  1328.                                     }
  1329.                                 }
  1330.                             }
  1331.                             $em->persist($apiAgencyHomeOnepage);
  1332.                             $em->flush();
  1333.                             break;
  1334.                         
  1335.                         case 'tabbuscador':
  1336.                             $apiAgencySlider $em->getRepository(ApiAgencySlider::class)->findBy(array());
  1337.                             foreach($apiAgencySlider as $aas){
  1338.                                 $em->remove($aas);
  1339.                             }
  1340.                             
  1341.                             if(isset($valueJSON[$valueJSON["theme"]])){
  1342.                                 $obj = (array) $valueJSON[$valueJSON["theme"]];
  1343.                                 $apiAgencySlider = new ApiAgencySlider();
  1344.                                 $apiAgencySlider->setImage($obj["image-".$object->hash[0]."-tabbuscador-1"]);
  1345.                                 $apiAgencySlider->setNorder(1);
  1346.                                 $apiAgencySlider->setVideo(0);
  1347.                                 $em->persist($apiAgencySlider);
  1348.                                 $em->flush();
  1349.                             }
  1350.                             break;
  1351.                     }
  1352.                 }
  1353.             }
  1354.         }
  1355.         $response = new JsonResponse();
  1356.         $response->setStatusCode(200);
  1357.         $response->setData(array(
  1358.             "status" => "success",
  1359.             "id" => $groupId
  1360.         ));
  1361.         return $response;
  1362.     }
  1363.     /**
  1364.      * @Route("/home/info/{lang}", name="get_home_info", methods={"POST"})
  1365.      * 
  1366.      */
  1367.     public function getHomeInfo(Request $requestManagerRegistry $doctrine$lang): Response
  1368.     {
  1369.         $user $this->getUser();
  1370.         if (!$user) {
  1371.             return $this->redirectToRoute('app_login');
  1372.         }
  1373.         $em $doctrine->getManager();
  1374.         $apiAgencyHomeAgent $em->getRepository(ApiAgencyHomeAgent::class);
  1375.         $apiAgencyHomeImage $em->getRepository(ApiAgencyHomeImage::class);
  1376.         $apiAgencyHomeOnePage $em->getRepository(ApiAgencyHomeOnePage::class);
  1377.         $apiAgencySlider $em->getRepository(ApiAgencySlider::class);
  1378.         $emAdmin $doctrine->getManager("admin");
  1379.         $agencyLicense $emAdmin->getRepository(AgencyLicense::class)->findOneBy(array());
  1380.         $theme "";
  1381.         switch($agencyLicense->getTema()){
  1382.             case 1:
  1383.             case "1":
  1384.                 $theme "agency";
  1385.                 break;
  1386.             case 2:
  1387.             case "2":
  1388.                 $theme "portal";
  1389.                 break;
  1390.             case 3:
  1391.             case "3":
  1392.                 $theme "geoloc";
  1393.                 break;
  1394.             case 4:
  1395.             case "4":
  1396.                 $theme "homemap";
  1397.                 break;
  1398.             case 5:
  1399.             case "5":
  1400.                 $theme "megaimage";
  1401.                 break;
  1402.             case 6:
  1403.             case "6":
  1404.                 $theme "superprop";
  1405.                 break;
  1406.             case 7:
  1407.             case "7":
  1408.                 $theme "megascroll";
  1409.                 break;
  1410.             case 8:
  1411.             case "8":
  1412.                 $theme "lateralscroll";
  1413.                 break;
  1414.             case 9:
  1415.             case "9":
  1416.                 $theme "tabbuscador";
  1417.                 break;
  1418.             case 10:
  1419.             case "10":
  1420.                 $theme "corporate";
  1421.                 break;
  1422.             case 11:
  1423.             case "11":
  1424.                 $theme "agent";
  1425.                 break;
  1426.             case 12:
  1427.             case "12":
  1428.                 $theme "onepage";
  1429.                 break;
  1430.         }
  1431.        
  1432.         return new JsonResponse([
  1433.             "status" => "success",
  1434.             "theme" => $theme
  1435.             "apiAgencyHomeAgent" => $this->container->get('serializer')->normalize($apiAgencyHomeAgent->findOneBy(array("lang" => $lang)), null),
  1436.             "apiAgencyHomeImage" => $this->container->get('serializer')->normalize($apiAgencyHomeImage->findOneBy(array()), null),
  1437.             "apiAgencyHomeOnePage" => $this->container->get('serializer')->normalize($apiAgencyHomeOnePage->findOneBy(array("lang" => $lang)), null),
  1438.             "apiAgencySlider" => $this->container->get('serializer')->normalize($apiAgencySlider->findBy(array()), null)
  1439.         ]);
  1440.     }
  1441.     /**
  1442.      * @Route("/page/saveImg", name="save_image", methods={"POST"})
  1443.      * 
  1444.      */
  1445.     public function saveImage(Request $requestManagerRegistry $doctrine): Response
  1446.     {
  1447.         $user $this->getUser();
  1448.         $response = new JsonResponse();
  1449.         if (!$user) {
  1450.             return $this->redirectToRoute('app_login');
  1451.         }
  1452.         if (!empty($request->getContent())) {
  1453.             $post = (array) json_decode($request->getContent());
  1454.             if (count($post) == 0) {
  1455.                 $post = (array) $request->request->all();
  1456.             }
  1457.         } else {
  1458.             $post = (array) $request->request->all();
  1459.         }
  1460.         $proportions $post["height"]."x".$post["width"];
  1461.         $imageFile $_FILES["file"];
  1462.         $fileNameExploded explode("."$imageFile["name"]);
  1463.         $fileType array_pop($fileNameExploded);
  1464.         $fileName implode(".",$fileNameExploded);
  1465.         //Mirar que fiqui MB
  1466.         $size "";
  1467.         $calcSize intval(round($imageFile["size"]/10000PHP_ROUND_HALF_UP));
  1468.         if($calcSize >= 1000){
  1469.             $size round($calcSize/10000PHP_ROUND_HALF_UP)."MB";
  1470.         }else{
  1471.             $size $calcSize."KB";
  1472.         }
  1473.         $em $doctrine->getManager();
  1474.         try{
  1475.             //Check if image exists
  1476.             $destino 'images/web/' $imageFile["name"];
  1477.             if(file_exists($destino)){
  1478.                 $randomNum rand(10000,99999);
  1479.                 $destino 'images/web/'.$randomNum.'_'.$imageFile["name"];
  1480.                 $fileName $randomNum.'_'.$fileName;
  1481.             }
  1482.             clearstatcache();
  1483.             //Save the image
  1484.             $moved move_uploaded_file($imageFile['tmp_name'], $destino);
  1485.             if($moved){
  1486.                 $apiImage = new ApiImages();
  1487.                 $apiImage->setName($fileName);
  1488.                 $apiImage->setSize($size);
  1489.                 $apiImage->setDate(new \DateTime("now"));
  1490.                 $apiImage->setProportions($proportions);
  1491.                 $apiImage->setType($fileType);
  1492.                 $em->persist($apiImage);
  1493.                 $em->flush();
  1494.             }
  1495.             
  1496.             $response->setStatusCode(200);
  1497.             $response->setData(array(
  1498.                 "status" => "success",
  1499.                 "id" => $apiImage->getId(),
  1500.                 "size" => $apiImage->getSize(),
  1501.                 "proportions" => $apiImage->getProportions(),
  1502.                 "date" => date_format($apiImage->getDate(), "d/m/Y"),
  1503.                 "url" => (empty($_SERVER['HTTPS']) ? 'http' 'https') . "://$_SERVER[HTTP_HOST]"."/images/web/".$apiImage->getName().".".$apiImage->getType(),
  1504.                 "name" => $apiImage->getName(),
  1505.                 "type" => $apiImage->getType()
  1506.             ));
  1507.         }catch(\Exception $e){
  1508.             $response->setStatusCode(500);
  1509.             $response->setData(array(
  1510.                 "status" => "failed",
  1511.                 "message" => $e->getMessage()." - ".$e->getLine()
  1512.             ));
  1513.         }
  1514.         return $response;
  1515.     }
  1516.      /**
  1517.      * @Route("/updateImageTitle", name="update_image_title", methods={"GET"})
  1518.      * 
  1519.      */
  1520.     public function updateImageTitle(Request $requestManagerRegistry $doctrine): Response
  1521.     {
  1522.         $user $this->getUser();
  1523.         $response = new JsonResponse();
  1524.         if (!$user) {
  1525.             return $this->redirectToRoute('app_login');
  1526.         }
  1527.         $oldName $request->get("oldTitle");
  1528.         $newName $request->get("newTitle");
  1529.         $response = new JsonResponse();
  1530.         $em $doctrine->getManager();
  1531.         try{
  1532.             $imageToUpdate $em->getRepository(ApiImages::class)->findOneBy(array("name" => $oldName));
  1533.             $imageToUpdate->setName($newName);
  1534.             $em->persist($imageToUpdate);
  1535.             $em->flush();
  1536.             $path "images/web/";
  1537.             $imageExtension $imageToUpdate->getType();
  1538.             rename($path.$oldName.".".$imageExtension$path.$newName.".".$imageExtension);
  1539.             
  1540.             $response->setStatusCode(200);
  1541.             $response->setData(array(
  1542.                 "status" => "success",
  1543.             ));
  1544.         }catch(\Exception $e){
  1545.             $response->setStatusCode(500);
  1546.             $response->setData(array(
  1547.                 "status" => "failed",
  1548.             ));
  1549.         }
  1550.         
  1551.         return $response;
  1552.     }
  1553.     /**
  1554.      * @Route("/menu", name="menu_management_page", methods={"GET"})
  1555.      * 
  1556.      */
  1557.     public function menuManagementPage(Request $requestManagerRegistry $doctrine): Response
  1558.     {
  1559.         $user $this->getUser();
  1560.         if (!$user) {
  1561.             return $this->redirectToRoute('app_login');
  1562.         }
  1563.         $em $doctrine->getManager();
  1564.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  1565.         $apiPagesRepo $em->getRepository(ApiPages::class);
  1566.         $apiOrderPagesRepo $em->getRepository(ApiOrderPages::class);
  1567.         $apiMenuRepo $em->getRepository(ApiMenu::class);
  1568.         $langPredeterminado $apiAgencyLangRepo->findOneBy(array("predeterminado" => 1));
  1569.         $pages $apiPagesRepo->findBy(array("lang" => $langPredeterminado->getCod(), "status" => 1));
  1570.         //TO DO - Crear una pagina per menu
  1571.         $menus $apiMenuRepo->findAll();
  1572.         $pagesOfMenu $apiOrderPagesRepo->findBy(array("menu" => $menus),array("order" => "ASC"));
  1573.         $menuPages = array();
  1574.         foreach($pagesOfMenu as $pageMenu){
  1575.             array_push($menuPages,$pageMenu->getPage()->getGroupPage());
  1576.         }
  1577.         $pages $apiPagesRepo->findNotAdded($langPredeterminado->getCod(), 1$menuPages);
  1578.         return $this->render('main/private/menu.html.twig', [
  1579.             "user" => $user,
  1580.             "pages" => $pages,
  1581.             "page_active" => "menu",
  1582.             "menus" => $menus,
  1583.             "menuPages" => $pagesOfMenu,
  1584.             "predeterminado" => $langPredeterminado
  1585.         ]);
  1586.     }
  1587.     
  1588.     /**
  1589.      * @Route("/menu/save", name="menu_management_save_menu", methods={"POST"})
  1590.      * 
  1591.      */
  1592.     public function saveMenu(Request $requestManagerRegistry $doctrine): Response
  1593.     {
  1594.         $user $this->getUser();
  1595.         if (!$user) {
  1596.             return $this->redirectToRoute('app_login');
  1597.         }
  1598.         if (!empty($request->getContent())) {
  1599.             $post = (array) json_decode($request->getContent());
  1600.             if (count($post) == 0) {
  1601.                 $post = (array) $request->request->all();
  1602.             }
  1603.         } else {
  1604.             $post = (array) $request->request->all();
  1605.         }
  1606.         $em $doctrine->getManager();
  1607.         $now = new \DateTime();
  1608.         $apiMenuRepo $em->getRepository(ApiMenu::class);
  1609.         $apiPagesRepo $em->getRepository(ApiPages::class);
  1610.         $menuExists $apiMenuRepo->findOneBy(array("name" => $post['menuName']));
  1611.         $response = array(
  1612.             "status" => "error",
  1613.             "type" => "error",
  1614.             "message" => "Ocurrió un error"
  1615.         );;
  1616.         if($menuExists){
  1617.             try{
  1618.                 if($menuExists->getName() != $post['menuName']){
  1619.                     $menuExists->setName($post['menuName']);
  1620.     
  1621.                     $em->persist($menuExists);
  1622.                     $em->flush();
  1623.                 }
  1624.     
  1625.                 $apiOrderPagesRepo $em->getRepository(ApiOrderPages::class);
  1626.                 $pagesOfMenu $apiOrderPagesRepo->findBy(array("menu" => $menuExists));
  1627.     
  1628.                 if(count($pagesOfMenu) > count($post['ids'])){
  1629.                     foreach($pagesOfMenu as $key => $pMenu){
  1630.                         $pId $pMenu->getPage()->getId();
  1631.     
  1632.                         if(!in_array($pId$post['ids'])){
  1633.                             $em->remove($pMenu);
  1634.                             $em->flush();
  1635.                         }
  1636.                     }
  1637.                 }
  1638.     
  1639.     
  1640.                 foreach($post['ids'] as $key => $pageId){
  1641.                     $parentRelation $post["parentChild"][$key];
  1642.                     $page $apiPagesRepo->findOneBy(array("id" => $pageId)); 
  1643.                     $pageParent null;
  1644.                     if($parentRelation["parent"] != 0)$pageParent $apiPagesRepo->findOneBy(array("id" => $parentRelation["parent"])); 
  1645.     
  1646.                     $orderPage $apiOrderPagesRepo->findOneBy(array("page" => $page));
  1647.     
  1648.                     if($orderPage){
  1649.                         $orderPage->setOrder($key);
  1650.                         $orderPage->setParentId($pageParent);
  1651.                     }else{
  1652.                         $orderPage = new ApiOrderPages();
  1653.                         $orderPage->setMenu($menuExists);
  1654.                         $orderPage->setPage($page);
  1655.                         $orderPage->setOrder($key);
  1656.                         $orderPage->setParentId($pageParent);
  1657.                     }
  1658.     
  1659.                     $em->persist($orderPage);
  1660.                     $em->flush();
  1661.                 }
  1662.             }catch(\Exception $e){
  1663.                 return new JsonResponse($response);
  1664.             }
  1665.         }else{
  1666.             try{
  1667.                 $menu = new ApiMenu();
  1668.                 $menu->setName($post['menuName']);
  1669.                 $menu->setDateCreated($now);
  1670.     
  1671.                 $em->persist($menu);
  1672.                 $em->flush();
  1673.     
  1674.                 foreach($post['ids'] as $key => $pageId){
  1675.                    $page $apiPagesRepo->findOneBy(array("id" => $pageId)); 
  1676.                    $parentRelation $post["parentChild"][$key];
  1677.                    $pageParent null;
  1678.                    if($parentRelation["parent"] != 0)$pageParent $apiPagesRepo->findOneBy(array("id" => $parentRelation["parent"])); 
  1679.     
  1680.                    $orderPage = new ApiOrderPages();
  1681.                    $orderPage->setPage($page);
  1682.                    $orderPage->setOrder($key);
  1683.                    $orderPage->setMenu($menu);
  1684.                    $orderPage->setParentId($pageParent);
  1685.     
  1686.                    $em->persist($orderPage);
  1687.                    $em->flush();
  1688.                 }
  1689.             }catch(\Exception $e){
  1690.                 $response = array(
  1691.                     "status" => "failed",
  1692.                     "type" => "danged",
  1693.                     "message" => $e->getMessage(),
  1694.                     "line" => $e->getLine()
  1695.                 );
  1696.                 return new JsonResponse($response);
  1697.             }
  1698.             
  1699.         }
  1700.         $response = array(
  1701.             "status" => "success",
  1702.             "type" => "success",
  1703.             "message" => "Información actualizada correctamente"
  1704.         );
  1705.         
  1706.         return new JsonResponse($response);
  1707.     }
  1708.     /**
  1709.      * @Route("/property", name="property_management_page", methods={"GET"})
  1710.      * 
  1711.      */
  1712.     public function propertyManagementPage(Request $requestManagerRegistry $doctrine): Response
  1713.     {
  1714.         $user $this->getUser();
  1715.         if (!$user) {
  1716.             return $this->redirectToRoute('app_login');
  1717.         }
  1718.         $em $doctrine->getManager();
  1719.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  1720.         $apiPagesRepo $em->getRepository(ApiPages::class);
  1721.         $apiPropertiesRepo $em->getRepository(ApiProperties::class);
  1722.         $apiPropertiesSubI18nRepo $em->getRepository(ApiPropertiesSubtypesI18n::class);
  1723.         $apiPropertiesSupertypeI18nRepo $em->getRepository(ApiPropertiesSupertypeI18n::class);
  1724.         $apiLocationsRepo $em->getRepository(ApiLocations::class);
  1725.         $apiProvincesRepo $em->getRepository(ApiProvinces::class);
  1726.         $apiTipusOperacioRepo $em->getRepository(TipusOperacio::class);
  1727.         $apiPropertiesI18nRepo $em->getRepository(ApiPropertiesI18n::class);
  1728.         $apiPropertiesFeaturesRepo $em->getRepository(ApiPropertiesFeatures::class);
  1729.         $apiFeaturesRepo $em->getRepository(ApiFeatures::class);
  1730.         $textosRepo $em->getRepository(Textos::class);
  1731.         $langPredeterminado $apiAgencyLangRepo->findOneBy(array("predeterminado" => 1));
  1732.         $traducciones $textosRepo->getBulkTextsByIdLang(array("cercador_lloguer""tabs_venda""destacado""llistat_d_immobles""size""preu_m2""fitxa_habitacions""signia_banys""date_days""date_since"), $langPredeterminado->getCod());
  1733.         $properties $apiPropertiesRepo->findAll();
  1734.         $allProperties = array();
  1735.         foreach($properties as $property){
  1736.             $prop = array();
  1737.             $prop['id'] = $property->getId();
  1738.             //Titulo
  1739.             $propertySubtype $apiPropertiesSubI18nRepo->findOneBy(array("id" => $property->getIdPropertiesSubtype(), "codLang" => $langPredeterminado->getCodComplete() ));
  1740.             $title $propertySubtype->getText() . ', ' Utilities::formatPropertyNumbers(($property->getSuperfConstr() ? $property->getSuperfConstr() : $property->getSuperfUtil()), 'm<sup>2</sup>'). ', ' $property->getSituacionConcreta();
  1741.             $prop['title'] = $title;
  1742.             //Localidad
  1743.             $location $apiLocationsRepo->findOneBy(array("id" => $property->getLocalidad()));
  1744.             $prop['location'] = $location->getName();
  1745.             //Provincia
  1746.             $province $apiProvincesRepo->findOneBy(array("id" => $property->getProvincia()));
  1747.             $prop['province'] = $province->getName();
  1748.             //Descripcion
  1749.             $description $apiPropertiesI18nRepo->findOneBy(array("id" => $property->getId(), "codLang" => $langPredeterminado->getCodComplete()));
  1750.             $prop['description'] = strlen($description->getAnuncio()) >= 70 substr($description->getAnuncio(),0200)."..." $description->getAnuncio();
  1751.             //Precio m2
  1752.             $prop['preciom2'] = Utilities::formatPropertyNumbers(round(($property->isAlquiler() ? $property->getPrecioAlquiler() : $property->getPrecio()) / intval(($property->getSuperfConstr() ? $property->getSuperfConstr() : $property->getSuperfUtil()))), '&euro;');
  1753.             
  1754.             //M2
  1755.             $prop['superficie'] = Utilities::formatPropertyNumbers(intval($property->getSuperfConstr() ? $property->getSuperfConstr() : $property->getSuperfUtil()),'m<sup>2</sup>');
  1756.             
  1757.             //Habitacions i banys
  1758.             $features $apiPropertiesFeaturesRepo->findBy(array("idProperty" => $property->getId()));
  1759.             $prop["banios"] = 0;
  1760.             $prop["dormitorios"] = 0;
  1761.             if($features){
  1762.                 foreach($features as $feature){
  1763.                     if($feature->getIdFeature() == 3){
  1764.                         $prop["banios"] = $feature->getValue();
  1765.                     }else if($feature->getIdFeature() == 4){
  1766.                         $prop["dormitorios"] = $feature->getValue();
  1767.                     }
  1768.                 }
  1769.             }
  1770.             //Precios
  1771.             $prop['precio'] = Utilities::formatPropertyNumbers(($property->isAlquiler() ? $property->getPrecioAlquiler() : $property->getPrecio()), '&euro;');
  1772.             $prop['precioAnterior'] = Utilities::formatPropertyNumbers(($property->isAlquiler() ? $property->getPrecioAlquilerAnterior() : $property->getPrecioAnterior()), '&euro;');
  1773.             //Fecha
  1774.             $now = new Datetime();
  1775.             $prop['fechaUpdate'] = ($now->diff($property->getFechaUpdate())->days);
  1776.             $prop['alquiler'] = $property->isAlquiler();
  1777.             $prop['destacado'] = $property->isDestacado();
  1778.             $prop['img'] = $this->DOMINI_APIBCN_FOTOS.'fotos'.round($prop["id"]/20000).'/'.$prop["id"].'/foto_1.jpg';
  1779.             //Tipo Operacion
  1780.             if($property->isEsLloguerTemporada())
  1781.                 $codiTipu 7;
  1782.             elseif($property->isEsBanc())
  1783.                 $codiTipu 4;
  1784.             elseif($property->isObraNueva())
  1785.                 $codiTipu 3;
  1786.             elseif($property->isAlquiler())
  1787.                 $codiTipu 1;
  1788.             else
  1789.                 $codiTipu 2;
  1790.             $tipusOp $apiTipusOperacioRepo->get_friendly_by_codi(mb_strtoupper($langPredeterminado->getCod()), $codiTipu);
  1791.             //Supertype
  1792.             $superType $apiPropertiesSupertypeI18nRepo->findOneBy(array("id" => $property->getIdPropertiesSupertype(), "codLang" => $langPredeterminado->getCodComplete()));
  1793.             
  1794.             $prop["urlDetail"] = '/'.$langPredeterminado->getCod().'/'.$tipusOp.'/'.$superType->getFriendly().'/'.$province->getFriendly().'/'.$location->getFriendly().'/'.$prop['id'];
  1795.             
  1796.             array_push($allProperties$prop);
  1797.         }
  1798.         
  1799.         // dd($traducciones);
  1800.         return $this->render('main/private/property.html.twig', [
  1801.             "user" => $user,
  1802.             "properties" => $allProperties,
  1803.             "traducciones" =>$traducciones,
  1804.             "page_active" => "property",
  1805.             "predeterminado" => $langPredeterminado
  1806.         ]);
  1807.     }
  1808.     /**
  1809.      * @Route("/property/highlight", name="property_highlight_management_page", methods={"GET"})
  1810.      * 
  1811.      */
  1812.     public function highlightProperty(Request $requestManagerRegistry $doctrine): Response
  1813.     {
  1814.         $user $this->getUser();
  1815.         if (!$user) {
  1816.             return $this->redirectToRoute('app_login');
  1817.         }
  1818.         $propertyId $request->get("id");
  1819.         $em $doctrine->getManager();
  1820.         $apiPropertiesRepo $em->getRepository(ApiProperties::class);
  1821.         try{
  1822.             $property $apiPropertiesRepo->find($propertyId);
  1823.             $property->isDestacado() ? $property->setDestacado(false) : $property->setDestacado(true);
  1824.             $em->persist($property);
  1825.             $em->flush();
  1826.         }catch(\Exception $e){
  1827.             return new JsonResponse([
  1828.                 "status" => "failed",
  1829.                 "error" => $e->getMessage()
  1830.             ], 500);
  1831.         }
  1832.         return new JsonResponse([
  1833.             "status" => "success",
  1834.             "message" => "Propiedad destacada correctamente",
  1835.             "destacado" => $property->isDestacado()
  1836.         ], 200);
  1837.        
  1838.     }
  1839.     /**
  1840.      * @Route("/analytics", name="analytics_management_page", methods={"GET"})
  1841.      * 
  1842.      */
  1843.     public function analyticsManagementPage(Request $requestManagerRegistry $doctrine): Response
  1844.     {
  1845.         $user $this->getUser();
  1846.         if (!$user) {
  1847.             return $this->redirectToRoute('app_login');
  1848.         }
  1849.         $em $doctrine->getManager();
  1850.         $apiAgencyLangRepo $em->getRepository(ApiAgencyLang::class);
  1851.         $langPredeterminado $apiAgencyLangRepo->findOneBy(array("predeterminado" => 1));
  1852.         return $this->render('main/private/analytics.html.twig', [
  1853.             "user" => $user,
  1854.             "page_active" => "analytics",
  1855.             "predeterminado" => $langPredeterminado
  1856.         ]);
  1857.     }
  1858.     /**
  1859.      * @Route("/tracking/chartsData", name="analytics_management_page_chat_data", methods={"POST"})
  1860.      * 
  1861.      */
  1862.     public function chartDataInfo(Request $requestManagerRegistry $doctrine): Response
  1863.     {
  1864.         $user $this->getUser();
  1865.         if (!$user) {
  1866.             return $this->redirectToRoute('app_login');
  1867.         }
  1868.         $em $doctrine->getManager();
  1869.         $trackingRepo $em->getRepository(Tracking::class);
  1870.         $trackClick $trackingRepo->getTrackingCount(1);
  1871.         $trackPages $trackingRepo->getTrackingCount(0);
  1872.         $pagesAverage $trackingRepo->getPagesAvgCount(0);
  1873.         $pagesByMonth $trackingRepo->getPagesByMonth();
  1874.         // dd($trackPages);
  1875.         return new JsonResponse([
  1876.             "status" => "success",
  1877.             "clicks" => $trackClick,
  1878.             "pages" => $trackPages,
  1879.             "pagesAverage" => $pagesAverage,
  1880.             "pagesMonth" => $pagesByMonth
  1881.         ]);
  1882.     }
  1883.     /**
  1884.      * @Route("/plugins/getOwnPlugins", name="get_own_plugins", methods={"POST"})
  1885.      * 
  1886.      */
  1887.     public function getOwnPlugins(Request $requestManagerRegistry $doctrine){
  1888.         $user $this->getUser();
  1889.         if (!$user) {
  1890.             return $this->redirectToRoute('app_login');
  1891.         }
  1892.         $em $doctrine->getManager();
  1893.         $pluginsRepo $em->getRepository(Plugins::class);
  1894.         $pluginGroupsRepo $em->getRepository(PluginGroups::class);
  1895.         try{
  1896.             $pluginsData $pluginsRepo->findAllPlugins();
  1897.             $plugins = array();
  1898.             $pluginGroups = array();
  1899.             foreach($pluginsData as $pData){
  1900.                 $plugins[$pData["name"]] = [
  1901.                     "id" => $pData["id"],
  1902.                     "pluginGroupName" => $pData["groupName"],
  1903.                     "pluginGroupId" => $pData["groupId"],
  1904.                     "pluginGroupSort" => $pData["groupSort"],
  1905.                     "sort" => $pData["sort"]
  1906.                 ];
  1907.                 if(!isset($pluginGroups[$pData["groupName"]])){
  1908.                     $pluginGroups[$pData["groupName"]] = [
  1909.                         "id" => $pData["groupId"],
  1910.                         "name" => $pData["groupName"],
  1911.                         "sort" => $pData["groupSort"]
  1912.                     ];
  1913.                 }
  1914.             }
  1915.         }catch(\Exception $e){
  1916.             return new JsonResponse([
  1917.                 "status" => "error",
  1918.                 "message" => $e->getMessage()
  1919.             ]);
  1920.         }
  1921.         return new JsonResponse([
  1922.             "status" => "success",
  1923.             "plugins" => $plugins,
  1924.             "pluginGroups" => $pluginGroups
  1925.         ]);
  1926.     }
  1927.      /**
  1928.      * @Route("/page/preview", name="private_page_preview", methods={"GET"})
  1929.      * 
  1930.      */
  1931.     public function previewPage(Request $requestManagerRegistry $doctrine){
  1932.         $user $this->getUser();
  1933.         if (!$user) {
  1934.             return $this->redirectToRoute('app_login');
  1935.         }
  1936.         $content =  $request->getSession()->get("urlPagePreview");
  1937.         // dd($content); 
  1938.         $em $doctrine->getManager();
  1939.         $apiAgencyRepo $em->getRepository(ApiAgency::class);
  1940.         $lang $em->getRepository(ApiAgencyLang::class)->findOneBy(array("predeterminado" => 1));
  1941.         $agency $apiAgencyRepo->findOneBy(array());
  1942.         return $this->render('main/private/pages/previewPage.html.twig', [
  1943.             "user" => $user,
  1944.             "lang" => $lang,
  1945.             "agency" => $agency,
  1946.             "content" => json_decode($content)
  1947.         ]);
  1948.     }
  1949.     /**
  1950.      * @Route("/page/preview/session", name="private_page_preview_session", methods={"POST"})
  1951.      * 
  1952.      */
  1953.     public function pageSetSession(Request $requestManagerRegistry $doctrine){
  1954.         $user $this->getUser();
  1955.         if (!$user) {
  1956.             return $this->redirectToRoute('app_login');
  1957.         }
  1958.         if (!empty($request->getContent())) {
  1959.             $post = (array) json_decode($request->getContent());
  1960.             if (count($post) == 0) {
  1961.                 $post = (array) $request->request->all();
  1962.             }
  1963.         } else {
  1964.             $post = (array) $request->request->all();
  1965.         }
  1966.         $request->getSession()->set("urlPagePreview-".$post["id"], $post["html"]);
  1967.         $request->getSession()->set("urlPagePreviewJson-".$post["id"], $post["json"]);
  1968.         $request->getSession()->set("urlPagePreview-".$post["slug"], $post["html"]);
  1969.         $request->getSession()->set("urlPagePreviewJson-".$post["slug"], $post["json"]);
  1970.         
  1971.         return new JsonResponse();
  1972.     }
  1973.     /****************************************************************/
  1974.     /*                          HELPERS                             */
  1975.     /****************************************************************/
  1976.     public function typeSelector($name$type)
  1977.     {
  1978.         $now = new DateTime('now');
  1979.         $hash md5($name $now->format('YmdHis'));
  1980.         switch ($type) {
  1981.             case 'image/png':
  1982.                 return $hash '.png';
  1983.                 break;
  1984.             case 'image/jpeg':
  1985.                 return $hash '.jpeg';
  1986.                 break;
  1987.             case 'video/quicktime':
  1988.                 return $hash '.mov';
  1989.                 break;
  1990.             case 'video/mp4':
  1991.                 return $hash '.mp4';
  1992.                 break;
  1993.             default:
  1994.                 return false;
  1995.                 break;
  1996.         }
  1997.     }
  1998. }