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

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