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