257 lines
9.5 KiB
PHP
257 lines
9.5 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use App\Models\Cotizaciones;
|
|
use App\Models\Vuelos;
|
|
use App\Models\VuelosCotizaciones;
|
|
use Exception;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Carbon;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Support\Facades\Http;
|
|
|
|
|
|
class EsConsultasController extends Controller
|
|
{
|
|
//
|
|
public static function getVueloCompleto()
|
|
{
|
|
/** */
|
|
$vuelos = Vuelos::select(
|
|
'vuelos.id_vuelo',
|
|
'vuelos.nombre_vuelo',
|
|
'vuelos.enlace_permanente',
|
|
'vuelos.precio_publico',
|
|
'vuelos.precio_especial',
|
|
'unidades.nombre_unidad'
|
|
)
|
|
->where([
|
|
['vuelos.id_sitio_web', 6],
|
|
['vuelos.visibilidad_pagina_web', 1]
|
|
])
|
|
->rightJoin('unidades', 'vuelos.id_unidad', '=', 'unidades.id_unidad')
|
|
->orderBy('vuelos.id_vuelo', 'desc')
|
|
->get();
|
|
return $vuelos;
|
|
}
|
|
|
|
public static function getDatosVuelo($vuelo)
|
|
{
|
|
$sql = DB::select("
|
|
SELECT
|
|
sitios_web.*,
|
|
vuelos.id_vuelo AS aux_id_vuelo,
|
|
|
|
(
|
|
SELECT COUNT(1)
|
|
FROM recibos_conceptos rc
|
|
WHERE rc.id = vuelos.id_vuelo
|
|
AND rc.tipo = 'vuelo'
|
|
) AS numero_de_veces_vendido_vuelos,
|
|
|
|
unidades.id_unidad,
|
|
unidades.nombre_unidad,
|
|
unidades.nombre_corto,
|
|
unidades.nombre_unidad_enUS,
|
|
unidades.nombre_corto_enUS,
|
|
unidades.numero_personas_piezas,
|
|
|
|
categorias_vuelos.nombre_categoria,
|
|
|
|
IFNULL(galeria.id_galeria, 0) AS id_galeria,
|
|
galeria.json_rutas_imagenes AS imagenes_galeria,
|
|
IFNULL(galeria.nombre_galeria, 0) AS nombre_galeria,
|
|
|
|
vuelos.*,
|
|
|
|
ubicaciones.id_ubicacion,
|
|
CONCAT(
|
|
'ID: ', ubicaciones.id_ubicacion, ' - ',
|
|
ubicaciones.nombre_ubicacion, ', ',
|
|
ubicaciones.estado, ', ',
|
|
paises.langES
|
|
) AS nombre_ubicacion,
|
|
|
|
IFNULL(vuelos_usd.titulo_vuelo, vuelos.nombre_vuelo) AS titulo_vuelo_usd,
|
|
vuelos.nombre_vuelo AS titulo_vuelo,
|
|
IFNULL(vuelos_usd.json_incluye, vuelos.json_incluye) AS json_incluye_usd,
|
|
IFNULL(vuelos_usd.precio_usd, 0) AS precio_usd
|
|
|
|
FROM vuelos
|
|
|
|
LEFT JOIN vuelos_usd
|
|
ON vuelos_usd.id_vuelo = vuelos.id_vuelo
|
|
|
|
LEFT JOIN galeria
|
|
ON galeria.id_galeria = vuelos.id_galeria
|
|
|
|
INNER JOIN ubicaciones
|
|
ON vuelos.id_ubicacion = ubicaciones.id_ubicacion
|
|
|
|
INNER JOIN paises
|
|
ON ubicaciones.id_pais = paises.code
|
|
|
|
INNER JOIN categorias_vuelos
|
|
ON vuelos.id_categoria = categorias_vuelos.id_categoria
|
|
|
|
INNER JOIN unidades
|
|
ON unidades.id_unidad = vuelos.id_unidad
|
|
|
|
LEFT JOIN sitios_web
|
|
ON sitios_web.id_sitio_web = vuelos.id_sitio_web
|
|
|
|
WHERE
|
|
vuelos.id_estatus = 1
|
|
AND vuelos.id_sitio_web = ?
|
|
AND vuelos.enlace_permanente = ?
|
|
AND vuelos.visibilidad_pagina_web = 1
|
|
AND vuelos.no_se_vera_en_home_vuelos = 0
|
|
|
|
ORDER BY numero_de_veces_vendido_vuelos DESC
|
|
", [6, $vuelo]);
|
|
return $sql;
|
|
}
|
|
|
|
|
|
public static function getInfoVuelo($vuelo)
|
|
{
|
|
return DB::select("
|
|
SELECT sitios_web.*,
|
|
vuelos.id_vuelo as aux_id_vuelo,
|
|
(SELECT COUNT(1)
|
|
FROM recibos_conceptos
|
|
WHERE recibos_conceptos.id = vuelos.id_vuelo
|
|
AND recibos_conceptos.tipo = 'vuelo') as numero_de_veces_vendido_vuelos,
|
|
unidades.id_unidad,
|
|
unidades.nombre_unidad,
|
|
unidades.nombre_corto,
|
|
unidades.nombre_unidad_enUS,
|
|
unidades.nombre_corto_enUS,
|
|
unidades.numero_personas_piezas,
|
|
categorias_vuelos.nombre_categoria,
|
|
IFNULL(galeria.id_galeria, 0) AS id_galeria,
|
|
galeria.json_rutas_imagenes AS imagenes_galeria,
|
|
IFNULL(galeria.nombre_galeria, 0) AS nombre_galeria,
|
|
vuelos.*,
|
|
ubicaciones.id_ubicacion,
|
|
CONCAT('ID: ', ubicaciones.id_ubicacion, ' - ', ubicaciones.nombre_ubicacion, ', ', ubicaciones.estado, ', ', paises.langES) AS nombre_ubicacion,
|
|
IFNULL(vuelos_usd.titulo_vuelo, vuelos.nombre_vuelo) AS titulo_vuelo_usd,
|
|
vuelos.nombre_vuelo AS titulo_vuelo,
|
|
IFNULL(vuelos_usd.json_incluye, vuelos.json_incluye) AS json_incluye_usd,
|
|
IFNULL(vuelos_usd.precio_usd, 0) AS precio_usd
|
|
FROM vuelos
|
|
LEFT JOIN vuelos_usd ON vuelos_usd.id_vuelo = vuelos.id_vuelo
|
|
LEFT JOIN galeria ON galeria.id_galeria = vuelos.id_galeria
|
|
INNER JOIN ubicaciones ON vuelos.id_ubicacion = ubicaciones.id_ubicacion
|
|
INNER JOIN paises ON ubicaciones.id_pais = paises.code
|
|
INNER JOIN categorias_vuelos ON vuelos.id_categoria = categorias_vuelos.id_categoria
|
|
INNER JOIN unidades ON unidades.id_unidad = vuelos.id_unidad
|
|
LEFT JOIN sitios_web ON sitios_web.id_sitio_web = vuelos.id_sitio_web
|
|
WHERE vuelos.id_estatus = 1
|
|
AND vuelos.enlace_permanente = ?
|
|
AND vuelos.visibilidad_pagina_web = 1
|
|
AND vuelos.no_se_vera_en_home_vuelos = 0
|
|
ORDER BY numero_de_veces_vendido_vuelos DESC
|
|
", [$vuelo]);
|
|
}
|
|
|
|
|
|
public static function obtenerCotizacion()
|
|
{
|
|
$id_cotizacion = (Cotizaciones::max('id_cotizacion') ?? 0) + 1;
|
|
return [
|
|
"folio" => "COT" . str_pad($id_cotizacion, 7, "0", STR_PAD_LEFT),
|
|
"id_cotizacion" => $id_cotizacion
|
|
];
|
|
}
|
|
|
|
|
|
public function registrarCotizacion(Request $request)
|
|
{
|
|
|
|
try {
|
|
$pasajeros = $request->input('num_pasajeros');
|
|
$folio_cotizaciones = EsConsultasController::obtenerCotizacion();
|
|
$vuelo = new Vuelos;
|
|
$vuelo_cotizacion = new VuelosCotizaciones();
|
|
$cotizaciones = new Cotizaciones();
|
|
$datos_vuelo = $vuelo::where(['nombre_vuelo' => $request->input('vuelo_elegido'), 'id_sitio_web' => 6])->get();
|
|
$datos_vuelo = json_decode($datos_vuelo, true);
|
|
$total = $pasajeros * (int)$datos_vuelo[0]["precio_publico"];
|
|
|
|
$cotizaciones->id_sitio_web = 6;
|
|
$cotizaciones->folio = $folio_cotizaciones['folio'];
|
|
$cotizaciones->nombre = ($request->has('nombre') ? $request->input('nombre') : $request->input('email'));
|
|
$cotizaciones->apellidos = ($request->has('apellido') ? $request->input('apellido') : 'N/A');
|
|
$cotizaciones->id_medio_contacto = 13;
|
|
$cotizaciones->id_genero = 1;
|
|
$cotizaciones->telefono = $request->input('phone');
|
|
$cotizaciones->celular = $request->input('phone');
|
|
$cotizaciones->cp = 0;
|
|
$cotizaciones->mail = $request->input('email');
|
|
$cotizaciones->fecha_vuelo = ($request->input('fecha_vuelo_cot') == null ? null : $request->input('fecha_vuelo_cot'));
|
|
$cotizaciones->cotizacion_abierta = ($request->input('fecha_vuelo_cot') == null ? 1 : 0);
|
|
$cotizaciones->vuelos = $request->input('vuelo_elegido');
|
|
$cotizaciones->servicios_adicionales = "";
|
|
$cotizaciones->tipo_descuento = 0;
|
|
$cotizaciones->descuento = 0;
|
|
$cotizaciones->subtotal = $total;
|
|
$cotizaciones->total = $total;
|
|
$cotizaciones->total_con_iva = $total;
|
|
$cotizaciones->requiere_factura = 0;
|
|
$cotizaciones->observaciones = "Cotizacion desde www.globopuertoteotihuacan.com";
|
|
$cotizaciones->tipo_moneda = "MXN";
|
|
$cotizaciones->pais_persona = 484;
|
|
$cotizaciones->estado_persona = 1;
|
|
$cotizaciones->id_estatus = 1;
|
|
$cotizaciones->fecha_alta = Carbon::now();
|
|
$cotizaciones->id_user_alta = 98;
|
|
$cotizaciones->save();
|
|
|
|
$vuelo_cotizacion->id_vuelo = $datos_vuelo[0]["id_vuelo"];
|
|
$vuelo_cotizacion->id_unidad = $datos_vuelo[0]["id_unidad"];
|
|
$vuelo_cotizacion->cantidades = $pasajeros;
|
|
$vuelo_cotizacion->precio_vendido_p_pax_vuelo = $total;
|
|
$vuelo_cotizacion->precio_especial = 0;
|
|
$vuelo_cotizacion->id_cotizacion = $folio_cotizaciones["id_cotizacion"];
|
|
$vuelo_cotizacion->pasajero_adicional = 0;
|
|
$vuelo_cotizacion->id_estatus = 1;
|
|
$vuelo_cotizacion->id_user_alta = 98;
|
|
$vuelo_cotizacion->fecha_alta = Carbon::now();
|
|
$vuelo_cotizacion->save();
|
|
|
|
return response()->json([
|
|
"exito" => 1
|
|
]);
|
|
} catch (Exception $e) {
|
|
return response()->json([
|
|
"exito" => 0,
|
|
"error" => $e->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
|
|
|
|
public static function obtenerServiciosAdicionales()
|
|
{
|
|
try {
|
|
$response = Http::timeout(10)->get(
|
|
'https://erp.skyballoons.mx/servicios-adicionales-webservice',
|
|
[
|
|
'comercio' => 'skyballoons',
|
|
'key' => 'f093328776ae4cd210dc7b4ee4093e45'
|
|
]
|
|
);
|
|
|
|
if ($response->successful()) {
|
|
return $response->json();
|
|
}
|
|
|
|
return [];
|
|
} catch (\Exception $e) {
|
|
return [];
|
|
}
|
|
}
|
|
}
|