Files
Sio-Back/app/Mail/SolicitudServicio.php
SIO Admin de656b70a2 feat: Actualizacion sistema SIO Backend
- Nuevo modulo de historial de cambios (ServicioHistorial)
- Observer para tracking automatico de cambios en servicios
- Correccion de variables auxiliar en ServiciosController
- Actualizacion de configuraciones y migraciones
- Endpoint para consultar historial de cambios

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-17 23:01:55 +00:00

122 lines
5.9 KiB
PHP
Executable File

<?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;
}
}