Carga inicial

This commit is contained in:
IvanAS94
2025-12-26 17:21:11 -08:00
parent 45d9afc951
commit 51880798ca
359 changed files with 42159 additions and 1 deletions

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Mail;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class ResetPassword extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(User $user)
{
$this->user = $user;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->view('email.emailRecuperar',array('user'=>$this->user))->subject('Recuperar Contraseña');
}
}

View File

@@ -0,0 +1,67 @@
<?php
namespace App\Mail;
use App\Models\RespuestaOperadorDet;
use App\Models\RespuestaOperadorEnc;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
class RespuestasOperador extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($respuestas_operador_enc_id)
{
$this->respuesta_operador_enc_id = $respuestas_operador_enc_id;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$id = $this->respuesta_operador_enc_id;
$re = RespuestaOperadorDet::where('respuestas_operador_enc_id',$id)
->where('tipo', 'REVISION')
->get();
$material = RespuestaOperadorDet::where('respuestas_operador_enc_id',$id)
->where('tipo', 'MATERIAL')
->get();
$herramienta = RespuestaOperadorDet::where('respuestas_operador_enc_id',$id)
->where('tipo', 'HERRAMIENTA')
->get();
$revision = [];
$num_economico = "";
foreach ($re as $r){
if(!$r->tipo_checkbox && !$r->tipo_text && !$r->tipo_radio_btn){
$num_economico = $r->respuesta_text;
}else{
array_push($revision,$r);
}
}
$usuario = RespuestaOperadorEnc::select('users.nombre', 'users.apellido_paterno')
->join('users', 'respuestas_operador_enc.user_id', '=', 'users.id')
->where('respuestas_operador_enc.id',$id)
->first();
$nombre_usuario = $usuario->nombre." ".$usuario->apellido_paterno;
$subject = "Check-list Asesor $nombre_usuario - Vehículo $num_economico";
return $this->view('email.emailRespuestasOperador', compact('revision', 'material', 'herramienta'))->subject($subject);
}
}

View File

@@ -0,0 +1,121 @@
<?php
namespace App\Mail;
use const App\Http\Controllers\DOMESTICO;
use App\Models\ServicioDet;
use Carbon\Carbon;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use DB;
class SolicitudServicio extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($servicio_det_id)
{
$this->servicio_det_id = $servicio_det_id;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$campos = [
'fecha_solicitud',
'nombre_responsable_sucursal as responsable',
'calle',
'num_ext',
'num_int',
'colonia',
'ciudad',
'cp',
'servicio_enc_id',
'cat_servicios.nombre as servicio_nombre',
'cat_tipos_servicios.id as tipo_servicio',
DB::raw("CONCAT(asesor.nombre,' ',asesor.apellido_paterno,' ',asesor.apellido_materno) as asesor_nombre"),
'asesor.telefono as asesor_telefono',
'cat_tipos_vehiculos.nombre as tipo_vehiculo',
'cat_vehiculos.num_economico as vehiculo_num_economico',
DB::raw("CONCAT(atencion_cliente.nombre,' ',atencion_cliente.apellido_paterno,' ',atencion_cliente.apellido_materno) as atencion_cliente_nombre")
];
$solicitud = ServicioDet::select($campos)
->join('servicios_enc', 'servicios_det.servicio_enc_id', '=', 'servicios_enc.id')
->join('clientes_domicilios', 'servicios_enc.cliente_domicilio_id', '=', 'clientes_domicilios.id')
->join('cat_servicios', 'servicios_det.servicio_id', '=', 'cat_servicios.id')
->join('users as asesor', 'servicios_det.operador_id', '=', 'asesor.id')
->join('users as atencion_cliente', 'servicios_enc.usuario_agenda_id', '=', 'atencion_cliente.id')
->join('cat_vehiculos', 'servicios_det.vehiculo_id', '=', 'cat_vehiculos.id')
->join('cat_tipos_vehiculos', 'cat_vehiculos.tipo_vehiculo_id', '=', 'cat_tipos_vehiculos.id')
->join('cat_tipos_servicios', 'servicios_det.tipo_servicio_id', '=', 'cat_tipos_servicios.id')
->where('servicios_det.id', $this->servicio_det_id)
->first();
$solicitud->domicilio = $solicitud->calle.' Int. '.$solicitud->num_int.(($solicitud->num_ext)? ' Ext. '.$solicitud->num_ext : '').', '.$solicitud->colonia.', '.$solicitud->ciudad;
$dias = array("Domingo","Lunes","Martes","Miercoles","Jueves","Viernes","Sábado");
$meses = array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
list($f, $h) = explode(" ", $solicitud->fecha_solicitud);
list($y,$m,$d) = explode("-", $f);
$date = Carbon::createFromDate($y,$m,$d, null);
$solicitud->fecha_solicitud = $dias[$date->format('w')]." ".$date->format('d')." de ".$meses[$date->format('n')-1]. " del ".$date->format('Y')." a las $h hrs";
$solicitud->asesor_telefono = $this->phone_number_format($solicitud->asesor_telefono);
if($solicitud->tipo_servicio == DOMESTICO){
$solicitud->mensaje = array(
"- Será necesario entrar al domicilio y revisar las instalaciones antes y durante la operación del servicio.",
"- Evitar estar cerca de los registros durante la operación del servicio, ya que esto puede provocar un accidente.",
"- Si cuenta con mascotas, evitar que estén cerca de la operación.",
"- Evitar cruzar por pisos mojados, caminar por encima de la manguera y cruzar por registros.",
"- No se realizará ningún servicio sin la supervisión de un adulto.",
"- Se entregará un recibo de servicio por cada servicio que realicemos, mismo que será firmado con nombre y firma por supervisor.",
"- Si el servicio es negativo se cobrará un costo por visita de $350.00.",
"- El tiempo de maniobra de un servicio negativo es de hasta 30 minutos (De autorizar más tiempo de maniobra por parte del cliente, el costo se genera por hora de servicio).",
"- Los costos de los servicios se confirmarán antes de iniciar la operación del servicio."
);
}else{
$solicitud->mensaje = array(
"- Todos los servicios que realizamos deberán ser supervisados por las áreas correspondientes de la empresa y ésta misma persona tenga el conocimiento de los servicios a realizar.",
"- Evitar estar cerca de los registros durante la operación del servicio, ya que esto puede provocar un accidente.",
"- Evitar cruzar por pisos mojados, caminar por encima de la manguera y cruzar por registros.",
"- Se entregará un recibo de servicio por cada servicio que realicemos, mismo que será firmado con nombre y firma por supervisor.",
"- Si el servicio es negativo se cobrará un costo por visita de $350.00.",
"- El tiempo de maniobra de un servicio negativo es de hasta 30 minutos (De autorizar más tiempo de maniobra por parte del cliente, el costo se genera por hora de servicio).",
"- Los costos de los servicios se confirmaran antes de iniciar la operación del servicio."
);
};
return $this->view('email.emailSolicitudServicio', compact('solicitud'))->subject('Servicio agendado.');
}
function phone_number_format($number) {
// Allow only Digits, remove all other characters.
$number = preg_replace("/[^\d]/","",$number);
// get number length.
$length = strlen($number);
// if number = 10
if($length == 10) {
$number = preg_replace("/^1?(\d{3})(\d{3})(\d{4})$/", "($1) $2 $3", $number);
}
return $number;
}
}

View File

@@ -0,0 +1,203 @@
<?php
namespace App\Mail;
use App\Http\Controllers\AtencionClientes\ServiciosController;
use const App\Http\Controllers\NEGATIVO;
use const App\Http\Controllers\REALIZADO;
use App\Models\ServicioDet;
use App\Models\ServicioEvidencia;
use App\Models\ServicioProgreso;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;
use DB;
use Illuminate\Support\Facades\App;
use Log;
class SolicitudServicioTerminado extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($servicio_enc_id, $servicio_det_id)
{
$this->servicio_enc_id = $servicio_enc_id;
$this->servicio_det_id = $servicio_det_id;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$pdf = $this->generarPDF($this->servicio_enc_id,$this->servicio_det_id);
$info = [
'contacto' => $pdf['contacto'],
'folio' => $pdf['folio'],
'servicio' => $pdf['servicio']
];
return $this->view('email.emailSolicitudServicioTerminado', compact('info'))->subject('Servicio terminado.')->attachData($pdf['pdf'], $pdf['nombre'], [
'mime' => 'application/pdf',
]);
return $this->view('email.emailSolicitudServicioTerminado')->subject('Servicio terminado.');
}
function generarPDF($servicio_enc_id, $servicio_det_id){
setlocale(LC_MONETARY, 'en_US');
$det = ServicioDet::where('id', $servicio_det_id)->first();
if($det->estatus_servicio_id != REALIZADO && $det->estatus_servicio_id != NEGATIVO){
return response()->unprocessable('Error', ['El servicio no está terminado.']);
}
$campos = [
'servicios_enc.id as folio',
'clientes.denominacion as nombre_cliente',
DB::raw("DATE_FORMAT(`servicios_det`.`fecha_solicitud`, '%d/%m/%Y') as 'fecha_solicitud'"),
'clientes_domicilios.ciudad',
'clientes_domicilios.celular_responsable as telefono',
'clientes_domicilios.nombre_responsable_sucursal as contacto',
'cat_servicios.nombre as servicio',
'servicios_progreso.comentarios as observaciones',
'servicios_det.costo_servicio',
DB::raw("TIME_FORMAT(`servicios_progreso`.`fecha_ini_celular`, '%H:%i:%s') as 'fecha_inicio'"),
'servicios_progreso.duracion',
DB::raw("TIME_FORMAT(`servicios_progreso`.`fecha_fin_celular`, '%H:%i:%s') as 'fecha_final'"),
DB::raw("CONCAT(asesor.nombre,' ',asesor.apellido_paterno,' ',asesor.apellido_materno) as asesor"),
'sucursales.nombre as sucursal',
DB::raw("CONCAT(auxiliar.nombre,' ',auxiliar.apellido_paterno,' ',auxiliar.apellido_materno) as auxiliar"),
'cat_vehiculos.num_economico as vehiculo',
'servicios_progreso.firma',
'estatus_servicio_id',
'clientes_domicilios.calle',
'clientes_domicilios.num_ext',
'clientes_domicilios.num_int',
'clientes_domicilios.colonia',
'clientes_domicilios.cp',
'servicios_progreso.aplica_garantia'
];
$servicios = ServicioDet::select($campos)
->join('servicios_enc', 'servicios_det.servicio_enc_id', '=', 'servicios_enc.id')
->join('clientes', 'servicios_enc.cliente_id', '=', 'clientes.id')
->join('clientes_domicilios', 'servicios_enc.cliente_domicilio_id','=','clientes_domicilios.id')
->join('cat_servicios', 'servicios_det.servicio_id', '=', 'cat_servicios.id')
->leftJoin('servicios_progreso', 'servicios_det.id', '=', 'servicios_progreso.servicio_det_id')
->join('users as asesor', 'servicios_det.operador_id', '=', 'asesor.id')
->leftJoin('users as auxiliar', 'servicios_det.auxiliar_1', '=', 'auxiliar.id')
->join('sucursales', 'servicios_enc.sucursal_id', '=', 'sucursales.id')
->join('cat_vehiculos', 'servicios_det.vehiculo_id', '=', 'cat_vehiculos.id')
->where('servicios_det.id', $servicio_det_id)
->where('servicios_det.servicio_enc_id', $servicio_enc_id)
->firstOrFail();
$num_int = ($servicios->num_int)? ' INT. '.$servicios->num_int :'';
$cp = ($servicios->cp)? ' C.P. '.$servicios->cp : '';
$servicios['domicilio'] = 'CALLE '.$servicios->calle.' '.$servicios->num_ext.$num_int.', COL. '.$servicios->colonia.$cp;
//$servicios['folio'] = str_pad($servicios->folio, 5, "0", STR_PAD_LEFT);
$servicios['telefono'] = $this->phone_number_format($servicios->telefono);
if($servicios->estatus_servicio_id == NEGATIVO){
$costo_negativo = $servicios->costo_servicio;
$costo = 0.00;
}else{
$costo_negativo = 0.00;
$costo = $servicios->costo_servicio;
}
$servicios['costo_servicio'] = money_format('%(#10n', $costo);
$servicios['costo_negativo'] = money_format('%(#10n', $costo_negativo);
if($servicios->duracion){
list($h, $m, $s) = explode(":", $servicios->duracion);
$servicios['duracion'] = (int)$h.'hr '.$m.'m '.$s.'s';
}else{
$servicios['duracion'] = "00hr 00m 00s";
}
$servicio_progreso_id = ServicioProgreso::where('servicio_enc_id', $servicio_enc_id)
->where('servicio_det_id', $servicio_det_id)
->first();
if($servicio_progreso_id){
$evidencias_inicio = ServicioEvidencia::where('servicio_progreso_id', $servicio_progreso_id->id)
->where('etapa', 'Inicio')
->get();
$evidencias_proceso = ServicioEvidencia::where('servicio_progreso_id', $servicio_progreso_id->id)
->where('etapa', 'Proceso')
->get();
$evidencias_terminado = ServicioEvidencia::where('servicio_progreso_id', $servicio_progreso_id->id)
->where('etapa', 'Final')
->get();
$inicio = 0;
$proceso = 0;
$terminado = 0;
foreach ($evidencias_inicio as $e_i){
$inicio ++;
$servicios["evidencia_inicio_$inicio"] = $e_i->imagen;
}
foreach ($evidencias_proceso as $e_p){
$proceso ++;
$servicios["evidencia_proceso_$proceso"] = $e_p->imagen;
}
foreach ($evidencias_terminado as $e_t){
$terminado ++;
$servicios["evidencia_terminado_$terminado"] = $e_t->imagen;
}
}
try {
$pdf = App::make('dompdf.wrapper');
$pdf->loadHTML(view('recibos/servicios', compact('servicios')));
$nombre_pdf = 'solicitud_' . $servicio_enc_id . '_servicio_' . $servicio_det_id . '.pdf';
/*Storage::disk('public')->put('servicios/recibos_pdf/' . $nombre_pdf, $pdf->output());
ServicioProgreso::where('id', $servicio_progreso_id)
->first()
->update(['pdf' => $nombre_pdf]);*/
return ['pdf' => $pdf->stream($nombre_pdf), 'nombre' => $nombre_pdf, 'contacto' => $servicios->contacto, 'folio' => $servicios->folio, 'servicio' => $servicios->servicio];
} catch (\Exception $e) {
Log::info($e);
return response()->unprocessable('Error', ['Error al generar PDF.']);
}
}
function phone_number_format($number) {
// Allow only Digits, remove all other characters.
$number = preg_replace("/[^\d]/","",$number);
// get number length.
$length = strlen($number);
// if number = 10
if($length == 10) {
$number = preg_replace("/^1?(\d{3})(\d{3})(\d{4})$/", "($1) $2 $3", $number);
}
return $number;
}
}

View File

@@ -0,0 +1,60 @@
<?php
namespace App\Mail;
use App\Models\ServicioDet;
use DB;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Log;
class SolicitudServicioTerminadoNew extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($servicio_enc_id, $servicio_det_id, $pdf_nombre)
{
$this->servicio_enc_id = $servicio_enc_id;
$this->servicio_det_id = $servicio_det_id;
$this->pdf_nombre = $pdf_nombre;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
$campos = [
'servicios_enc.id as folio',
'clientes_domicilios.nombre_responsable_sucursal as contacto',
'cat_servicios.nombre as servicio',
];
$servicio = ServicioDet::select($campos)
->join('servicios_enc', 'servicios_det.servicio_enc_id', '=', 'servicios_enc.id')
->join('clientes', 'servicios_enc.cliente_id', '=', 'clientes.id')
->join('clientes_domicilios', 'servicios_enc.cliente_domicilio_id', '=', 'clientes_domicilios.id')
->join('cat_servicios', 'servicios_det.servicio_id', '=', 'cat_servicios.id')
->where('servicios_det.id', $this->servicio_det_id)
->where('servicios_det.servicio_enc_id', $this->servicio_enc_id)
->firstOrFail();
$info = [
'contacto' => $servicio->contacto,
'folio' => $servicio->folio,
'servicio' => $servicio->servicio
];
return $this->view('email.emailSolicitudServicioTerminado', compact('info'))
->subject('Servicio terminado.')
->attach(storage_path('app/public/servicios/recibos_pdf/' . $this->pdf_nombre));
}
}