Files
Sio-Back/app/Http/Controllers/Controller.php
2025-12-26 17:21:11 -08:00

212 lines
7.5 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Models\Sucursal;
use Carbon\Carbon;
use Illuminate\Foundation\Bus\DispatchesJobs;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;
use Illuminate\Foundation\Auth\Access\AuthorizesRequests;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Log;
const PASSWORD = 'SECRET123123';
//Estatus de Servicios
const REALIZADO = 1;
const REPROGRAMADO = 2;
const CANCELADO = 3;
const PENDIENTE = 4;
const NEGATIVO = 5;
const PAGADO = 6;
const VISITA = 7;
//Tipos De Empleados
const GENERAL = 1;
const ASESOR_OPERACIONES = 2;
const AUXILIAR_TECNICO_1 = 3;
const AUXILIAR_TECNICO_2 = 4;
const ATENCION_CLIENTES = 5;
//Definio
const DEFINIO_CLIENTE = 1;
const DEFINIO_ATENCION_CLIENTE = 2;
//Tipos de servicio
const DOMESTICO = 1;
const EMPRESARIAL = 2;
//Correos
const CORREOS_DEV = ['luis@ie-soluciones.com', 'omar@ie-soluciones.com', 'soporte@ie-soluciones.com'];
const CORREOS_PROD = ['guillermo@drenax.com.mx', 'bladimir@drenax.com.mx', 'antonio@drenax.com.mx', 'laura@drenax.com.mx'];
//Nombre checklist
const VEHICULO_ASIGNADO = "VEHÍCULO ASIGNADO";
//Costo de servicio negativo
const COSTO_SERVICIO_NEGATIVO = 350;
//Parametros
const LLAVE_ANCLAJE_SERVICIO_HORAS = 'ANCLAJE_SERVICIO_HORAS';
const LLAVE_VERSION_APLICACION = 'CURRENT_VERSION_APPLICATION';
const ANCLAJE_SERVICIO_HORAS = 3;
//ZIP
const DEFAULT_PATH_ZIP_EVIDENCES = "app/public/temp/";
ini_set('memory_limit', '-1');
set_time_limit(0);
class Controller extends BaseController
{
use AuthorizesRequests, DispatchesJobs, ValidatesRequests;
public function sumarTiempos($array_tiempos){
if(count($array_tiempos) > 0){
$total_segundos = 0;
for ($i = 0; $i < count($array_tiempos); $i ++){
if($array_tiempos[$i]){
list($h,$m,$s) = explode(":", $array_tiempos[$i]);
$seg_h = ((int)$h * 3600);
$seg_m = ((int)$m * 60);
$seg_s = (int)$s;
$total_segundos += ($seg_h + $seg_m + $seg_s);
}
}
$horas = floor($total_segundos / 3600);
$minutos = floor(($total_segundos - ($horas * 3600)) / 60);
$segundos = $total_segundos - ($horas * 3600) - ($minutos * 60);
$horas = str_pad($horas, 2, 0, STR_PAD_LEFT);
$minutos = str_pad($minutos, 2, 0, STR_PAD_LEFT);
$segundos = str_pad($segundos, 2, 0, STR_PAD_LEFT);
return $horas . ':' . $minutos . ":" . $segundos;
}else{
return "00:00:00";
}
}
public function diferenciaFechas($t1, $t2){
$tiempo_atencion = Carbon::parse($t1)->diffInMinutes(Carbon::parse($t2));
$d = intval($tiempo_atencion / 1440);
$h = intval(($tiempo_atencion - ($d * 1440)) / 60);
$m = intval(($tiempo_atencion - ($d * 1440) - ($h * 60)) % 60);
return $d.' días, '.$h.' horas y '.$m.' minutos';
}
public function formatearFechaHora($fecha_hora){
list($fecha, $hora) = explode(" ", $fecha_hora);
list($y, $m, $d) = explode("-", $fecha);
list($hr, $min) = explode(":", $hora);
return $d.'/'.$m.'/'.$y.' '.$hr.':'.$min;
}
public function base64ToImage($base64, $mime = 'image/jpeg'){
$image_decode = base64_decode($base64);
$resource = imagecreatefromstring($image_decode);
ob_start();
if($mime === 'image/jpeg'){
imagejpeg($resource);
}else{
imagepng($resource);
}
return ob_get_clean();
}
public function camposSolicitudesServiciosOperador(){
$user = Auth::user();
$costo_servicio_negativo = Sucursal::select('costo_negativo')->where('sucursales.id', $user->sucursal_id)->first();
return [
'servicios_enc.id as solicitud_servicio_id',
'servicios_enc.forma_pago_id',
'cat_formas_pagos.nombre as forma_pago_nombre',
'fecha_agenda',
'usuario_agenda_id',
'users.nombre as usuario_agenda_nombre',
'users.apellido_paterno as usuario_agenda_apellido_paterno',
'users.apellido_materno as usuario_agenda_apellido_materno',
'servicios_enc.cliente_id',
'clientes.denominacion',
'servicios_enc.cliente_domicilio_id',
'clientes_domicilios.nombre_responsable_sucursal as clientes_nombre_responsable_sucursal',
'clientes_domicilios.celular_responsable as clientes_celular_responsable',
'clientes_domicilios.calle as clientes_calle',
'clientes_domicilios.num_ext as clientes_num_ext',
'clientes_domicilios.num_int as clientes_num_int',
'clientes_domicilios.colonia as clientes_colonia',
'clientes_domicilios.cp as clientes_cp',
'clientes_domicilios.ciudad as clientes_ciudad',
'clientes_domicilios.telefono as clientes_telefono',
'clientes_domicilios.lat as clientes_lat',
'clientes_domicilios.lng as clientes_lng',
'clientes_domicilios.nombre_croquis as nombre_croquis',
'clientes_domicilios.nombre_sucursal as nombre_sucursal',
'servicios_enc.deleted_at',
'servicios_det.id',
'servicios_det.servicio_id',
'cat_servicios.nombre as servicio_nombre',
'servicios_det.estatus_servicio_id',
'cat_estatus_servicios.nombre as estatus_servicio_nombre',
'servicios_det.tipo_servicio_id',
'cat_tipos_servicios.nombre as tipo_servicio_nombre',
'cat_estatus_servicios.color_1 as estatus_servicio_color_1',
'cat_estatus_servicios.color_2 as estatus_servicio_color_2',
'fecha_solicitud',
'servicios_det.duracion',
'definido_cliente',
'servicios_det.operador_id',
'operador.nombre as operador_nombre',
'operador.apellido_paterno as operador_apellido_paterno',
'operador.apellido_materno as operador_apellido_materno',
'servicios_det.vehiculo_id',
'cat_vehiculos.num_economico as vehiculo_num_economico',
'servicios_det.fecha_solicitud',
'sucursales.nombre as vehiculo_sucursal',
'sucursales.id as vehiculo_sucursal_id',
'sucursal_operador.nombre as operador_sucursal',
'sucursal_operador.id as operador_sucursal_id',
'servicios_det.auxiliar_1 as auxiliar_1_id',
'servicios_det.auxiliar_2 as auxiliar_2_id',
'auxiliares_1.nombre as auxiliar_1',
'auxiliares_1.apellido_paterno as auxiliar_1_apellido_paterno',
'auxiliares_1.apellido_materno as auxiliar_1_apellido_materno',
'auxiliares_2.nombre as auxiliar_2',
'sucursal_auxiliares_1.nombre as sucursal_auxiliar_1',
'sucursal_auxiliares_2.nombre as sucursal_auxiliar_2',
'servicios_det.costo_servicio',
'servicios_det.aceptado',
'servicios_det.observacion_atencion_cliente',
'servicios_det.requiere_encuesta',
DB::raw("$costo_servicio_negativo->costo_negativo as 'costo_servicio_negativo'")
];
}
public function getMicroSeconds(){
$micro = explode(" ", microtime());
return $micro[1];
}
public function decodeZip($base64, $path){
$zip = base64_decode($base64);
file_put_contents($path, $zip);
return $path;
}
}