<?php
namespace Aviatur\DocumentationBundle\Controller;
use Aviatur\DocumentationBundle\Entity\Documentation;
use Aviatur\DocumentationBundle\Models;
use Aviatur\DocumentationBundle\Services\DocumentationService;
use Aviatur\GeneralBundle\Services\AviaturErrorHandler;
use Aviatur\GeneralBundle\Services\AviaturWebService;
use Aviatur\TwigBundle\Services\TwigFolder;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
class DefaultController extends AbstractController
{
public function searchAction()
{
return $this->redirect(
$this->generateUrl(
'aviatur_search_documentation',
[]
)
);
}
public function indexAction(SessionInterface $session, DocumentationService $documentationService, AviaturWebService $webService, TwigFolder $twigFolder, $id)
{
$em = $this->getDoctrine()->getManager();
$agency = $em->getRepository(\Aviatur\AgencyBundle\Entity\Agency::class)->find($session->get('agencyId'));
$infoDocumentation = $documentationService->documentationInfo($session->get('agencyId'));
$safeUrl = 'https://'.$agency->getDomain();
$router = $this->get('router');
$documentationModel = new Models\DocumentationModel();
$xmlTemplate = $documentationModel->getXml($id);
$documentationRepository = $em->getRepository(\Aviatur\DocumentationBundle\Entity\Documentation::class)->getInfoDocDate($id);
$searchCss = ['http://travel.aviatur.com/templates/aviatur/css/template.css', 'http://www.aviatur.com/templates/aviatur/css/template.css', 'http://aviatur.com/templates/aviatur/css/template.css'];
// $replaceCss = array('http://190.66.17.238/templates/aviatur/css/template.css', 'http://190.66.17.238/templates/aviatur/css/template.css', 'http://190.66.17.238/templates/aviatur/css/template.css');
$error = 0;
if (empty($documentationRepository)) {
$response = $webService->callWebService('GENERALLAVE', 'dummy|http://www.aviatur.com.co/dummy/', $xmlTemplate);
$documentationEntity = new Documentation();
$documentationEntity->setIataCode($id);
$documentationEntity->setInfoDocumentation(base64_encode(json_encode($response)));
$documentationEntity->setCreationDate(new \DateTime());
$em->persist($documentationEntity);
$em->flush();
$response = simplexml_load_string(str_replace($searchCss, '', $response->asXML()));
} else {
$documentationEntity = $documentationRepository[0]['infoDocumentation'];
$response = json_decode(base64_decode($documentationEntity), true);
if (isset($response['RESULTADO'])) {
$response = '<h5 class="error">No se encuentra Información del pais seleccionado</h5>';
$error = 1;
} else {
$response = str_replace($searchCss, '', $response[0]);
}
}
$uri = $router->generate('aviatur_documentation_homepage', ['id' => $id]);
if ('BQ' == $id) {
$nameCountry = 'Islas Países Bajos';
} elseif ('GP' == $id) {
$nameCountry = 'Ultramar Francia';
} elseif ('CD' == $id) {
$nameCountry = 'Congo';
} elseif ('VG' == $id) {
$nameCountry = 'Islas Vírgenes';
} elseif ('VI' == $id) {
$nameCountry = 'Islas Vírgenes EEUU';
} else {
$dataCity = $em->getRepository(\Aviatur\SearchBundle\Entity\SearchCities::class)->findBy(['countrycode' => $id], ['id' => 'ASC'], 1);
if (!empty($dataCity)) {
foreach ($dataCity as $data) {
$nameCountry = $data->getCountry();
}
} else {
$nameCountry = $id;
}
}
$variables = [
'error' => $error,
'safeUrl' => $safeUrl,
'id' => $id,
'url' => $safeUrl.$uri,
'name' => $nameCountry,
];
$agencyFolder = $twigFolder->twigFlux();
return $this->render($twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/Documentation/Default/index.html.twig'), ['response' => $response, 'variables' => $variables, 'infoDocumentation' => $infoDocumentation]);
}
public function sendMailAction(Request $request, AviaturWebService $webService, \Swift_Mailer $mailer, AviaturErrorHandler $errorHandler)
{
$server = $request->server;
$email = $request->request->get('email');
$id = $request->request->get('id');
$documentationModel = new Models\DocumentationModel();
$xmlTemplate = $documentationModel->getXml($id);
$response = $webService->callWebService('GENERALLAVE', 'dummy|http://www.aviatur.com.co/dummy/', $xmlTemplate);
// $mailInfo = print_r($response, true);
$message = (new \Swift_Message())
->setContentType('text/html')
->setFrom(['cliente.com@aviatur.com.co' => 'Documentación Aviatur'])
->setTo($email)
->setSubject('Documentación')
->setBody($response);
$mailer->send($message);
return $this->redirect($errorHandler->errorRedirectNoEmail($server->get('HTTP_REFERER'), 'Mensaje Enviado', 'Se ha enviado informacion al correo '.$email));
}
public function documentationAction(Request $request, AviaturWebService $webService, TwigFolder $twigFolder)
{
$em = $this->getDoctrine()->getManager();
$fullRequest = $request;
$request = $fullRequest->request;
$codeCity = $request->get('codeCity');
if (strlen($codeCity) < 3) {//Receive country code
$country = $codeCity;
} else {//Receive City code
$city = $em->getRepository(\Aviatur\GeneralBundle\Entity\City::class)->findOneByIatacode($codeCity);
$countryObject = $em->getRepository(\Aviatur\GeneralBundle\Entity\Country::class)->findOneByCode($city->getCountryStateCode());
$country = $countryObject->getIataCode();
}
$documentationModel = new Models\DocumentationModel();
$xmlTemplate = $documentationModel->getXml($country);
$agencyFolder = $twigFolder->twigFlux();
$response = $webService->callWebService('GENERALLAVE', 'dummy|http://www.aviatur.com.co/dummy/', $xmlTemplate);
$error = 0;
if (isset($response->RESULTADO)) {
$response = '<h5><font color="red">No se encuentra información del país seleccionado</font></h5>';
$error = 1;
}
$urlDetail = $twigFolder->twigExists('@AviaturTwig/'.$agencyFolder.'/General/Templates/info_documentation.html.twig');
return $this->render($urlDetail, ['response' => $response]);
}
}