src/Aviatur/GeneralBundle/EventListener/RequestListener.php line 153

Open in your IDE?
  1. <?php
  2. namespace Aviatur\GeneralBundle\EventListener;
  3. use Aviatur\AgencyBundle\Entity\Agency;
  4. use Aviatur\CustomerBundle\Entity\Customer;
  5. use Aviatur\CustomerBundle\Models\CustomerModel;
  6. use Aviatur\FlightBundle\Entity\ConfigFlightAgency;
  7. use Aviatur\GeneralBundle\Entity\Parameter;
  8. use Aviatur\GeneralBundle\Entity\SeoHeader;
  9. use Aviatur\GeneralBundle\Entity\SeoIndex;
  10. use Aviatur\GeneralBundle\Entity\SocialMetaTag;
  11. use Aviatur\GeneralBundle\Entity\Whitemark;
  12. use Aviatur\GeneralBundle\Services\AviaturAthServices;
  13. use Aviatur\GeneralBundle\Services\AviaturChangeCoin;
  14. use Aviatur\GeneralBundle\Services\AviaturErrorHandler;
  15. use Aviatur\GeneralBundle\Services\AviaturLogSave;
  16. use Aviatur\GeneralBundle\Services\AviaturWebService;
  17. use Aviatur\GeneralBundle\Services\ExceptionLog;
  18. use Aviatur\HotelBundle\Entity\ConfigHotelAgency;
  19. use Doctrine\Persistence\ManagerRegistry;
  20. use Symfony\Component\HttpFoundation\RedirectResponse;
  21. use Symfony\Component\HttpFoundation\RequestStack;
  22. use Symfony\Component\HttpFoundation\Session\SessionInterface;
  23. use Symfony\Component\HttpKernel\Event\RequestEvent;
  24. use Symfony\Component\Routing\RouterInterface;
  25. use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
  26. use Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface;
  27. use Aviatur\GeneralBundle\Entity\UrlHomologation;
  28. use Aviatur\GeneralBundle\Services\AviaturPlusLogin;
  29. class RequestListener
  30. {
  31.     private \Symfony\Component\HttpFoundation\RequestStack $requestStack;
  32.     private \Symfony\Component\HttpFoundation\Session\SessionInterface $session;
  33.     private \Aviatur\GeneralBundle\Services\AviaturLogSave $aviaturLogSave;
  34.     private \Swift_Mailer $mailer;
  35.     private \Symfony\Component\Security\Core\Authorization\AuthorizationCheckerInterface $authorizationChecker;
  36.     private \Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface $tokenStorage;
  37.     private \Aviatur\GeneralBundle\Services\ExceptionLog $exceptionLog;
  38.     private \Aviatur\GeneralBundle\Services\AviaturChangeCoin $changeCoin;
  39.     private \Aviatur\GeneralBundle\Services\AviaturWebService $aviaturWebService;
  40.     private $projectDir;
  41.     private $env;
  42.     private $em;
  43.     private $aviaturAthServices;
  44.     private $aviaturErrorHandler;
  45.     private $router;
  46.     protected $twig;
  47.     private $aviaturSufixAssetsFolder;
  48.     private $aviaturDefaultAssetsFolder;
  49.     private $emailNotification;
  50.     private string $sessionSufixParameters '[parameters]';
  51.     private string $wwwPrefix 'www.';
  52.     private $loginKey;
  53.     private $aviaturPlusLogin;
  54.     public function __construct(
  55.         RequestStack $requestStackSessionInterface $sessionAviaturLogSave $aviaturLogSave, \Swift_Mailer $mailerAuthorizationCheckerInterface $authorizationCheckerTokenStorageInterface $tokenStorage,
  56.         ExceptionLog $exceptionLogAviaturChangeCoin $changeCoinAviaturWebService $aviaturWebServiceManagerRegistry $registryAviaturAthServices $aviaturAthServicesAviaturErrorHandler $aviaturErrorHandler,
  57.         RouterInterface $router$twig$aviaturSufixAssetsFolder$aviaturDefaultAssetsFolder$emailNotification$projectDir$envAviaturPlusLogin $aviaturPlusLogin
  58.     ) {
  59.         $this->requestStack $requestStack;
  60.         $this->session $session;
  61.         $this->aviaturLogSave $aviaturLogSave;
  62.         $this->mailer $mailer;
  63.         $this->authorizationChecker $authorizationChecker;
  64.         $this->tokenStorage $tokenStorage;
  65.         $this->exceptionLog $exceptionLog;
  66.         $this->changeCoin $changeCoin;
  67.         $this->aviaturWebService $aviaturWebService;
  68.         $this->projectDir $projectDir;
  69.         $this->env $env;
  70.         $this->em $registry->getManager();
  71.         $this->aviaturAthServices $aviaturAthServices;
  72.         $this->aviaturErrorHandler $aviaturErrorHandler;
  73.         $this->router $router;
  74.         $this->twig $twig;
  75.         $this->aviaturSufixAssetsFolder $aviaturSufixAssetsFolder;
  76.         $this->aviaturDefaultAssetsFolder $aviaturDefaultAssetsFolder;
  77.         $this->emailNotification $emailNotification;
  78.         $this->loginKey $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName('aval_public_key_auth')->getDescription();
  79.         $this->aviaturPlusLogin $aviaturPlusLogin;
  80.     }
  81.     public function onKernelRequest(RequestEvent $event)
  82.     {
  83.         $request $event->getRequest();
  84.         $domain $request->getHost();
  85.         if (('www.aviatur.com' != $domain) && ('ecommprod.grupoaviatur.com' != $domain) && ('agenciadeviajes.compensar.com' != $domain) && ('compensar.grupoaviatur.com' != $domain) && ('mobile.aviatur.com' != $domain) && ('mobile.grupoaviatur.com' != $domain)) {
  86.             $this->aviaturLogSave->logSave($domain.' '.$request->server->get('REQUEST_URI').' '.$request->attributes->get('_route').' '.microtime(), 'DomainTime''RQ'microtime());
  87.         }
  88.         if (('www.aviaturcolombia.com' == $domain) && !$request->getQueryString() && ('/' == $request->getPathInfo())) {
  89.             $response = new RedirectResponse('http://www.aviaturcolombia.com/en/');
  90.             return $event->setResponse($response);
  91.         }
  92.         $post $request->request;
  93.         $securityContext $this->authorizationChecker;
  94.         $server $this->requestStack->getCurrentRequest()->server;
  95.         $referer str_replace('www.'''parse_url($server->get('HTTP_REFERER'), PHP_URL_HOST));
  96.         $whitemarkAgency null;
  97.         $requestQuery $request->query;
  98.         $protocol 'domain';
  99.         if ($request->isSecure()) {
  100.             $protocol 'domainsecure';
  101.         }
  102.         $this->session->set('emailNoReply''noreply@aviatur.com.co');
  103.         $agency $this->em->getRepository(Agency::class)->findOneBy(
  104.             [$protocol => [$domainstr_replace($this->wwwPrefix''$domain)]]
  105.         );
  106.         // ?? $this->em->getRepository(Agency::class)->findOneBy(
  107.         //    ['domain' => [$domain, str_replace($this->wwwPrefix, '', $domain)]]
  108.         //)
  109.         if ($agency) {
  110.             $requestedPath $request->getPathInfo();
  111.             $redirect $this->em->getRepository(UrlHomologation::class)->findOneBy([
  112.                 'oldUrl' => $requestedPath,
  113.                 'agency' => $agency->getId(),
  114.             ]);
  115.             if ($redirect) {
  116.                 $newUrl $redirect->getNewUrl();
  117.                 $redirectionCode $redirect->getCode();
  118.                 if (is_null($redirectionCode)) {
  119.                     $redirectionCode 301;
  120.                 }
  121.                 if (strpos($newUrl'://') === false) {
  122.                     $currentScheme $request->getSchemeAndHttpHost();
  123.                     $newUrl $currentScheme $newUrl;
  124.                 }
  125.                 $response = new RedirectResponse($newUrl$redirectionCode);
  126.                 $event->setResponse($response);
  127.                 $this->aviaturLogSave->logSave(
  128.                     sprintf(
  129.                         'Redirección %d aplicada para agencia %d: %s -> %s (Dominio: %s)',
  130.                         $redirectionCode$agency->getId(), $requestedPath$newUrl$domain
  131.                     ),
  132.                     'UrlRedirect',
  133.                     'INFO',
  134.                     microtime()
  135.                 );
  136.                 return;
  137.             }
  138.         }
  139.         // else {
  140.         //     $response = new RedirectResponse('https://www.aviatur.com', 301);
  141.         //     return $event->setResponse($response);
  142.         // }
  143.         if ($agency) {
  144.             $isAgency true;
  145.             $onlySearcherSite $this->em->getRepository(Whitemark::class)->findOneBy(['agency' => $agency'url' => $referer]);
  146.             if (null != $onlySearcherSite) {
  147.                 if (== $onlySearcherSite->getEmbebed()) {
  148.                     $this->session->set('onlySearcherSite'true);
  149.                 }
  150.             }
  151.             if ('' != $post->get('detailWhitemarkReferer')) {
  152.                 $requestQuery->set('whitemark'$post->get('detailWhitemarkReferer'));
  153.             }
  154. //            if ($post->get('hotelWhitemarkReferer') != "") {
  155. //                $requestQuery->set('whitemark', $post->get('hotelWhitemarkReferer'));
  156. //            }
  157. //            if ($post->get('packageWhitemarkReferer') != "") {
  158. //
  159. //                $requestQuery->set('whitemark', $post->get('packageWhitemarkReferer'));
  160. //            }
  161.             if ('' != $post->get('loginWhitemark')) {
  162.                 $requestQuery->set('whitemark'$post->get('loginWhitemark'));
  163.                 $this->session->set('whitemarkLogin'$post->get('loginWhitemark'));
  164.             } else {
  165.                 if ($this->session->has('whitemarkLogin')) {
  166.                     $whitemarkAgency $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['referer' => $this->session->get('whitemarkLogin')]);
  167.                     $requestQuery->set('whitemark'$this->session->get('whitemarkLogin'));
  168.                 }
  169.             }
  170.             // if (!$this->session->has('agencyDataInfo')) {
  171.                 $agencyDataInfo = [
  172.                     'agency_id' => $agency->getId(),
  173.                     'agency_name' => $agency->getName(),
  174.                     'agency_nit' => $agency->getNit(),
  175.                     'agency_phone' => $agency->getPhone(),
  176.                     'agency_email' => $agency->getMailContact(),
  177.                     'address' => $this->getAdressAgency($agency->getAddress()),
  178.                     'agency_phones' => json_decode($agency->getPhonesContact(), true),
  179.                     'socialmedia' => json_decode($agency->getSocialmedia(), true)
  180.                 ];
  181.                 // if (count($agencyDataInfo) > 0) {
  182.                     $this->session->set('agencyDataInfo'$agencyDataInfo);
  183.                 // }
  184.             // }
  185.         } else {
  186.             $whitemarkAgency $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['url' => str_replace($this->wwwPrefix''$domain)]);
  187.             if (null != $whitemarkAgency) {
  188.                 $agency $whitemarkAgency->getAgency();
  189.                 $isAgency true;
  190.                 $requestQuery->set('whitemark'$whitemarkAgency->getReferer());
  191.                 if (!$this->session->has('whitemarkDataInfo')) {
  192.                     $whitemarkAgencyDataInfo = [
  193.                         'whitemark_id' => $whitemarkAgency->getId(),
  194.                         'whitemark_name' => $whitemarkAgency->getName(),
  195.                         'whitemark_phone' => $whitemarkAgency->getPhone(),
  196.                         'whitemark_email' => $whitemarkAgency->getEmail(),
  197.                         'whitemark_address' => $whitemarkAgency->getAddress(),
  198.                         'whitemark_phones' => json_decode($whitemarkAgency->getPhonesContact(), true),
  199.                     ];
  200.                     if (count($whitemarkAgencyDataInfo) > 0) {
  201.                         $this->session->set('whitemarkDataInfo'$whitemarkAgencyDataInfo);
  202.                     }
  203.                 }
  204.             } else {
  205.                 $isAgency false;
  206.             }
  207.         }
  208.         if ($isAgency) {
  209.             $post $request->request;
  210.             if ($requestQuery->has('whitemark') || '' != $this->session->get('whitemark')) {
  211.                 $refererInfo $requestQuery->get('whitemark');
  212.                 if (null == $whitemarkAgency) {
  213.                     if (false !== strpos($agency->getDomainsecure(), 'whitemark') && '' == $refererInfo) {
  214.                         $whitemark $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['referer' => $this->session->get('whitemark')]);
  215.                         if (!$requestQuery->has('whitemark')) {
  216.                             $requestQuery->set('whitemark'$this->session->get('whitemark'));
  217.                             if (== $whitemark->getEmbebed()) {
  218.                                 $this->session->set('homeWhitemark''https://'.$whitemark->getUrl());
  219.                             }
  220.                         }
  221.                     } else {
  222.                         if (false !== strpos($referer'whitemark')) {
  223.                             $whitemark $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['referer' => $refererInfo]);
  224.                         } else {
  225.                             $whitemark $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['url' => $referer'referer' => $refererInfo]);
  226.                         }
  227.                         if ('' != $this->session->get('whitemark')) {
  228.                             $whitemark $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['referer' => $this->session->get('whitemark')]);
  229.                             $requestQuery->set('whitemark'$this->session->get('whitemark'));
  230.                         }
  231.                     }
  232.                 } else {
  233.                     $whitemark $whitemarkAgency;
  234.                 }
  235.                 if (null == $whitemark) {
  236.                     $response = new RedirectResponse('https://www.aviatur.com');
  237.                     return $event->setResponse($response);
  238.                 } else {
  239.                     $this->session->set('whitemark'$requestQuery->get('whitemark'));
  240.                     $this->session->set('whitemarkSite'$whitemark->getEmbebed());
  241.                     $this->session->set('whitemarkName'$whitemark->getName());
  242.                     $this->session->set('whitemarkMail'$whitemark->getEmail());
  243.                     if (== $whitemark->getEmbebed()) {
  244.                         $wmData = [];
  245.                         $wmData['direccion'] = $whitemark->getAddress();
  246.                         $wmData['telefono'] = $whitemark->getPhone();
  247.                         $wmData['correo'] = $whitemark->getEmail();
  248.                         $this->session->set('whitemarkData'$wmData);
  249.                         $this->session->set('homeWhitemark''https://'.$whitemark->getUrl());
  250.                         $query $this->em->createQuery('SELECT a FROM AviaturContentBundle:Content a WHERE a.agency = :agency and a.url LIKE :menu ORDER BY a.creationdate DESC');
  251.                         $query $query->setParameter('agency'$agency);
  252.                         $query $query->setParameter('menu''%'.$refererInfo.'%');
  253.                         $content $query->getResult();
  254.                         $menu = [];
  255.                         foreach ($content as $item) {
  256.                             $menu[$item->getTitle()] = $item->getUrl();
  257.                         }
  258.                         $this->session->set('whitemarkMenu'$menu);
  259.                     }
  260.                 }
  261.             }
  262.             if ($requestQuery->has('special_campaing')) {
  263.                 $this->session->set('special_campaing'$requestQuery->get('special_campaing'));
  264.             }
  265.             if ($post->has('flightSpecialReferer')) {
  266.                 $this->session->set('special_campaing'$post->get('flightSpecialReferer'));
  267.             }
  268.             // if ((strpos($agency->getDomainsecure(), 'whitemark') !== false) && (!$this->session->has('whitemark'))) {
  269.             // $response = new RedirectResponse("http://www.aviatur.com");
  270.             // return $event->setResponse($response);
  271.             // }
  272.             if ('claro' == $agency->getAssetsFolder()) {
  273.                 $specialMenuData file_get_contents($this->projectDir.'/web/contenido/json_claro.txt');
  274.                 $specialMenuData json_decode($specialMenuDatatrue);
  275.                 $this->session->set('agency_special_header'$specialMenuData);
  276.             }
  277.             $_route $request->attributes->get('_route');
  278.             $this->session->set('agencyId'$agency->getId());
  279.             $this->session->set('agencyShortName'ucwords(str_replace('_'' '$agency->getAssetsfolder())));
  280.             $this->session->set('domain'$agency->getDomain());
  281.             $this->session->set('domainsecure'$agency->getDomainsecure());
  282.             $this->session->set('domainport'$agency->getCustomport());
  283.             $this->session->remove('notEnableFlightSearch');
  284.             $this->session->remove('notEnableHotelSearch');
  285.             $this->session->remove('notEnableMultiHVSearch');
  286.             $configFlightAgency $this->em->getRepository(ConfigFlightAgency::class)->findByAgency($agency);
  287.             if ((is_countable($configFlightAgency) ? count($configFlightAgency) : 0) < 1) {
  288.                 $this->session->set('notEnableFlightSearch'true);
  289.             }
  290.             $configHotelAgency $this->em->getRepository(ConfigHotelAgency::class)->findByAgency($agency);
  291.             if ((is_countable($configHotelAgency) ? count($configHotelAgency) : 0) < 1) {
  292.                 $this->session->set('notEnableHotelSearch'true);
  293.             }
  294.             if ((is_countable($configFlightAgency) ? count($configFlightAgency) : 0) < || (is_countable($configHotelAgency) ? count($configHotelAgency) : 0) < 1) {
  295.                 $this->session->set('notEnableMultiHVSearch'true);
  296.             }
  297.             if (null != $this->tokenStorage->getToken() && !$this->authorizationChecker->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  298.                 // authenticated REMEMBERED, FULLY will imply REMEMBERED (NON anonymous)
  299.                 /* if ($agency->getDomain() == "aviatur.com"){
  300.                   var_dump($request);
  301.                   var_dump($request->isSecure());
  302.                   var_dump($request->isSecure() != TRUE);
  303.                   VAR_DUMP(($agency->getCustomport() == 443) && ($agency->getDomain() === $agency->getDomainsecure()) && (strpos($agency->getDomainsecure(), 'whitemark') === false) && (strpos($agency->getDomainsecure(), 'wm.') === false) && (strpos($agency->getDomainsecure(), 'mb.') === false) && ($request->isSecure() != TRUE));
  304.                   exit();
  305.                   } */
  306.                 if ((443 == $agency->getCustomport()) && ($agency->getDomain() === $agency->getDomainsecure()) && (false === strpos($agency->getDomainsecure(), 'whitemark')) && (false === strpos($agency->getDomainsecure(), 'wm.')) && (false === strpos($agency->getDomainsecure(), 'mb.')) && (!$request->isSecure())) {
  307.                     $response = new RedirectResponse('https://'.$agency->getDomainsecure().$request->server->get('REQUEST_URI'));
  308.                     return $event->setResponse($response);
  309.                 } elseif ((false === strpos($_route'_nocheck')) && (false === strpos($_route'fos_user_')) && ($agency->getDomainsecure() != $agency->getDomain())) {
  310.                     if (((false !== strpos($_route'_secure')) || (false !== strpos($_route'sonata_')) || (false !== strpos($_route'admin_aviatur_'))) && (true != $request->isSecure())) {
  311.                         $response = new RedirectResponse('https://'.$agency->getDomainsecure().$request->server->get('REQUEST_URI'));
  312.                         return $event->setResponse($response);
  313.                     } elseif ((false === strpos($_route'_secure')) && (false === strpos($_route'sonata_')) && (false === strpos($_route'admin_aviatur_')) && (true == $request->isSecure())) {
  314.                         $response = new RedirectResponse('https://'.$agency->getDomain().$request->server->get('REQUEST_URI'));
  315.                         return $event->setResponse($response);
  316.                     }
  317.                 }
  318.             }
  319.             $search = ['?_ga=''&_ga='];
  320.             $tempUrl explode('|||||'str_replace($search'|||||'$_SERVER['REQUEST_URI']));
  321.             $finalUrl trim($tempUrl[0], '/');
  322.             $seoIndex $this->em->getRepository(SeoIndex::class)->findBy(['agency' => $agency]);
  323.             $seoUrlIndex = [];
  324.             if (null != $seoIndex) {
  325.                 foreach ($seoIndex as $item) {
  326.                     if ($item->getUrl() == $finalUrl) {
  327.                         $seoUrlIndex['url'] = $item->getUrl();
  328.                         $seoUrlIndex['name'] = $item->getName();
  329.                         $seoUrlIndex['content'] = $item->getContent();
  330.                     }
  331.                 }
  332.                 $this->twig->addGlobal('seoUrlIndex'$seoUrlIndex);
  333.             }
  334.             $seoHeader $this->em->getRepository(SeoHeader::class)->findByWithNull($finalUrl$agency);
  335.             if (null != $seoHeader) {
  336.                 $this->twig->addGlobal('seo_title'$seoHeader->getTitle());
  337.                 $this->twig->addGlobal('seo_description'$seoHeader->getDescription());
  338.                 $this->twig->addGlobal('seo_meta_title'$seoHeader->getMetatitle());
  339.                 $this->twig->addGlobal('seo_keywords'$seoHeader->getKeywords());
  340.             }
  341.             $gtmConfig $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'google_tag_manager']);
  342.             $gtmId null;
  343.             if ($gtmConfig) {
  344.                 $configGtm json_decode($gtmConfig->getValue(), true);
  345.                 $domainGtm $request->getHost();
  346.                 $domainGtm preg_replace('/^www\./'''$domainGtm);
  347.                 if (isset($configGtm['Keys'][$domainGtm])) {
  348.                     $gtmId $configGtm['Keys'][$domainGtm];
  349.                 } elseif (isset($configGtm['Default'])) {
  350.                     $gtmId $configGtm['Default'];
  351.                 }
  352.                 $this->twig->addGlobal('gtmId'$gtmId);
  353.             }
  354.             $socialMetaTagEntity $this->em->getRepository(SocialMetaTag::class)->findByUrl($finalUrl$agency);
  355.             if (null !== $socialMetaTagEntity) {
  356.                 $metaTags = [
  357.                     'og_type' => $socialMetaTagEntity->getOgType(),
  358.                     'og_title' => $socialMetaTagEntity->getOgTitle(),
  359.                     'og_description' => $socialMetaTagEntity->getOgDescription(),
  360.                     'og_url' => $socialMetaTagEntity->getOgUrl(),
  361.                     'og_image' => $socialMetaTagEntity->getOgImage(),
  362.                     'og_site_name' => $socialMetaTagEntity->getOgSiteName(),
  363.                     'fb_admins' => $socialMetaTagEntity->getFbAdmins(),
  364.                     'og_locale' => $socialMetaTagEntity->getOgLocale(),
  365.                     'og_locale_alternate' => $socialMetaTagEntity->getOgLocaleAlternate(),
  366.                     'twitter_card' => $socialMetaTagEntity->getTwitterCard(),
  367.                     'twitter_site' => $socialMetaTagEntity->getTwitterSite(),
  368.                     'twitter_creator' => $socialMetaTagEntity->getTwitterCreator(),
  369.                     'twitter_title' => $socialMetaTagEntity->getTwitterTitle(),
  370.                     'twitter_description' => $socialMetaTagEntity->getTwitterDescription(),
  371.                     'twitter_url' => $socialMetaTagEntity->getTwitterUrl(),
  372.                     'twitter_image' => $socialMetaTagEntity->getTwitterImage(),
  373.                 ];
  374.                 foreach ($metaTags as $key => $value) {
  375.                     if ($value !== null) {
  376.                         $this->twig->addGlobal($key$value);
  377.                     }
  378.                 }
  379.             }
  380.             $now = new \Datetime();
  381.             $agencyJson json_encode([
  382.                 'id' => $agency->getId(),
  383.                 'name' => $agency->getName(),
  384.                 'date' => $now->format('l, Y-F-d H:i:s'),
  385.             ]);
  386.             // verificar assets folder
  387.             $sessionSufixAssetsFolder $this->aviaturSufixAssetsFolder;
  388.             $defaultAssetsFolder $this->aviaturDefaultAssetsFolder;
  389.             if ('' == $agency->getAssetsFolder() || null == $agency->getAssetsFolder()) {
  390.                 // set default assets folder
  391.                 $this->session->set($domain.$sessionSufixAssetsFolder$defaultAssetsFolder);
  392.             } elseif (!$this->session->has($domain.$sessionSufixAssetsFolder)) {
  393.                 $this->session->set($domain.$sessionSufixAssetsFolder$agency->getAssetsFolder());
  394.             }
  395.             // verificar parametros por defecto y especificos para la agencia.
  396. //            if (!$this->session->has($domain . $this->sessionSufixParameters)) {
  397.             $parameters $this->em->getRepository(Parameter::class)->findParameters($agency);
  398.             if ($parameters) {
  399.                 $array = [];
  400.                 foreach ($parameters as $item) {
  401.                     $array += [
  402.                         $item['name'] => $item['value'],
  403.                     ];
  404.                 }
  405.                 $this->session->set($domain.$this->sessionSufixParametersjson_encode($array));
  406.             } else {
  407.                 $this->exceptionLog->log(
  408.                     'Error Fatal',
  409.                     'No hay parametros por defecto ni especificos para asignar a la agencia: '.$agencyJson,
  410.                     null,
  411.                     false
  412.                 );
  413.             }
  414.             if ($this->changeCoin->validateChangeCoin($_route)) {
  415.                 if ($request->query->has('currency') || $request->request->has('typeCoin')) {
  416.                     $this->changeCoin->removeSessionValues();
  417.                     $typeCoin $request->query->has('currency') ? $request->query->get('currency') : $request->request->get('typeCoin');
  418.                     $sessionVariables = [
  419.                         'typeCoin' => $typeCoin,
  420.                         'typeCoinMemory' => $typeCoin,
  421.                         'typeCountry' => strtolower(mb_substr($typeCoin02)),
  422.                     ];
  423.                     $this->changeCoin->setSessionValues($sessionVariables);
  424.                 } else {
  425.                     if (!$this->session->has('typeCoin')) {
  426.                         if ($this->session->has('typeCoinMemory')) {
  427.                             $typeCoin $this->session->get('typeCoinMemory');
  428.                             $sessionVariables = [
  429.                                 'typeCoin' => $typeCoin,
  430.                                 'typeCountry' => strtolower(mb_substr($typeCoin02)),
  431.                             ];
  432.                         } else {
  433.                             $sessionVariables = [
  434.                                 'typeCoin' => 'COP',
  435.                                 'typeCountry' => 'co',
  436.                             ];
  437.                         }
  438.                         $this->changeCoin->setSessionValues($sessionVariables);
  439.                     }
  440.                 }
  441.                 $this->changeCoin->InfoCoin('COP');
  442.             }
  443.             if($post->has('token')) {
  444.                 try {
  445.                     $claims $this->aviaturPlusLogin->decodeToken($post->get('token'));
  446.                 } catch(\Exception $ex) {
  447.                     $response = new RedirectResponse('http://miavianet.aviatur.com.co');
  448.                     return $event->setResponse($response);
  449.                 }
  450.                 $ttl $claims['exp'] - $claims['iat'];
  451.                 $this->aviaturPlusLogin->markJtiAsProcessed($claims['jti'], $ttl);
  452.                 // Obtener datos del usuario
  453.                 $userData $claims['data'];
  454.                 $this->session->set('operatorId'$userData['operatorId']);
  455.                 $this->session->set('operatorName'$userData['operatorName']);
  456.                 $this->session->set('airlineFront'$userData['airline']);
  457.                 $this->session->set('flightAdapterId'$userData['flightProviderIds']);
  458.                 $this->session->set('officeId'$userData['officeId']);
  459.                 $this->session->set('externalId'$userData['externalId']);
  460.                 $this->session->set('hotelAdapterId'$userData['hotelProviderIds']);
  461.                 $this->getFrontUserData($userData['operatorId'], $domain);
  462.             }
  463.             if ($post->has('operatorId') && !$this->session->has('operatorId')) {
  464.                 $this->session->set('operatorId'$post->get('operatorId'));
  465.                 $this->session->set('operatorName'$post->get('operatorName'));
  466.                 $this->session->set('airlineFront'$post->get('airline'));
  467.                 if ($post->has('adapterId')) {
  468.                     $this->session->set('flightAdapterId'$post->get('adapterId'));
  469.                 } elseif ($post->get('flightProviderIds')) {
  470.                     $this->session->set('flightAdapterId'$post->get('flightProviderIds'));
  471.                     $this->session->set('officeId'$post->get('officeId'));
  472.                     $this->session->set('externalId'$post->get('externalId'));
  473.                 }
  474.                 if ($post->has('cencosud')) {
  475.                     $this->session->set('frontCencosud''1');
  476.                 } elseif ($this->session->has('frontCencosud')) {
  477.                     $this->session->remove('frontCencosud');
  478.                 }
  479.                 $this->session->set('hotelAdapterId'$post->get('hotelProviderIds'));
  480.                 $this->getFrontUserData($post->get('operatorId'), $domain);
  481.             }
  482.             // Validar agencia aval y token para inicio de sesion
  483.             if ($agency->getAssetsFolder() == 'aval') {
  484.                 if (isset($_GET['authorization']) || $this->session->has('token')) {
  485.                     $response $this->aviaturAthServices->validateToken(["token" => $_GET['authorization'] ?? $this->session->get('token')], FALSE);
  486.                     if (!isset($response['error'])) {
  487.                         if ($response['ok']['code'] != 0) {
  488.                             $this->session->remove('token');
  489.                             $this->session->remove('userAth');
  490.                             $redirectError $this->aviaturErrorHandler->errorRedirectNoEmail($this->router->generate('aviatur_general_homepage'), 'Sesión Inactiva''La sesión ha caducado');
  491.                             return new RedirectResponse($redirectError);
  492.                         } else {
  493.                             if (!$this->session->has('token')) {
  494.                                 $this->session->set('token'$_GET['authorization'] ?? $this->session->get('token'));
  495.                                 $decodedToken json_encode(AviaturWebService::decodeJWT($_GET['authorization'], $this->loginKey, ['RS256']));
  496.                                 $this->session->set('userAth'$decodedToken);
  497.                             } else {
  498.                                 if (isset($_GET['authorization']) && $this->session->has('token') && $this->session->get('token') != $_GET['authorization']) {
  499.                                     $this->session->set('token'$_GET['authorization']);
  500.                                     $decodedToken json_encode(AviaturWebService::decodeJWT($_GET['authorization'], $this->loginKey, ['RS256']));
  501.                                     $this->session->set('userAth'$decodedToken);
  502.                                 }
  503.                             }
  504.                         }
  505.                     } else {
  506.                         $this->session->remove('token');
  507.                         $this->session->remove('userAth');
  508.                         $redirectError $this->aviaturErrorHandler->errorRedirectNoEmail($this->router->generate('aviatur_general_homepage'), 'Sesión Inactiva''La sesión ha caducado');
  509.                         return new RedirectResponse($redirectError);
  510.                     }
  511.                 }
  512.             } else {
  513.                 if ($post->has('token')) {
  514.                     $this->session->set('token'$post->get('token'));
  515.                 }
  516.             }
  517.             if ((false !== strpos($agency->getDomainsecure(), 'b2t')) && (!$this->session->has('operatorId'))) {
  518.                 if (false === strpos($server->get('REQUEST_URI'), 'trenes/confirmar-reserva')) {
  519.                     $response = new RedirectResponse('http://miavianet.aviatur.com.co');
  520.                     return $event->setResponse($response);
  521.                 }
  522.             }
  523. //            }
  524.         } else {
  525.             $response = new RedirectResponse('https://www.aviatur.com');
  526.             return $event->setResponse($response);
  527.         }
  528.         if (null != $this->tokenStorage->getToken() && $securityContext->isGranted('IS_AUTHENTICATED_REMEMBERED')) {
  529.             $customer $this->tokenStorage->getToken()->getUser();
  530.             if ($customer instanceof Customer) {
  531.                 $city $customer->getCity();
  532.                 $this->em->persist($customer);
  533.                 if (null == $city) {
  534.                     $dataCity $this->em->getRepository(\Aviatur\GeneralBundle\Entity\City::class)->findOneBy(['id' => '2164']);
  535.                     $dataCountry $this->em->getRepository(\Aviatur\GeneralBundle\Entity\Country::class)->findOneBy(['id' => '165']);
  536.                     $customer->setCity($dataCity);
  537.                     $customer->setCountry($dataCountry);
  538.                     $customer->setAviaturclientid(0);
  539.                     $customer->setAcceptInformation(0);
  540.                     $customer->setAcceptSms(0);
  541.                     $customer->setPersonType(8);
  542.                     $customer->setFrecuencySms(0);
  543.                     if (!$customer->getBirthdate()) {
  544.                         $date = new \DateTime();
  545.                         $date->sub(new \DateInterval('P19Y'));
  546.                         $customer->setBirthdate($date);
  547.                         $this->fieldCompletionAlert($customer'Birthdate'$date);
  548.                     }
  549.                     $this->em->persist($customer);
  550.                 }
  551.                 if (!$customer->getCity()) {
  552.                     $customer->completeCity($this->em);
  553.                     $this->em->flush();
  554.                     $this->cityNullAlert($customer$request);
  555.                 }
  556.             }
  557.         }
  558.         if (!$this->session->has('headerPromoStart')) {
  559.             $homePromoTime $this->em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoTime::class)->findOneByHomePromoList(2);
  560.             $this->session->set('headerPromoStart'$homePromoTime->getStartDate());
  561.             $this->session->set('headerPromoEnd'$homePromoTime->getEndDate());
  562.         }
  563.     }
  564.     private function fieldCompletionAlert($customer$field$newval)
  565.     {
  566.         $env $this->env;
  567.         $message = (new \Swift_Message())
  568.                 ->setContentType('text/html')
  569.                 ->setFrom('errors.'.$env.'@aviatur.com')
  570.                 ->setTo([$this->emailNotification'jorge.ubaque@aviatur.com'])
  571.                 ->setSubject('Customer Registration Issue: '.$field)
  572.                 ->setBody('The system has automatically set a new value to field ('.$field.') for user:<br><br>
  573.                                 username: '.$customer->getUsername().'<br>
  574.                                 customer_id: '.$customer->getId().'<br><br>
  575.                                 The field was set to: '.print_r($newvaltrue).'
  576.                                 ');
  577.         $this->mailer->send($message);
  578.         return true;
  579.     }
  580.     private function cityNullAlert($customer$request)
  581.     {
  582.         $env $this->env;
  583.         $message = (new \Swift_Message())
  584.                 ->setContentType('text/html')
  585.                 ->setFrom('errors.'.$env.'@aviatur.com')
  586.                 ->setTo([$this->emailNotification'jorge.ubaque@aviatur.com'])
  587.                 ->setSubject('Customer Registration Issue: City NULL')
  588.                 ->setBody('The system has detected that City is still null after all filters. The entity has set the default values, please check.<br><br>Customer Info:<br><br>
  589.                                 Username: '.$customer->getUsername().'<br>
  590.                                 Customer_id: '.$customer->getId().'<br><br>
  591.                                 Server info: <pre>'.print_r($request->servertrue).'</pre><br><br>
  592.                                 ');
  593.         $this->mailer->send($message);
  594.         return true;
  595.     }
  596.     private function getAdressAgency($address){
  597.             $addressexplode(','$address);
  598.         return $address;
  599.     }
  600.     private function getFrontUserData($operatorId$domain):void {
  601.         $customerModel = new CustomerModel();
  602.         $this->aviaturWebService->setUrls(json_decode($this->session->get($domain.$this->sessionSufixParameters)));
  603.         $responseAgent $this->aviaturWebService->callWebService('GENERALLAVE''dummy|http://www.aviatur.com.co/dummy/'$customerModel->getXmlAgent($operatorId));
  604.         $this->session->set('front_user'$responseAgent->asXml());
  605.         $responseAgentAdditionals $this->aviaturWebService->callWebService('GENERALLAVE''dummy|http://www.aviatur.com.co/dummy/'$customerModel->getXmlAgentAdditionals($operatorId));
  606.         $this->session->set('front_user_additionals'$responseAgentAdditionals->asXml());
  607.     }
  608. }