src/Controller/DefaultController.php line 102

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\AddressByPerson;
  4. use App\Entity\AlianazaCities;
  5. use App\Entity\AppButtons;
  6. use App\Entity\BaseReport;
  7. use App\Entity\BaseReportParams;
  8. use App\Entity\BaseReportViews;
  9. use App\Entity\CallbackByCity;
  10. use App\Entity\ColsByRow;
  11. use App\Entity\ComparePropertiesByUser;
  12. use App\Entity\ContentBySection;
  13. use App\Entity\ContentElementsByColumns;
  14. use App\Entity\ContentElementsByMeta;
  15. use App\Entity\FavsPropertiesByUser;
  16. use App\Entity\FeaturesByService;
  17. use App\Entity\GalleryByProject;
  18. use App\Entity\DefaultConfig;
  19. use App\Entity\LinksPoliticasFront;
  20. use App\Entity\Modals;
  21. use App\Entity\Page;
  22. use App\Entity\Person;
  23. use App\Entity\Leads;
  24. use App\Entity\ProcessSteps;
  25. use App\Entity\Projects;
  26. use App\Entity\Properties;
  27. use App\Entity\ResourcesByPage;
  28. use App\Entity\RowsBySection;
  29. use App\Entity\SectionsByPage;
  30. use App\Entity\Services;
  31. use App\Entity\ServicesByCity;
  32. use App\Entity\SiteData;
  33. use App\Entity\Sliders;
  34. use App\Entity\SlidesBySlider;
  35. use App\Entity\Team;
  36. use App\Entity\User;
  37. use Doctrine\DBAL\Logging\DebugStack;
  38. use Symfony\Component\HttpFoundation\JsonResponse;
  39. use Symfony\Component\HttpFoundation\RedirectResponse;
  40. use Symfony\Component\HttpFoundation\Response;
  41. use Symfony\Component\HttpFoundation\Request;
  42. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  43. use Doctrine\ORM\EntityManagerInterface;
  44. use FOS\UserBundle\Model\UserManagerInterface;
  45. use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
  46. use Symfony\Component\Asset\Packages;
  47. use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
  48. use App\Service\DocumentsCreator;
  49. use App\Service\Mailer;
  50. use App\Service\DomusAPI;
  51. use App\Service\Utils;
  52. use Symfony\Component\Serializer\SerializerInterface;
  53. use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
  54. use Doctrine\DBAL\Connection;
  55. class DefaultController extends AbstractController
  56. {
  57.     private $userManager;
  58.     /**
  59.      * @var EntityManagerInterface
  60.      */
  61.     private $em;
  62.     private $serializer;
  63.     private $documentCreator;
  64.     private $mailer;
  65.     private $domusAPI;
  66.     private $utils;
  67.     /**
  68.      * @param UserManagerInterface     $userManager
  69.      * @param EntityManagerInterface   $entityManager
  70.      * @param SerializerInterface      $serializer
  71.      * @param DocumentsCreator         $documentCreator
  72.      * @param Mailer                   $mailer
  73.      * @param Utils                    $utils
  74.      * @param DomusAPI                 $domusAPI
  75.      */
  76.     public function __construct(UserManagerInterface $userManager,
  77.                                 EntityManagerInterface $entityManager,
  78.                                 DocumentsCreator $documentCreator,
  79.                                 Mailer $mailer,
  80.                                 Utils $utils,
  81.                                 DomusAPI $domusAPI,
  82.                                 SerializerInterface $serializer,
  83.                                 Connection $externalConnection
  84.     ){
  85.         $this->userManager $userManager;
  86.         $this->em $entityManager;
  87.         $this->documentCreator $documentCreator;
  88.         $this->mailer $mailer;
  89.         $this->utils $utils;
  90.         $this->serializer $serializer;
  91.         $this->domusAPI $domusAPI;
  92.         $this->externalConnection $externalConnection;
  93.     }
  94.     public function index(){
  95.         if( $this->getUser() != null ){
  96.             return $this->redirectToRoute("admin_dashboard");
  97.         }
  98.         return $this->redirectToRoute("fos_user_security_login");
  99.         $slider $this->em->getRepository(Sliders::class)->findOneBy(array('name'  => 'Home'));
  100.         $slides = array();
  101.         if(is_object($slider)){
  102.             $slides $this->em->getRepository(SlidesBySlider::class)->findBy(array(
  103.                 'idSlider'  => $slider->getId()
  104.             ),array( "indexer" => "ASC" ));
  105.         }
  106.         $properties $this->em->getRepository(Properties::class)->findBy(array( 'active' => true ));
  107.         $cities $this->em->getRepository(AlianazaCities::class)->findBy(array( 'visible'   => true ));
  108.         return new Response$this->renderView('app/themes/cool-landing/default/index.html.twig', array(
  109.             'cities'                => $cities,
  110.             'properties'            => $properties,
  111.             'types'                 => [],
  112.             'slides'                => $slides,
  113.             'features'              => [],
  114.             'posts'                 => [],
  115.             'propertiesFeatured'    => $properties,
  116.         )) );
  117.     }
  118.     public function visorReports($urlRequest $req){
  119.         $report $this->em->getRepository(BaseReport::class)->findOneBy( array( 'url'  => $url ) );
  120.         if( !is_object($report) ){
  121.             return $this->redirectToRoute("app_index");
  122.         }
  123.         $view = new BaseReportViews();
  124.         $view->setReportId($report->getId());
  125.         $view->setDevice("computer");
  126.         $view->setIp($req->getClientIp());
  127.         $view->setReferal($req->headers->get('referer'));
  128.         $view->setCreatedAt(new \DateTime());
  129.         $this->em->persist($view);
  130.         $this->em->flush();
  131.         $params $this->em->getRepository(BaseReportParams::class)->findBy(array(
  132.             'baseReportId'  => $report->getId()
  133.         ));
  134.         if (count($params) > 0){
  135.             return new Response$this->renderView('reports/visor-put-parameters.html.twig',array(
  136.                 'report'    => $report,
  137.                 'params'    => $params
  138.             )) );
  139.         }
  140.         $externalConnection $this->getDoctrine()->getConnection('external_db');
  141.         $stmt $externalConnection->executeQuery(html_entity_decode($report->getQuery()));
  142.         $results $stmt->fetchAll();
  143.         switch ($report->getOutputFormat()) {
  144.             case 'tabla':
  145.                 return new Response$this->renderView('reports/visor.html.twig',array(
  146.                     'report'    => $report,
  147.                     'results'    => $results
  148.                 )) );
  149.                 break;
  150.             case 'xls':
  151.                 $xls $this->documentCreator->generateXlsByReport($report$results);
  152.                 return new RedirectResponse($xls["download"]);
  153.                 break;
  154.         }
  155.     }
  156.     public function reportContentByParameters(Request $req){
  157.         $all $req->request->all();
  158.         $report $this->em->getRepository(BaseReport::class)->find($all["report"]);
  159.         unset($all['report']);
  160.         if(!is_object($report)){
  161.             return $this->redirectToRoute("app_index");
  162.         }
  163.         $externalConnection $this->getDoctrine()->getConnection('external_db');
  164.         $sql html_entity_decode($report->getQuery());
  165.         $stmt $externalConnection->prepare($sql);
  166.         foreach ($all as $paramName => $paramValue) {
  167.             $param $this->em->getRepository(BaseReportParams::class)->findOneBy(array(
  168.                 "baseReportId"  => $report->getId(),
  169.                 "paramName"     => $paramName
  170.             ));
  171.             if( is_object($param) ){
  172.                 switch ($param->getParamType()){
  173.                     case 'in-str':
  174.                         $valuesArray array_map('trim'explode(','$paramValue));
  175.                         $inValues "('" implode("','"$valuesArray) . "')";
  176.                         $sql str_replace(":$paramName"$inValues$sql);
  177.                         break;
  178.                     case 'in-nan':
  179.                         $valuesArray array_map('trim'explode(','$paramValue));
  180.                         $inValues "(" .  implode(","$valuesArray) . ")";
  181.                         $sql str_replace(":$paramName"$inValues$sql);
  182.                         break;
  183.                     case 'like':
  184.                     case 'number':
  185.                         $sql str_replace(":$paramName"trim($paramValue), $sql);
  186.                         break;
  187.                     case 'boolean':
  188.                         $sql str_replace(":$paramName", (bool)$paramValue$sql);
  189.                         break;
  190.                     default:
  191.                         $sql str_replace(":$paramName""'".trim($paramValue)."'"$sql);
  192.                         //$stmt->bindValue(':' . $paramName, $paramValue);
  193.                         break;
  194.                 }
  195.                 error_log($sql);
  196.             }
  197.         }
  198.         $stmt $externalConnection->prepare($sql);
  199.         $stmt->execute();
  200.         $results $stmt->fetchAll();
  201.         //dd($stmt, $results);
  202.         switch ($report->getOutputFormat()){
  203.             case 'tabla':
  204.                 return new Response$this->renderView('reports/visor-only.html.twig',array(
  205.                     'report'    => $report,
  206.                     'results'    => $results
  207.                 )) );
  208.                 break;
  209.             case 'xls':
  210.                 $xls $this->documentCreator->generateXlsByReport($report$results);
  211.                 return new JsonResponse($xls);
  212.                 break;
  213.         }
  214.     }
  215.     public function getStoreData($arg$identifier null$valuenull$html true$cityId nullPackages $assetPackage){
  216.         $response "";
  217.         $site $this->em->getRepository(SiteData::class)->findOneBy(array(
  218.             'id'    => 1
  219.         ));
  220.         if(is_null($identifier)){
  221.             switch ($arg){
  222.                 case 'email':
  223.                     $response $site->getEmail();
  224.                     break;
  225.                 case 'phone':
  226.                     $response $site->getPhone1();
  227.                     break;
  228.                 case 'phone2':
  229.                     $response $site->getPhone2();
  230.                     break;
  231.                 case 'phone3':
  232.                     $response $site->getPhone3();
  233.                     break;
  234.                 case 'logo':
  235.                     $response $site->getLogo();
  236.                     break;
  237.                 case 'name':
  238.                     $response $site->getName();
  239.                     break;
  240.                 case 'metatags':
  241.                     $response $site->getMetakeywords();
  242.                     break;
  243.                 case 'metadescription':
  244.                     $response $site->getMetadescription();
  245.                     break;
  246.                 case 'favicon':
  247.                     $response $site->getFavicon();
  248.                     break;
  249.                 case 'address':
  250.                     $response $site->getAddress();
  251.                     break;
  252.                 case 'facebook':
  253.                     $response $site->getFacebook();
  254.                     break;
  255.                 case 'instagram':
  256.                     $response $site->getInstagram();
  257.                     break;
  258.                 case 'twitter':
  259.                     $response $site->getTwitter();
  260.                     break;
  261.                 case 'youtube':
  262.                     $response $site->getYoutube();
  263.                     break;
  264.                 case 'blog':
  265.                     $response $site->getBlog();
  266.                     break;
  267.                 case 'links-politicas':
  268.                     $links $this->em->getRepository(LinksPoliticasFront::class)->findAll();
  269.                     foreach ( $links as $link ){
  270.                         $response .= '<a target="_blank" href="'.$link->getLink().'">'$link->getLabel() .'</a> <br>';
  271.                     }
  272.                     break;
  273.                 case 'userName':
  274.                     $person $this->em->getRepository(Person::class)->findOneBy(array(
  275.                         'userId'    => $this->getUser()->getId()
  276.                     ));
  277.                     $response = ( is_object($person) ? $person->getName() . " " $person->getLastNames() : "MenĂº" );
  278.                     break;
  279.             }
  280.         } else {
  281.             switch ($identifier){
  282.                 case 'cities':
  283.                     $cities $this->em->getRepository(AlianazaCities::class)->findBy(array( 'visible'   => ));
  284.                     switch ($arg){
  285.                         case 'li':
  286.                             foreach ( $cities as $city ){
  287.                                 $response .= '  <li><a target="_blank" href="/city/'$city->getUrl() .'">'$city->getName() .'</a></li>
  288.                                                 <li class="uk-nav-divider"></li>';
  289.                             }
  290.                             break;
  291.                         case 'option':
  292.                             foreach ( $cities as $i => $city ){
  293.                                 $response .= '  <option '. ( $cityId == $city->getId() ? "selected" "" ) .' value="'$city->getId() .'">'ucfirst$city->getName() ) .'</option> ';
  294.                             }
  295.                             break;
  296.                     }
  297.                     break;
  298.                 case 'services':
  299.                     $services $this->em->getRepository(Services::class)->findBy(array(
  300.                         'active'   => 1
  301.                     ));
  302.                     $response '';
  303.                     foreach ( $services as $service ){
  304.                         $response .= '  <li><a href="/service/'$service->getUrl() .'">'$service->getName() .'</a></li>
  305.                                     <li class="uk-nav-divider"></li>';
  306.                     }
  307.                     break;
  308.                 case 'requirements':
  309.                     $city $this->em->getRepository(AlianazaCities::class)->findOneBy(array(
  310.                         'idCity'    => $cityId
  311.                     ));
  312.                     if( !is_object($city) ){
  313.                         $city $this->em->getRepository(AlianazaCities::class)->findOneBy(array(
  314.                             'id'    => 3
  315.                         ));
  316.                     }
  317.                     if($arg == 'ARRIENDO'){
  318.                         $response $city->getUrlRentRequirements();
  319.                     } else {
  320.                         $response $city->getUrlSellRequirements();
  321.                     }
  322.                     break;
  323.             }
  324.         }
  325.         return ( is_string($response) ? new Response($response): new JsonResponse$response ) );
  326.     }
  327. }