vueloenglobo.mx/app/Http/Controllers/EsConsultasController.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 [];
}
}
}