<?php
namespace Aviatur\GeneralBundle\Controller;
use Aviatur\FlightBundle\Entity\AdminFeeWhitemark;
use Aviatur\FlightBundle\Services\SearchFlightCookie;
use Aviatur\FormBundle\Entity\Newsletter;
use Aviatur\GeneralBundle\Entity\Alerts;
use Aviatur\GeneralBundle\Entity\Whitemark;
use Aviatur\GeneralBundle\Services\AviaturErrorHandler;
use Aviatur\GeneralBundle\Services\AviaturPixeles;
use Aviatur\GeneralBundle\Services\AviaturUpdatePromoProduct;
use Aviatur\TwigBundle\Services\TwigFolder;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\BinaryFileResponse;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Doctrine\Persistence\ManagerRegistry;
use Aviatur\GeneralBundle\Services\AviaturLogSave;
class GeneralController extends AbstractController
{
public function indexAction(Request $request, ManagerRegistry $registry, SessionInterface $session, SearchFlightCookie $searchFlightCookie, AviaturUpdatePromoProduct $aviaturUpdatePromoProduct, TwigFolder $twigFolder, AviaturPixeles $aviaturPixeles)
{
$cookieLastSearch = $searchFlightCookie->searchFlightCookie();
$agencyId = $session->get('agencyId');
$em = $registry->getManager();
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($agencyId);
// Agregar link de redireccion para iniciar sesión en portal de aval
$link_portal_aval = $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName('aviatur_aval_redirection');
$config_links_aval = json_decode($link_portal_aval->getValue());
$redirect_to_aval = !empty($link_portal_aval) ? $config_links_aval->Config->links->logo : '' ;
$login_aval = !empty($link_portal_aval) ? $config_links_aval->Config->links->login : '' ;
$session->set('link_portal_aval', $redirect_to_aval);
$session->set('login_portal_aval', $login_aval);
$promoType = 'main';
$promoTypeBanners = 'main-banners';
$promoTypeEscapadas = 'main-escapadas';
$promoTypeExperiencias = 'main-experiencias';
$promoTypeRecommendations = 'main-recommendations';
$blackFridayDate = $em->createQuery('SELECT a,b FROM AviaturEditionBundle:HomePromoTime a JOIN a.homePromoList b WHERE b.type = :promo');
$blackFridayDateInfo = $blackFridayDate->setParameter('promo', 'black-friday-col')->getResult();
$activeBlackFriday = false;
if ((is_countable($blackFridayDateInfo) ? count($blackFridayDateInfo) : 0) > 0) {
$date_start = strtotime(date($blackFridayDateInfo[0]->getStartDate()->format('Y-m-d H:i:s')));
$date_end = strtotime(date($blackFridayDateInfo[0]->getEndDate()->format('Y-m-d H:i:s')));
$date_now = strtotime(date('Y-m-d H:i:s'));
if ($date_start <= $date_now && $date_end >= $date_now) {
$activeBlackFriday = true;
}
}
$active_background_home = ['active' => false];
$parametername = 'aviatur_background_home_image';
$background_home_query = $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName($parametername);
if ((is_countable($background_home_query) ? count($background_home_query) : 0) > 0) {
$backgroundinfo = json_decode($background_home_query->getDescription());
$arrayinfo = [];
foreach ($backgroundinfo as $key => $info) {
if ((int) $key == (int) $agencyId) {
foreach ($info as $i) {
if ('' == $i->date_end) {
if (strtotime(date($i->date_start)) <= $date_now && 'true' == $i->active) {
$arrayinfo = $i;
}
} else {
if (strtotime(date($i->date_start)) <= $date_now && strtotime(date($i->date_end)) >= $date_now && 'true' == $i->active) {
$active_background_home = ['active' => true, 'name' => $i->img, 'type' => $i->type];
}
}
}
}
}
if (false == $active_background_home['active']) {
if ((is_countable($arrayinfo) ? count($arrayinfo) : 0) > 0) {
$active_background_home = ['active' => true, 'name' => $arrayinfo->img, 'type' => $arrayinfo->type];
}
}
}
$promoSearchAgency = $aviaturUpdatePromoProduct->promoSearchAgency($agencyId);
if (true === $session->has('whitemark')) {
$promoType = $promoType.'_'.$session->get('whitemark');
}
$info = $this->getOS($request);
$em = $registry->getManager();
$parameter = $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'agency_excluded_list_promotional_cards']);
if ($parameter) {
// Decodificar el JSON a un array PHP
$agenciesExcluded = json_decode($parameter->getValue(), true);
// Verificar si la decodificación fue exitosa
if (!is_array($agenciesExcluded)) {
// Manejar el error si la decodificación no es un array
throw new \Exception('La lista de agencias excluidas no es válida.');
}
} else {
// Si no existe el parámetro, usar la lista estática como fallback
$agenciesExcluded = [
'Aviatur S.A.S.', 'Aviatur S.A.S. Metasearch', 'QA Aval', 'Aval', 'Aviacaribbean', 'Aviatur - WorldPay', 'Aviatur Carnaval BAQ MB', 'Aviatur Colombia', 'Aviatur Colombia EN',
'Aviatur Colombia ES', 'Aviatur Ecoturismo', 'Aviatur Kioskos', 'Aviatur Metasearch Mexico', 'Aviatur Mexico', 'Aviatur Mexico QA', 'Aviatur Mobile', 'Aviatur PinBus',
'Aviatur - Pruebas', 'BabyMarket', 'Buceo Colombia', 'Cielos Abiertos', 'Corona Aviatur', 'Directo a la Playa', 'Experiencias Jet-Set', 'Great Vibes', 'Landing visa',
'Lufthansa City Center', 'Megatours', 'Octopus Agents', 'Octopus Marcas Blancas', 'Octopus Travel QA', 'Panturismo Marcas Blancas', 'Parque Tayrona', 'Representaciones Pasabordo WM',
'Rokatur Marcas Blancas', 'RollingTrips', 'Star World', 'Swissandina', 'Takentours', 'TerraNet Marcas Blancas', 'Turiscol Ltda.', 'Aviatur S.A.', 'Union de Representaciones',
'Union de Representaciones - Whitemark', 'Virtuoso', 'Claro', 'WeCare', 'Octopus Travel Ltda.', 'Aviatur Site', 'Aviatur S.A.S. - BBVA', 'Aviatur Welcome Beds', 'JTR Aviatur', 'QA.pruebaAviatur S.A.S.',
];
}
$agencyPromoId = 172;
$validationAgencyFolder = false;
foreach ($agenciesExcluded as $agencyExcluded) {
if ($agencyExcluded === $agency->getName()) {
$agencyPromoId = $agency->getId();
$validationAgencyFolder = true;
}
}
$homePromoList = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => $promoType, 'agency' => $agencyPromoId]);
if (null != $homePromoList) {
$homePromoTitle = $homePromoList->getTitle();
$homePromoSubtitle = $homePromoList->getSubtitle();
$homePromos = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoList, ['date' => 'DESC']);
} else {
$homePromoTitle = null;
$homePromoSubtitle = null;
$homePromos = [];
}
if (null != $homePromos) {
$linkSwitchPromos = [];
foreach ($homePromos as $homePromo) {
if ('banner' == $homePromo->getSize() && $homePromo->getSwitch()) {
$linkSwitchPromos[] = $homePromo;
}
}
} else {
$linkSwitchPromos = [];
}
$homePromoListBanners = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => $promoTypeBanners, 'agency' => $agencyPromoId]);
if (null != $homePromoListBanners) {
$homePromoBannersTitle = $homePromoListBanners->getTitle();
$homePromoBannersSubtitle = $homePromoListBanners->getSubtitle();
$homePromosBanners = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoListBanners, ['date' => 'DESC']);
} else {
$homePromoBannersTitle = null;
$homePromoBannersSubtitle = null;
$homePromosBanners = [];
}
$homePromoListEscapadas = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => $promoTypeEscapadas, 'agency' => $agencyPromoId]);
if (null != $homePromoListEscapadas) {
$homePromoEscapadasTitle = $homePromoListEscapadas->getTitle();
$homePromoEscapadasSubtitle = $homePromoListEscapadas->getSubtitle();
$homePromosEscapadas = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoListEscapadas, ['date' => 'DESC']);
} else {
$homePromoEscapadasTitle = null;
$homePromoEscapadasSubtitle = null;
$homePromosEscapadas = [];
}
$homePromoListExperiencias = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => $promoTypeExperiencias, 'agency' => $agencyPromoId]);
if (null != $homePromoListExperiencias) {
$homePromoExperienciasTitle = $homePromoListExperiencias->getTitle();
$homePromoExperienciasSubtitle = $homePromoListExperiencias->getSubtitle();
$homePromosExperiencias = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoListExperiencias, ['date' => 'DESC']);
} else {
$homePromoExperienciasTitle = null;
$homePromoExperienciasSubtitle = null;
$homePromosExperiencias = [];
}
$homePromoListRecommendations = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromoList::class)->findOneBy(['type' => $promoTypeRecommendations, 'agency' => $agencyPromoId]);
if (null != $homePromoListRecommendations) {
$homePromoRecommendationsTitle = $homePromoListRecommendations->getTitle();
$homePromoRecommendationsSubtitle = $homePromoListRecommendations->getSubtitle();
$homePromosRecommendations = $em->getRepository(\Aviatur\EditionBundle\Entity\HomePromo::class)->findByHomePromoList($homePromoListRecommendations, ['date' => 'DESC']);
} else {
$homePromoRecommendationsTitle = null;
$homePromoRecommendationsSubtitle = null;
$homePromosRecommendations = [];
}
$configsFlightCalendarAgency = $em->getRepository(\Aviatur\FlightBundle\Entity\ConfigFlightCalendarAgency::class)->findProviderForFlightsWithAgency($agency);
$providerInfo = true;
$providers = [];
foreach ($configsFlightCalendarAgency as $configFlightCalendarAgency) {
$provider = $configFlightCalendarAgency->getProvider()->getProvideridentifier();
if (!in_array($provider, $providers)) {
$providers[] = $provider;
}
}
$providerIds = implode(';', $providers);
if (empty($providerIds)) {
$providerInfo = false;
}
$newsletter = new Newsletter();
$newsletterForm = $this->createForm(\Aviatur\FormBundle\Form\NewsletterAsyncType::class, $newsletter);
$isFront = $session->has('operatorId');
$pixelInfo = [];
// if (!$isFront) {
// $pixel['dataxpand'] = true;
// $pixelInfo = $aviaturPixeles->verifyPixeles($pixel, "home", "isActive", $agency->getAssetsFolder(), false);
// }
$parameters = json_decode($session->get($request->getHost().'[parameters]'));
if (isset($parameters->switch_redirect) && $parameters->switch_redirect == 1 && 5 == $agencyId) {
header('Location: https://vuelos.aviatur.com/');
exit;
}
$currentDate = date('Y-m-d');
$endDateCensocud = $parameters->date_end_cencosud;
$activeCheckCencosud = (strtotime($endDateCensocud) >= strtotime($currentDate));
$bannerHome = $parameters->aviatur_banner_home ?? false;
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($session->get('agencyId'));
if ($agency->getDomainsecure() == $agency->getDomain() && '443' != $agency->getCustomport()) {
$safeUrl = 'https://'.$agency->getDomain();
} else {
$safeUrl = 'https://'.$agency->getDomainsecure();
}
$agencyFolder = $twigFolder->twigFlux();
$socialmedia = json_decode($agency->getSocialmedia(), true);
if ($socialmedia) {
$facebook = $socialmedia['Facebook'] ?? null;
$instagram = $socialmedia['Instagram'] ?? null;
$linkedin = $socialmedia['Linkedin'] ?? null;
}
$parameter = $em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneBy(['name' => 'aviatur_search_explore', 'value' => 1]);
$validateExplore = null === $parameter ? 0 : 1;
$props = [
'validateExplore' => $validateExplore,
'promoSearchAgency' => $promoSearchAgency,
'blackFriday' => $activeBlackFriday,
'background_home' => $active_background_home,
'banner_home' => $bannerHome,
'pixel_info' => $pixelInfo,
'providerInfo' => $providerInfo,
'browser' => $info,
'agencyId' => $agencyId,
'cookieLastSearch' => $cookieLastSearch,
'homePromos' => $homePromos,
'titlePromo' => $homePromoTitle,
'subtitlePromo' => $homePromoSubtitle,
'promoType' => $promoType,
'homePromosRecommendations' => $homePromosRecommendations,
'titlePromoRecommendations' => $homePromoRecommendationsTitle,
'subtitlePromoRecommendations' => $homePromoRecommendationsSubtitle,
'promoTypeRecommendations' => $promoTypeRecommendations,
'homePromosBanner' => $homePromosBanners,
'titlePromoBanner' => $homePromoBannersTitle,
'subtitlePromoBanner' => $homePromoBannersSubtitle,
'promoTypeBanner' => $promoTypeBanners,
'homePromosEscapadas' => $homePromosEscapadas,
'titlePromoEscapadas' => $homePromoEscapadasTitle,
'subtitlePromoEscapadas' => $homePromoEscapadasSubtitle,
'promoTypeEscapadas' => $promoTypeEscapadas,
'homePromosExperiencias' => $homePromosExperiencias,
'titlePromoExperiencias' => $homePromoExperienciasTitle,
'subtitlePromoExperiencias' => $homePromoExperienciasSubtitle,
'promoTypeExperiencias' => $promoTypeExperiencias,
'newsletter_form' => $newsletterForm->createView(),
'activeCheckCencosud' => $activeCheckCencosud,
'safeUrl' => $safeUrl,
'validationAgencyFolder' => $validationAgencyFolder,
'linkSwitchPromos' => $linkSwitchPromos,
'socialmedia' => $socialmedia,
];
$response = $this->render($twigFolder->twigExists('@AviaturTwig/' . $agencyFolder . '/Search/General/mainSearch_index.html.twig'), $props);
$response->setSharedMaxAge(720);
$response->headers->addCacheControlDirective('must-revalidate', true);
return $response;
}
public function loginDataAction(Request $request, ManagerRegistry $registry, SessionInterface $session)
{
header('Access-Control-Allow-Origin: *');
$em = $registry->getManager();
$refererWhitemark = $request->request->get('referer');
$whitemarkAgency = $em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['referer' => $refererWhitemark]);
$data = [
'status' => 'error',
];
if (null != $whitemarkAgency) {
$whitemarkAgencyDataInfo = [
'whitemark_id' => $whitemarkAgency->getId(),
'whitemark_name' => $whitemarkAgency->getName(),
'whitemark_phone' => $whitemarkAgency->getPhone(),
'whitemark_email' => $whitemarkAgency->getEmail(),
'whitemark_address' => $whitemarkAgency->getAddress(),
'whitemark_phones' => json_decode($whitemarkAgency->getPhonesContact(), true),
];
if (count($whitemarkAgencyDataInfo) > 0) {
$session->set('whitemarkDataInfo', $whitemarkAgencyDataInfo);
$session->set('whitemark', $refererWhitemark);
$data = [
'status' => 'success',
'data' => $whitemarkAgencyDataInfo,
];
return $this->json($data);
}
} else {
return $this->json($data);
}
}
public function blankCloseAction(SessionInterface $session, ManagerRegistry $registry, TwigFolder $twigFolder)
{
$em = $registry->getManager();
$agencyId = $session->get('agencyId');
$agencyFolder = $twigFolder->twigFlux();
return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/General/Templates/_blankClose.html.twig'));
}
public function getOS(Request $request)
{
$user_agent = $request->server->get('HTTP_USER_AGENT');
$os_platform = 'unknown';
$actual_url = $request->server->get('HTTP_HOST');
$os_array = [
'/windows/i' => 'windows',
'/Windows Phone/i' => 'windows',
'/MSIE/i' => 'windows',
'/macintosh|mac os x/i' => 'iphone',
'/mac_powerpc/i' => 'iphone',
'/iphone/i' => 'iphone',
'/ipod/i' => 'iphone',
'/ipad/i' => 'iphone',
'/android/i' => 'android',
'/webos/i' => 'mobile',
];
if (false === strripos($actual_url, 'mobile.')) {
foreach ($os_array as $regex => $value) {
if (preg_match($regex, $user_agent)) {
$os_platform = $value;
}
}
}
return $os_platform;
}
public function archiveAction(ParameterBagInterface $parameterBag, AviaturErrorHandler $aviaturErrorHandler, $id)
{
$projectDir = $parameterBag->get('kernel.project_dir');
if (!file_exists($projectDir.'/app/serviceLogs/CashTransaction/'.$id)) {
return $this->redirect($aviaturErrorHandler->errorRedirect($this->generateUrl('homepage'), '', 'Hubo algún problema al descargar el archivo, por favor comuníquese con nosotros a los teléfonos 57-1-5879640 o 57-1-3821616, o vía e-mail al correo soportepagoelectronico@aviatur.com.co, o revise su correo electrónico.'));
}
return new BinaryFileResponse($projectDir.'/app/serviceLogs/CashTransaction/'.$id);
}
public function changeCoinAction(Request $request, AviaturLogSave $aviaturLogSave, SessionInterface $session)
{
header('Access-Control-Allow-Origin: *');
if (false !== strpos($request->query->get('typeCountry'), '||')) {
$selectionArray = explode('||', $request->query->get('typeCountry'));
$transactionId = base64_decode($selectionArray[1]);
$session->set($transactionId.'[typeCoin]', $session->get('typeCoin'));
$session->set($transactionId.'[RateChange]', $session->get('RateChange'));
$session->set($transactionId.'[financialValue]', $session->get('financialValue'));
$session->set($transactionId.'[trmValue]', $session->get('trmValue'));
$aviaturLogSave->logSave(print_r([
'typeCoin' => $session->get('typeCoin'),
'RateChange' => $session->get('RateChange'),
'financialValue' => $session->get('financialValue'),
'trmValue' => $session->get('trmValue'),
], true), 'ChangeCoinDetail', 'RQ', $transactionId);
}
return new Response(
json_encode(
[
'typeCoin' => $session->get('typeCoin'),
'typeCountry' => $session->get('typeCountry'),
'CoinValue' => $session->get('CoinValue'),
'RateDiff' => $session->get('RateDiff'),
]
)
);
}
public function promoSearchAgencyAction(AviaturUpdatePromoProduct $aviaturUpdatePromoProduct)
{
header('Access-Control-Allow-Origin: *');
$promosAgencySearch = $aviaturUpdatePromoProduct->promoSearchAgency();
return new Response($promosAgencySearch);
}
public function alertAction(Request $request, ManagerRegistry $registry, SessionInterface $session)
{
$alert = new Alerts();
$form = $this->createForm(\Aviatur\GeneralBundle\Form\AlertsType::class, $alert);
$em = $registry->getManager();
$agencyId = $session->get('agencyId');
if ('POST' == $request->getMethod()) {
$form->handleRequest($request);
if ($form->isValid()) {
if ($request->isXmlHttpRequest()) {
$findAlert = $em->getRepository(\Aviatur\GeneralBundle\Entity\Alerts::class)->findBy(['email' => $alert->getEmail(), 'url' => $alert->getUrl(), 'agency' => $agencyId]);
if (empty($findAlert)) {
$alert->setEntrydate(new \DateTime());
$alert->setSearchUrl(new \DateTime());
$bestPrice = $em->getRepository(\Aviatur\GeneralBundle\Entity\BestPrices::class)->findByBestPriceUrl($alert->getUrl());
if (!empty($bestPrice)) {
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($agencyId);
if (!empty($agency)) {
$alert->setPrice($bestPrice[0]->getBestPrice());
$alert->setUpdatePrice(0);
$alert->setTrip($bestPrice[0]->getTrip());
$alert->setDeparture($bestPrice[0]->getDeparture());
$alert->setRound($bestPrice[0]->getRound());
$alert->setAgency($agency);
$em->persist($alert);
$em->flush();
$response = new Response();
$output = ['success' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
} else {
$response = new Response();
$output = ['failToken' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['failToken' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['error' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['failToken' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['failToken' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['failToken' => true];
$response->headers->set('Content-Type', 'application/json');
$response->setContent(json_encode($output));
return $response;
}
}
public function searchBestPricesAction(Request $request, ManagerRegistry $registry)
{
$em = $registry->getManager();
if ($request->isXmlHttpRequest()) {
$url = $request->request->get('url');
$price = $request->request->get('price');
$bestPrice = $em->getRepository(\Aviatur\GeneralBundle\Entity\BestPrices::class)->findByBestPriceUrl($url);
if (!empty($bestPrice)) {
$priceBP = $bestPrice[0]->getBestprice();
if ($price == $priceBP || $price > $priceBP) {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
} else {
$response = new Response();
$output = ['response' => 'success'];
$response->setContent(json_encode($output));
return $response;
}
} else {
$ch = curl_init('http://www.aviatursym.com'.$url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['X-Requested-With: XMLHttpRequest']);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = curl_exec($ch);
curl_close($ch);
$posError = strpos($result, '66002');
$posDisponibilidad = strpos($result, 'No encontramos');
$posFechas = strpos($result, 'búsqueda incorrectas');
if (false != $posError || false != $posDisponibilidad || false != $posFechas) {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
} else {
$bestPriceCURL = $em->getRepository(\Aviatur\GeneralBundle\Entity\BestPrices::class)->findByBestPriceUrl($url);
if (!empty($bestPriceCURL)) {
$priceBP = $bestPriceCURL[0]->getBestprice();
if ($price == $priceBP || $price > $priceBP) {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
} else {
$response = new Response();
$output = ['response' => 'success'];
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
}
}
}
} else {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
}
}
public function detenerAlertaAction(AviaturErrorHandler $aviaturErrorHandler, ManagerRegistry $registry, $id)
{
$em = $registry->getManager();
$alert = $em->getRepository(\Aviatur\GeneralBundle\Entity\Alerts::class)->find($id);
if (!empty($alert)) {
$em->remove($alert);
$em->flush();
return $this->redirect($aviaturErrorHandler->errorRedirectNoEmail($this->generateUrl('homepage'), 'Detener alerta', 'La alerta ha sido eliminada de manera exitosa. Gracias por preferirnos.'));
} else {
return $this->redirect($aviaturErrorHandler->errorRedirectNoEmail($this->generateUrl('homepage'), 'Detener alerta', 'La alerta ha sido eliminada de manera exitosa. Gracias por preferirnos.'));
}
}
public function searchBestPriceXtremeAction(Request $request, ManagerRegistry $registry)
{
$baseFare = null;
$compareValue = null;
$bestPrice = null;
$airlineName = null;
$em = $registry->getManager();
if ($request->isXmlHttpRequest()) {
$trip = $request->request->get('trip');
$dateI = $request->request->get('dateInicial');
$dateF = $request->request->get('dateFinal');
$flightDestination = $request->request->get('destination');
$flightType = $request->request->get('flightType');
$bestPrices = $em->getRepository(\Aviatur\GeneralBundle\Entity\BestPrices::class)->findByBestPriceXtremeRange($trip, $dateI, $dateF);
if (!empty($bestPrices)) {
$arrayLength = is_countable($bestPrices) ? count($bestPrices) : 0;
$bestP = [];
if ('D' == $flightType) {
for ($i = 0; $i < $arrayLength; ++$i) {
$prices = json_decode($bestPrices[$i]->getPrices(), true);
foreach ($prices as $price) {
$baseFare = $price['baseFare'];
$compareValue = $price['compareValue'];
$bestPrice = $price['flightPrice'];
$airlineName = $price['airlineName'];
break;
}
$dateBP = strtotime($bestPrices[$i]->getDeparture());
$dateBPFormat = date('dmy', $dateBP);
$bestP[$dateBPFormat] = $bestPrice;
$BPta = $this->searchAdminFeeAction($baseFare, $compareValue, $bestPrice, $trip, $flightDestination, $airlineName);
$bestP[$dateBPFormat] = $BPta;
}
} elseif ('R' == $flightType) {
for ($i = 0; $i < $arrayLength; ++$i) {
if ('' != $bestPrices[$i]->getRound()) {
$prices = json_decode($bestPrices[$i]->getPrices(), true);
foreach ($prices as $price) {
$baseFare = $price['baseFare'];
$compareValue = $price['compareValue'];
$bestPrice = $price['flightPrice'];
$airlineName = $price['airlineName'];
break;
}
$dateBP = strtotime($bestPrices[$i]->getRound());
$dateBPFormat = date('dmy', $dateBP);
$bestP[$dateBPFormat] = $bestPrice;
$BPta = $this->searchAdminFeeAction($baseFare, $compareValue, $bestPrice, $trip, $flightDestination, $airlineName);
$bestP[$dateBPFormat] = $BPta;
}
}
}
$response = new Response();
$output = ['response' => 'success', 'bestPrices' => $bestP];
$response->setContent(json_encode($output));
return $response;
} else {
$response = new Response();
$output = ['response' => 'fail empty'];
$response->setContent(json_encode($output));
return $response;
}
} else {
$response = new Response();
$output = ['response' => 'fail'];
$response->setContent(json_encode($output));
return $response;
}
}
public function searchAdminFeeAction(ManagerRegistry $registry, SessionInterface $session, $baseFare, $compare, $price, $trip, $destination, $airline)
{
$iatas = [];
$fee = [];
$adminFe = [];
$em = $registry->getManager();
$agencyR = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($session->get('agencyId'));
$destinationCity = $em->getRepository(\Aviatur\GeneralBundle\Entity\City::class)->findOneByIatacode($destination);
$airlineCode = $em->getRepository(\Aviatur\FlightBundle\Entity\Airline::class)->findOneByName($airline);
$adminFees = $em->getRepository(\Aviatur\FlightBundle\Entity\AdminFee::class)->getAdminFeebyAgency($agencyR, $destinationCity);
$fromCurrency = $em->getRepository(\Aviatur\TrmBundle\Entity\Currency::class)->findOneByIata('USD');
$toCurrency = $em->getRepository(\Aviatur\TrmBundle\Entity\Currency::class)->findOneByIata('COP');
$TRM = $em->getRepository(\Aviatur\TrmBundle\Entity\Trm::class)->findOneBy(['fromCurrency' => $fromCurrency, 'toCurrency' => $toCurrency], ['id' => 'DESC']);
$claves = preg_split('/[-|]+/', $trip);
$typeFlight = $claves[2];
if ('R' == $typeFlight) {
$iatas[0] = $claves[0];
$iatas[1] = $claves[1];
$iatas[2] = $claves[1];
$iatas[3] = $claves[0];
} elseif ('O' == $typeFlight) {
$iatas[0] = $claves[0];
$iatas[1] = $claves[1];
}
$cityCountries = $em->getRepository(\Aviatur\SearchBundle\Entity\SearchCities::class)->findCountryCodes($iatas);
$airportCountries = $em->getRepository(\Aviatur\SearchBundle\Entity\SearchAirports::class)->findCountryCodes($iatas);
$countries = array_unique(array_merge($cityCountries, $airportCountries), SORT_REGULAR);
$type = '';
//VALIDACION SI ES INTERNACIONAL
if (sizeof($countries) > 1 || (sizeof($countries) > 0 && !in_array('CO', $countries))) {
$international = true;
$isINNS = 1;
$fromCurrency = $em->getRepository(\Aviatur\TrmBundle\Entity\Currency::class)->findOneByIata('USD');
$toCurrency = $em->getRepository(\Aviatur\TrmBundle\Entity\Currency::class)->findOneByIata('COP');
$TRM = $em->getRepository(\Aviatur\TrmBundle\Entity\Trm::class)->findOneBy(['fromCurrency' => $fromCurrency, 'toCurrency' => $toCurrency], ['id' => 'DESC']);
} else {
$international = false;
$isINNS = 0;
}
if (!in_array('CO', $countries)) {
$type = 'NNS';
++$isINNS;
}
foreach ($adminFees as $key => $adminFee) {
$airline = $adminFee['airline_id'];
$agency = $adminFee['agency_id'];
$nnsFare = (1 == $adminFee['noNationalStop']) ? 'NNS' : '';
$itFare = (1 == $adminFee['isItFare']) ? 'IT' : '';
if (null != $airline) {
$agencyFee = (null != $agency) ? 'Agency' : '';
${'airlines'.$agencyFee.'Iata'.$nnsFare.$itFare}[] = $adminFee['iata'];
${'airlines'.$agencyFee.'Key'.$nnsFare.$itFare}[] = $key;
} elseif (null != $agency) {
${'agencyKey'.$nnsFare.$itFare} = $key;
} else {
${'generalKey'.$nnsFare.$itFare} = $key;
}
}
$itFare = '';
$vendorCodes = !empty($airlineCode) ? [$airlineCode->getIata()] : [];
if ((isset(${'airlinesAgencyIata'.$type.$itFare}) && ((bool) array_intersect(${'airlinesAgencyIata'.$type.$itFare}, $vendorCodes))) || (isset(${'airlinesIata'.$type.$itFare}) && ((bool) array_intersect(${'airlinesIata'.$type.$itFare}, $vendorCodes)))) {
$agencyFee = (isset(${'airlinesAgencyIata'.$type.$itFare}) && ((bool) array_intersect(${'airlinesAgencyIata'.$type.$itFare}, $vendorCodes))) ? 'Agency' : '';
$purgeAirlinesIata = array_unique(array_intersect(${'airlines'.$agencyFee.'Iata'.$type.$itFare}, $vendorCodes));
foreach ($purgeAirlinesIata as $airlineIata) {
$airlineIatasToFee = array_keys(${'airlines'.$agencyFee.'Iata'.$type.$itFare}, $airlineIata);
$fee = null;
foreach ($airlineIatasToFee as $indexFee) {
$optionalFee = $adminFees[${'airlines'.$agencyFee.'Key'.$type.$itFare}[$indexFee]];
if (null != $optionalFee['city_id'] && $optionalFee['city_id'] == (string) $destinationCity->getId()) {
$fee = $optionalFee;
}
}
if (null == $fee) {
$fee = $adminFees[${'airlines'.$agencyFee.'Key'.$type.$itFare}[array_search($airlineIata, ${'airlines'.$agencyFee.'Iata'.$type.$itFare})]];
}
}
} elseif (isset(${'agencyKey'.$type.$itFare})) {
$fee = $adminFees[${'agencyKey'.$type.$itFare}];
} elseif (isset(${'generalKey'.$type.$itFare})) {
$fee = $adminFees[${'generalKey'.$type.$itFare}];
} else {
$fee = null;
// echo "ERROR: tarifa " . $type . " no encontrada para la aerolinea: " . $airlineIata . " y la agencia con id: " . $agency;
$administrativeCost = 0;
}
$administrativeCost = 0;
if (1 == $fee['rangeType']) {
if ($international) {
$compareValue = $compare / $TRM->getRate()->getFinantialrate();
if (($fee['rangeInternational1Start'] <= $compareValue) && ($compareValue <= $fee['rangeInternational1End'])) {
$administrativeCostRange = $fee['valueInternational1'];
} elseif (($fee['rangeInternational2Start'] <= $compareValue) && ($compareValue <= $fee['rangeInternational2End'])) {
$administrativeCostRange = $fee['valueInternational2'];
} elseif (($fee['rangeInternational3Start'] <= $compareValue) && ($compareValue <= $fee['rangeInternational3End'])) {
$administrativeCostRange = $fee['valueInternational3'];
} elseif (($fee['rangeInternational4Start'] <= $compareValue) && ($compareValue <= $fee['rangeInternational4End'])) {
$administrativeCostRange = $fee['valueInternational4'];
} elseif (($fee['rangeInternational4Start'] <= $compareValue) && 0 == $fee['rangeInternational4End']) {
$administrativeCostRange = $adminFe['valueInternational4'];
} else {
$administrativeCostRange = 0;
}
if (0 == $fee['valueType']) {
$administrativeCost += round($administrativeCostRange * $TRM->getRate()->getFinantialrate() * 1);
} else {
$administrativeCost += round(($baseFare /* + ${'tax' . $infoPassenger['Code']} */) * $administrativeCostRange);
}
} else {
if (0 == $fee['valueType']) {
if ('R' == $typeFlight) {
$administrativeCost = $fee['roundtripNational'];
} else {
$administrativeCost = $fee['onewayNational'];
}
$administrativeCost = $administrativeCost * 1;
} else {
if ('R' == $typeFlight) {
$administrativeCost = $fee['roundtripNational'];
} else {
$administrativeCost = $fee['onewayNational'];
}
$administrativeCost = $baseFare * $administrativeCost;
}
}
} else {
if ($international) {
$administrativeCost = $fee['internationalFixed'];
if (0 == $fee['valueType']) {
$administrativeCost = round($administrativeCost * $TRM->getRate()->getFinantialrate());
}
} else {
$administrativeCost = $fee['nationalFixed'];
}
if ($fee['valueType']) {
$administrativeCost = $price * $administrativeCost;
} else {
$administrativeCost = $administrativeCost * 1;
}
}
$fare = (int) $price + (int) $administrativeCost.'.00';
return (string) $fare;
}
public function filesRssAction(ManagerRegistry $registry, SessionInterface $session, TwigFolder $twigFolder)
{
$em = $registry->getManager();
$agencyId = $session->get('agencyId');
$agencyFolder = $twigFolder->twigFlux();
return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/General/Templates/filesRss.html.twig'));
}
public function daviviendaLoginAction(Request $request, ManagerRegistry $registry, SessionInterface $session, ParameterBagInterface $parameterBag, TwigFolder $twigFolder)
{
$env = $parameterBag->get('kernel.environment');
$response = [];
$environment = $env;
$em = $registry->getManager();
$parameters = json_decode($em->getRepository(\Aviatur\GeneralBundle\Entity\Parameter::class)->findOneByName('aviatur_davivienda')->getDescription(), true);
$urlAuthentication = $parameters['endPoints']['authentication'][$environment].'?client_id='.$parameters['idCliente'].'&response_type='.$parameters['responsetype'].'&scope='.$parameters['scope'];
$agencyFolder = $twigFolder->twigFlux();
$urlReturn = '@AviaturTwig/'.$agencyFolder.'/Payment/Davivienda/loginReturn.html.twig';
if ($request->isXmlHttpRequest()) {
if (!empty(json_decode($request->getContent(), true))) {
$parametersAsArray = [];
if ($content = $request->getContent()) {
$parametersAsArray = json_decode($content, true);
}
if (empty($parametersAsArray)) {
$response = $this->returnResult('error', 500, '1. Error con los parametros de entrada.');
}
if (isset($parametersAsArray['authentication'])) {
$url = $parameters['endPointsApi']['authentication'][$environment];
$response = $this->CallAPI($url, false, false, 'authentication');
if (isset($response['message']) && isset($response['message']['text']['token'])) {
$response['message']['text']['session'] = true;
$session->set('[davivienda][token]', $response['message']['text']['token']);
}
} elseif (isset($parametersAsArray['token'])) {
$url = $parameters['endPointsApi']['logindavivienda'][$environment];
$response = $this->CallAPI($url, ['token' => $parametersAsArray['token']], false, 'login-davivienda');
}
} else {
$response = $this->returnResult('error', 500, '1. Error con los parametros de entrada.');
}
} elseif (!empty($request->query->get('rstate'))) {
$infos = ['rstate', 'confirmation', 'username'];
foreach ($infos as $info) {
if (!$request->query->has($info) || empty($request->query->has($info))) {
$response = $this->returnResult('error', 500, 'Error en parametro = '.$info);
}
}
$redirect_uri = $parameters['redirect_uri'];
$rstate = $request->query->get('rstate');
$confirmation = $request->query->get('confirmation');
$username = $request->query->get('username');
$url = $urlAuthentication.'&redirect_uri='.$redirect_uri.'&rstate='.$rstate.'&confirmation='.$confirmation.'&username='.$username;
$response = $this->CallAPI($url, false, false, 'authentication_redirect');
if (isset($response['message']) && isset($response['message']['text']['access_token'])) {
if ($session->has('[davivienda][token]')) {
$token = $session->get('[davivienda][token]');
$accesToken = $em->getRepository(\Aviatur\RestBundle\Entity\OauthAccesstokenDavivienda::class)->findOneByToken($token);
$response['message']['text']['token'] = $token;
$externalLogin = [
'login' => true,
'access_token' => $response['message']['text']['access_token'],
'token_type' => $response['message']['text']['token_type'],
'token' => $token,
];
$accesToken->setExternalLogin(json_encode($externalLogin));
$em->persist($accesToken);
$em->flush();
} else {
$response = $this->returnResult('error', 500, '2. No existe token.');
}
} else {
$response = $this->returnResult('error', 500, '1. No existe Token.');
}
return $this->render($twigFolder->twigExists($urlReturn), ['response' => $response]);
} else {
$response = $this->returnResult('error', 500, 'No existe Informacion.');
return $this->render($twigFolder->twigExists($urlReturn), ['response' => $response]);
}
return $this->json($response);
}
public function validCaptchaAction(Request $request)
{
if ($request->isXmlHttpRequest()) {
$token = $request->request->get('g-recaptcha-response');
$secretKey = '6LfsqrgZAAAAAEuDXSOrdZloUv_T5qC6uu7qdXQE';
$request = 'https://www.google.com/recaptcha/api/siteverify?secret='.$secretKey.'&response='.$token;
$arrContextOptions = [
'ssl' => [
'verify_peer' => false,
'verify_peer_name' => false,
],
];
$verifydata = file_get_contents($request, false, stream_context_create($arrContextOptions));
$response = json_decode($verifydata);
if ($response->success) {
return $this->json(['status' => 'success', 'message' => 'Captcha valido']);
} else {
return $this->json(['status' => 'error', 'message' => 'Captcha inválido']);
}
}
}
// Poner siempre la palabra Action al final de la funcion
public function UserApiAction(Request $request, ManagerRegistry $registry)
{
$em = $registry->getManager();
$registros = $request->request->get('registros');
$pagina = $request->request->get('pagina');
$pagina = ($pagina * 10) - 10;
$totalRegistros = $em->createQuery('SELECT count(:total) FROM AviaturCustomerBundle:Customer')->setParameter('total', '*');
$total = $totalRegistros->getResult();
$numPaginas = (int) $total[0]['1'] / $registros;
$allUsers = $em->createQuery('SELECT c.firstname, c.id FROM AviaturCustomerBundle:Customer c ORDER BY c.id DESC')->setMaxResults($registros)->setFirstResult($pagina);
$users = $allUsers->getResult();
return $this->json(['status' => 'success', 'code' => 200, 'totalPages' => $numPaginas, 'data' => $users]);
}
public function getAllAdmiFeeWmAction(ManagerRegistry $registry)
{
$em = $registry->getManager();
//$token = $request->request->get('g-recaptcha-response');
$info = $em->getRepository(\Aviatur\FlightBundle\Entity\AdminFeeWhitemark::class)->findAll();
if (!$info) {
return $this->json(['status' => 'error', 'code' => 200, 'message' => 'No hay registros']);
}
$data = [];
foreach ($info as $item) {
$arrayTemp = [
'id' => $item->getId(),
'whitemarkId' => (null == $item->getWhitemark()) ? null : (int) $item->getWhitemark()->getId(),
'airlineId' => (null == $item->getAirline()) ? null : (int) $item->getAirline()->getId(),
'cityId' => (null == $item->getCity()) ? null : (int) $item->getCity()->getId(),
'valueType' => (int) $item->getValuetype(),
'rangeType' => (int) $item->getRangetype(),
'isActive' => (int) $item->getIsactive(),
'noNationalStop' => (int) $item->getNonationalstop(),
'isItFare' => (int) $item->getIsitfare(),
'nationalFixed' => $item->getNationalfixed(),
'internationalFixed' => $item->getInternationalfixed(),
'roundtripNational' => $item->getRoundtripnational(),
'onewayNational' => $item->getOnewaynational(),
'rangeInternational1Start' => $item->getRangeinternational1start(),
'rangeInternational1End' => $item->getRangeinternational1end(),
'rangeInternational2Start' => $item->getRangeinternational2start(),
'rangeInternational2End' => $item->getRangeinternational2end(),
'rangeInternational3Start' => $item->getRangeinternational3start(),
'rangeInternational3End' => $item->getRangeinternational3end(),
'rangeInternational4Start' => $item->getRangeinternational4start(),
'rangeInternational4End' => $item->getRangeinternational4end(),
'valueInternational1' => $item->getValueinternational1(),
'valueInternational2' => $item->getValueinternational2(),
'valueInternational3' => $item->getValueinternational3(),
'valueInternational4' => $item->getValueinternational4(),
];
array_push($data, $arrayTemp);
}
return $this->json(['status' => 'success', 'code' => 200, 'data' => $data]);
}
public function addNewAdmiFeeWmAction(Request $request, ManagerRegistry $registry)
{
$em = $registry->getManager();
if ($request->request->get('cityId') && '' != $request->request->get('cityId') && null != $request->request->get('cityId')) {
$dataCity = $em->getRepository(\Aviatur\GeneralBundle\Entity\City::class)->findOneBy(['id' => (int) $request->request->get('cityId')]);
if (!$dataCity) {
return $this->json(['status' => 'error', 'code' => 200, 'message' => 'No existe registro para la ciudad indicada']);
}
}
if ($request->request->get('airlineId') && '' != $request->request->get('airlineId') && null != $request->request->get('airlineId')) {
$airline = $em->getRepository(\Aviatur\FlightBundle\Entity\Airline::class)->findOneBy(['id' => (int) $request->request->get('airlineId')]);
if (!$airline) {
return $this->json(['status' => 'error', 'code' => 200, 'message' => 'No existe registro para la aerolinea indicada']);
}
}
if ($request->request->get('whitemarkId') && '' != $request->request->get('whitemarkId') && null != $request->request->get('whitemarkId')) {
$whitemark = $em->getRepository(\Aviatur\GeneralBundle\Entity\Whitemark::class)->findOneBy(['id' => (int) $request->request->get('whitemarkId')]);
if (!$whitemark) {
return $this->json(['status' => 'error', 'code' => 200, 'message' => 'No existe registro para la Whitemark indicada']);
}
}
$data = new AdminFeeWhitemark();
$data->setWhitemark($whitemark ?? null);
$data->setAirline($airline ?? null);
$data->setCity($dataCity ?? null);
$data->setValuetype(($request->request->get('valuetype') && '' != $request->request->get('valuetype') && null != $request->request->get('valuetype')) ? (int) $request->request->get('valuetype') : null);
$data->setRangetype(($request->request->get('rangetype') && '' != $request->request->get('rangetype') && null != $request->request->get('rangetype')) ? (int) $request->request->get('rangetype') : null);
$data->setIsactive(($request->request->get('isactive') && '' != $request->request->get('isactive') && null != $request->request->get('isactive')) ? (int) $request->request->get('isactive') : null);
$data->setNonationalstop(($request->request->get('nonationalstop') && '' != $request->request->get('nonationalstop') && null != $request->request->get('nonationalstop')) ? (int) $request->request->get('nonationalstop') : null);
$data->setIsitfare(($request->request->get('isitfare') && '' != $request->request->get('isitfare') && null != $request->request->get('isitfare')) ? (int) $request->request->get('isitfare') : null);
$data->setNationalfixed(($request->request->get('nationalfixed') && '' != $request->request->get('nationalfixed') && null != $request->request->get('nationalfixed')) ? (float) $request->request->get('nationalfixed') : 0);
$data->setInternationalfixed(($request->request->get('internationalfixed') && '' != $request->request->get('internationalfixed') && null != $request->request->get('internationalfixed')) ? (float) $request->request->get('internationalfixed') : 0);
$data->setRoundtripnational(($request->request->get('roundtripnational') && '' != $request->request->get('roundtripnational') && null != $request->request->get('roundtripnational')) ? (float) $request->request->get('roundtripnational') : 0);
$data->setOnewaynational(($request->request->get('onewaynational') && '' != $request->request->get('onewaynational') && null != $request->request->get('onewaynational')) ? (float) $request->request->get('onewaynational') : 0);
$data->setRangeinternational1start(($request->request->get('rangeinternational1start') && '' != $request->request->get('rangeinternational1start') && null != $request->request->get('rangeinternational1start')) ? (int) $request->request->get('rangeinternational1start') : 0);
$data->setRangeinternational1end(($request->request->get('rangeinternational1end') && '' != $request->request->get('rangeinternational1end') && null != $request->request->get('rangeinternational1end')) ? (int) $request->request->get('rangeinternational1end') : 0);
$data->setRangeinternational2start(($request->request->get('rangeinternational2start') && '' != $request->request->get('rangeinternational2start') && null != $request->request->get('rangeinternational2start')) ? (int) $request->request->get('rangeinternational2start') : 0);
$data->setRangeinternational2end(($request->request->get('rangeinternational2end') && '' != $request->request->get('rangeinternational2end') && null != $request->request->get('rangeinternational2end')) ? (int) $request->request->get('rangeinternational2end') : 0);
$data->setRangeinternational3start(($request->request->get('rangeinternational3start') && '' != $request->request->get('rangeinternational3start') && null != $request->request->get('rangeinternational3start')) ? (int) $request->request->get('rangeinternational3start') : 0);
$data->setRangeinternational3end(($request->request->get('rangeinternational3end') && '' != $request->request->get('rangeinternational3end') && null != $request->request->get('rangeinternational3end')) ? (int) $request->request->get('rangeinternational3end') : 0);
$data->setRangeinternational4start(($request->request->get('rangeinternational4start') && '' != $request->request->get('rangeinternational4start') && null != $request->request->get('rangeinternational4start')) ? (int) $request->request->get('rangeinternational4start') : 0);
$data->setRangeinternational4end(($request->request->get('rangeinternational4end') && '' != $request->request->get('rangeinternational4end') && null != $request->request->get('rangeinternational4end')) ? (int) $request->request->get('rangeinternational4end') : 0);
$data->setValueinternational1(($request->request->get('valueinternational1') && '' != $request->request->get('valueinternational1') && null != $request->request->get('valueinternational1')) ? (float) $request->request->get('valueinternational1') : 0);
$data->setValueinternational2(($request->request->get('valueinternational2') && '' != $request->request->get('valueinternational2') && null != $request->request->get('valueinternational2')) ? (float) $request->request->get('valueinternational2') : 0);
$data->setValueinternational3(($request->request->get('valueinternational3') && '' != $request->request->get('valueinternational3') && null != $request->request->get('valueinternational3')) ? (float) $request->request->get('valueinternational3') : 0);
$data->setValueinternational4(($request->request->get('valueinternational4') && '' != $request->request->get('valueinternational4') && null != $request->request->get('valueinternational4')) ? (float) $request->request->get('valueinternational4') : 0);
$em->persist($data);
$em->flush();
return $this->json(['status' => 'success', 'code' => 200, 'message' => 'Registro creado']);
}
public function getAllCityAction(ManagerRegistry $registry)
{
$em = $registry->getManager();
$cities = $em->getRepository(\Aviatur\GeneralBundle\Entity\City::class)->findAll();
$data = [];
foreach ($cities as $item) {
$arrayTemp = [
'id' => $item->getId(),
'iataCode' => $item->getIataCode(),
'description' => ucfirst(strtolower($item->getDescription())),
];
array_push($data, $arrayTemp);
}
return $this->json(['status' => 'success', 'code' => 200, 'data' => $data]);
}
public function getAllAirlinesAction(ManagerRegistry $registry)
{
$em = $registry->getManager();
$airlines = $em->getRepository(\Aviatur\FlightBundle\Entity\Airline::class)->findAll();
$data = [];
foreach ($airlines as $item) {
$arrayTemp = [
'id' => $item->getId(),
'iataCode' => $item->getIata(),
'description' => ucfirst(strtolower($item->getName())),
];
array_push($data, $arrayTemp);
}
return $this->json(['status' => 'success', 'code' => 200, 'data' => $data]);
}
public function CallAPI($url, $data = false, $bearer = false, $method = false)
{
$curl = curl_init();
$curlSet = [
CURLOPT_URL => $url,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HEADER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
];
switch ($method) {
case 'authentication':
$curlSet[CURLOPT_SSLCERT] = 'C:/davivienda/BancoDavivienda.cer';
$curlSet[CURLOPT_SSLKEY] = 'C:/davivienda/bancodavivienda.key';
$curlSet[CURLOPT_SSLCERTPASSWD] = 'davivienda';
$curlSet[CURLOPT_SSL_VERIFYHOST] = false;
$curlSet[CURLOPT_CUSTOMREQUEST] = 'POST';
break;
case 'login-davivienda':
$curlSet[CURLOPT_SSL_VERIFYHOST] = false;
$curlSet[CURLOPT_CUSTOMREQUEST] = 'POST';
$curlSet[CURLOPT_POSTFIELDS] = json_encode(['token' => $data['token']]);
break;
case 'authentication_redirect':
$curlSet[CURLOPT_SSLCERT] = 'C:/davivienda/BancoDavivienda.cer';
$curlSet[CURLOPT_SSLKEY] = 'C:/davivienda/bancodavivienda.key';
$curlSet[CURLOPT_SSLCERTPASSWD] = 'davivienda';
$curlSet[CURLOPT_CUSTOMREQUEST] = 'GET';
break;
}
curl_setopt_array($curl, $curlSet);
$execute = curl_exec($curl);
$err = curl_error($curl);
$curl_info = curl_getinfo($curl);
$http_code = $curl_info['http_code'];
$header_size = curl_getinfo($curl, CURLINFO_HEADER_SIZE);
$body = json_decode(str_replace('/', '\\\\', substr($execute, $header_size)), true);
$response = $body;
if (isset($body['httpCode'])) {
$http_code = $body['httpCode'];
} elseif (isset($body['errorCode'])) {
$http_code = $body['errorCode'];
}
curl_close($curl);
if ($err) {
$response['error'] = 'cURL Error #: '.$err;
$type = 'error';
} else {
$type = (302 == $http_code || 200 == $http_code) ? 'message' : 'error';
switch ($method) {
case 'authentication_redirect':
//$urlreturn = 'https://www.aviatur.com/openapi/davivienda/login#access_token=AAIkNDg1MGRiOTQtODFmMC00ZThmLTk3NmUtM2JiZjM5NjEzMTM035hlZ6nqeCVMkZNldW_hgQO6XAsZJ2WenNmi6s73jqr4Ychp1sRck_eg8Up4_P3TqPcqkhtrW94KB3Gv0y0WWi3CoRvHbdM_66cupUUOpdTC1u_yLoORqCBt36scZtZu75tbRs1Ir51vsL36XU7ngA&expires_in=900&scope=review&token_type=bearer';
$urlreturn = $curl_info['redirect_url'];
$url_parts = parse_url($urlreturn);
if (isset(parse_url($urlreturn)['fragment']) && false !== strpos(parse_url($urlreturn)['fragment'], '=')) {
$fragment = explode('&', parse_url($urlreturn)['fragment']);
foreach ($fragment as $url) {
$parameter = explode('=', $url);
$response[$parameter[0]] = $parameter[1];
}
}
break;
default:
return $response;
break;
}
}
return $this->returnResult($type, $http_code, $response);
}
private function returnResult($type, $code, $text)
{
return [
$type => [
'code' => $code,
'text' => $text,
],
];
}
public function pSliderAction(SessionInterface $session, ManagerRegistry $registry, TwigFolder $twigFolder)
{
$em = $registry->getManager();
$agencyId = $session->get('agencyId');
$agencyFolder = $twigFolder->twigFlux();
return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Content/Content/pSlider.html.twig'));
}
public function wmNewAction(Request $request, ManagerRegistry $registry)
{
$em = $registry->getManager();
$data = json_decode($request->getContent());
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->findOneByName($data->agency);
if (is_object($agency)) {
$data->agency = $agency;
$whitemark = new Whitemark();
foreach ($data as $key => $value) {
$setter = 'set'.ucfirst($key);
$whitemark->$setter($value);
}
$em->persist($whitemark);
$em->flush();
return $this->json(['status' => 'success', 'message' => 'Marca blanca creada correctamente.']);
} else {
return $this->json(['status' => 'error', 'message' => 'La agencia relacionada no existe']);
}
}
public function wmUploadImageAction(Request $request, ParameterBagInterface $parameterBag)
{
$projectDir = $parameterBag->get('kernel.project_dir');
if ($request && $request->isMethod('POST')) {
$baseDir = $projectDir.'/web/assets/whitemark_assets/img/header';
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
$file = $request->files->get('image');
if ($file) {
if ('image/png' == $file->getClientMimeType() || 'image/jpeg' == $file->getClientMimeType()) {
try {
$file->move(
$baseDir,
$file->getClientOriginalName()
);
return $this->json(['status' => 'success', 'message' => 'Imagen cargada correctamente.']);
} catch (FileException $e) {
return $this->json(['status' => 'error', 'message' => $e]);
}
} else {
return $this->json(['status' => 'error', 'message' => 'Archivo no permitido [03]']);
}
} else {
return $this->json(['status' => 'error', 'message' => 'Ha ocurrido un error [01]']);
}
} else {
return $this->json(['status' => 'error', 'message' => 'Datos invalidos [02]']);
}
}
//
// public function talentosAction() {
// $request = $this->get('request_stack')->getCurrentRequest()->request;
// $postData = $request->all();
// $body = "Votación talentos aviatur: <br>"
// . "Nombre: " . $postData['Nombre'] . "<br>"
// . "Cedula: " . $postData['Cedula'] . "<br>"
// . "Oficina: " . $postData['Oficina'] . "<br>"
// . "Voto: " . $postData['Voto'];
// $message = (new \Swift_Message())
// ->setContentType("text/html")
// ->setFrom(array('noreply@aviatur.com.co' => 'Talentos Aviatur'))
// ->setTo(array('talentosaviatur@aviatur.com'))
// ->setBcc(array('gustavo.hincapie@aviatur.com'))
// ->setSubject('Votación Talentos')
// ->setBody($body);
// $this->container->get('mailer')->send($message);
// return $this->redirect('http://talentosaviatur.com/index.php/votacion-exitosa');
// }
//
// public function votacionHappyAction() {
// $request = $this->get('request_stack')->getCurrentRequest()->request;
// $postData = $request->all();
// $body = "Votación Video Happy Aviatur: <br>"
// . "Nombre: " . $postData['Nombre'] . "<br>"
// . "Cedula: " . $postData['Cedula'] . "<br>"
// . "Oficina: " . $postData['Oficina'] . "<br>"
// . "Voto: " . $postData['Voto'];
// $message = (new \Swift_Message())
// ->setContentType("text/html")
// ->setFrom(array('noreply@aviatur.com.co' => 'Votación Video Happy Aviatur'))
// ->setTo(array('talentosaviatur@aviatur.com'))
// ->setBcc(array('gustavo.hincapie@aviatur.com'))
// ->setSubject('Votación Talentos')
// ->setBody($body);
// $this->container->get('mailer')->send($message);
// return $this->redirect('http://talentosaviatur.com/index.php/votacion-exitosa');
// }
}