Carga inicial
This commit is contained in:
474
app/Http/Controllers/Operador/ServiciosProgresoController.php
Normal file
474
app/Http/Controllers/Operador/ServiciosProgresoController.php
Normal file
@@ -0,0 +1,474 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Operador;
|
||||
|
||||
use const App\Http\Controllers\COSTO_SERVICIO_NEGATIVO;
|
||||
use const App\Http\Controllers\NEGATIVO;
|
||||
use const App\Http\Controllers\REALIZADO;
|
||||
use App\Http\Requests\Operador\FinalizarServicioRequest;
|
||||
use App\Http\Requests\Operador\GuardarEvidenciaRequest;
|
||||
use App\Http\Requests\Operador\GuardarFirmaRequest;
|
||||
use App\Http\Requests\Operador\IniciarServicioRequest;
|
||||
use App\Mail\SolicitudServicioTerminado;
|
||||
use App\Models\Cliente;
|
||||
use App\Models\ClienteDomicilio;
|
||||
use App\Models\ServicioDet;
|
||||
use App\Models\ServicioEnc;
|
||||
use App\Models\ServicioEvidencia;
|
||||
use App\Models\ServicioProgreso;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Log;
|
||||
use Excel;
|
||||
|
||||
class ServiciosProgresoController extends Controller
|
||||
{
|
||||
/**
|
||||
* Iniciar Servicio.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function iniciarServicio(IniciarServicioRequest $request)
|
||||
{
|
||||
$data = $request->all();
|
||||
$now = Carbon::now()->format('Y-m-d');
|
||||
$servicio = ServicioProgreso::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('servicio_det_id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
$servicio_det = ServicioDet::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
list($fecha) = explode(" ", $servicio_det->fecha_solicitud);
|
||||
|
||||
//Validar fecha de solicitud
|
||||
if($now != $fecha){
|
||||
//return response()->unprocessable('Parametros inválidos',['El servicio no se puede iniciar ya que corresponde a otra fecha.']);
|
||||
}
|
||||
|
||||
//Validar que el servicio no este iniciado
|
||||
if($servicio){
|
||||
return response()->unprocessable('Parametros inválidos',['El servicio ya está iniciado.']);
|
||||
}
|
||||
$data['fecha_ini_servidor'] = Carbon::now()->toDateTimeString();
|
||||
|
||||
//Se agrego por detalle de Geolocalizacion
|
||||
$servicio_enc = ServicioEnc::select('clientes_domicilios.lat','clientes_domicilios.lng')
|
||||
->join('clientes_domicilios','servicios_enc.cliente_domicilio_id', '=','clientes_domicilios.id')
|
||||
->where('servicios_enc.id', $servicio_det->servicio_enc_id)
|
||||
->first();
|
||||
|
||||
$data['lat_ini'] = $servicio_enc->lat;
|
||||
$data['lng_ini'] = $servicio_enc->lng;
|
||||
//
|
||||
|
||||
ServicioProgreso::create($data);
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Finalizar Servicio.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function finalizarServicio(FinalizarServicioRequest $request)
|
||||
{
|
||||
$data = $request->only(['fecha_fin_celular', 'duracion', 'lat_fin', 'lng_fin', 'comentarios', 'aplica_garantia','litraje']);
|
||||
$cat_motivos_estatus_id = $request->input('cat_motivos_estatus_id',0);
|
||||
$now = Carbon::now();
|
||||
|
||||
$servicio_enc_id = $request->input('servicio_enc_id');
|
||||
$servicio_det_id = $request->input('servicio_det_id');
|
||||
$litraje = $request->litraje;
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $servicio_enc_id)
|
||||
->where('servicio_det_id', $servicio_det_id)
|
||||
->first();
|
||||
|
||||
$servicio_det = ServicioDet::where('servicio_enc_id', $servicio_enc_id)
|
||||
->where('id', $servicio_det_id)
|
||||
->first();
|
||||
$servicio = ServicioEnc::where('id', $servicio_enc_id)->first();
|
||||
|
||||
$correos = [];
|
||||
$correo_cliente = Cliente::select('email')->where('id', $servicio->cliente_id)->first();
|
||||
$correo_cliente_domicilio = ClienteDomicilio::select('email')->where('id', $servicio->cliente_domicilio_id)->first();
|
||||
|
||||
if($correo_cliente && $correo_cliente->email){
|
||||
array_push($correos, $correo_cliente->email);
|
||||
}
|
||||
if($correo_cliente_domicilio && $correo_cliente_domicilio->email){
|
||||
array_push($correos, $correo_cliente_domicilio->email);
|
||||
}
|
||||
|
||||
//Validar fecha de solicitud
|
||||
/*
|
||||
list($fecha) = explode(" ", $servicio_det->fecha_solicitud);
|
||||
|
||||
if($now->format('Y-m-d') != $fecha){
|
||||
return response()->unprocessable('Parametros inválidos',['No se puede finalizar el servicio ya que corresponde a otra fecha.']);
|
||||
}*/
|
||||
|
||||
//Validar que el servicio no este terminado
|
||||
if($servicio_det->estatus_servicio_id == REALIZADO){
|
||||
return response()->unprocessable('Parametros inválidos',['El servicio ya está terminado']);
|
||||
}
|
||||
|
||||
//Validar que el servicio esté iniciado
|
||||
if(!$servicio_progreso){
|
||||
return response()->unprocessable('Parametros inválidos',['El servicio no está iniciado.']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
$data['fecha_fin_servidor'] = $now->toDateTimeString();
|
||||
|
||||
//Se agrego por detalle de Geolocalizacion
|
||||
$servicio_enc = ServicioEnc::select('clientes_domicilios.lat','clientes_domicilios.lng')
|
||||
->join('clientes_domicilios','servicios_enc.cliente_domicilio_id', '=','clientes_domicilios.id')
|
||||
->where('servicios_enc.id', $servicio_det->servicio_enc_id)
|
||||
->first();
|
||||
$data['lat_fin'] = $servicio_enc->lat;
|
||||
$data['lng_fin'] = $servicio_enc->lng;
|
||||
if($litraje == 0){
|
||||
$data['litraje'] = null;
|
||||
}else{
|
||||
$data['litraje'] = $litraje;
|
||||
}
|
||||
|
||||
$servicio_progreso->update($data);
|
||||
if ($cat_motivos_estatus_id != 0){
|
||||
$servicio_det->update(
|
||||
[
|
||||
'estatus_servicio_id' => NEGATIVO,
|
||||
'cat_motivos_estatus_id' => $cat_motivos_estatus_id,
|
||||
'costo_servicio' => COSTO_SERVICIO_NEGATIVO,
|
||||
]
|
||||
);
|
||||
} else{
|
||||
$servicio_det->update(['estatus_servicio_id' => REALIZADO]);
|
||||
}
|
||||
|
||||
DB::commit();
|
||||
|
||||
try {
|
||||
if(count($correos) > 0){
|
||||
Mail::to($correos)->send(new SolicitudServicioTerminado($servicio_enc_id,$servicio_det_id));
|
||||
}
|
||||
}catch (\Exception $e){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Log::info($e);
|
||||
return response()->unprocessable('Error', ['Error al finalizar servicio.']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Guardar Evidencia.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function guardarEvidencia(GuardarEvidenciaRequest $request)
|
||||
{
|
||||
$data = $request->only(['etapa', 'lat', 'lng', 'servicio_enc_id', 'servicio_det_id']);
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('servicio_det_id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
$servicio_det = ServicioDet::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
//Validar que el servicio no este terminado
|
||||
if($servicio_det->estatus_servicio_id == REALIZADO){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//Validar que el servicio esté iniciado
|
||||
if(!$servicio_progreso){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//Validar imagen
|
||||
if (!$request->hasFile('imagen') || !$request->file('imagen')->isValid()){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//Validar etapa
|
||||
if($data['etapa'] != 'Inicio' && $data['etapa'] != 'Proceso' && $data['etapa'] != 'Final'){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
$imagen = $request->imagen;
|
||||
|
||||
$uuid = $imagen->hash('sha256');
|
||||
|
||||
//Validar que la imagen no haya sido capturada
|
||||
if(ServicioEvidencia::where('uuid', $uuid)->first()){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
|
||||
$data['uuid'] = $uuid;
|
||||
$data['servicio_progreso_id'] = $servicio_progreso->id;
|
||||
|
||||
//Se agrego por detalle de Geolocalizacion
|
||||
$servicio_enc = ServicioEnc::select('clientes_domicilios.lat','clientes_domicilios.lng')
|
||||
->join('clientes_domicilios','servicios_enc.cliente_domicilio_id', '=','clientes_domicilios.id')
|
||||
->where('servicios_enc.id', $servicio_det->servicio_enc_id)
|
||||
->first();
|
||||
$data['lat'] = $servicio_enc->lat;
|
||||
$data['lng'] = $servicio_enc->lng;
|
||||
//
|
||||
|
||||
$evidencia = ServicioEvidencia::create($data);
|
||||
|
||||
/*
|
||||
* IMAGEN
|
||||
*/
|
||||
|
||||
$nombre_img = 'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'_evidencia_'.$evidencia->id.'.'.$imagen->extension();
|
||||
$imagen->storeAs('public/servicios/evidencias', $nombre_img);
|
||||
|
||||
$evidencia->update(['imagen' => $nombre_img]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Log::info($e);
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Guardar Evidencia.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
public function guardarFirmas(GuardarFirmaRequest $request)
|
||||
{
|
||||
|
||||
$data = $request->only(['servicio_enc_id', 'servicio_det_id']);
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('servicio_det_id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
/*
|
||||
* Validar imagen
|
||||
* Se comenta por el cambio de guardado
|
||||
*/
|
||||
if (!$request->hasFile('imagen') || !$request->file('imagen')->isValid()){
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
$imagen = $request->imagen;
|
||||
|
||||
try {
|
||||
|
||||
/*
|
||||
* IMAGEN
|
||||
*/
|
||||
|
||||
$nombre_img = 'firma_'.'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'.'.$imagen->extension();
|
||||
$imagen->storeAs('public/servicios/firmas', $nombre_img);
|
||||
|
||||
$servicio_progreso->update(['firma' => $nombre_img]);
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
} catch (\Exception $e) {
|
||||
Log::info($e);
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Guardar Evidencia.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
/*public function guardarEvidencia(GuardarEvidenciaRequest $request)
|
||||
{
|
||||
$data = $request->only(['etapa', 'lat', 'lng', 'servicio_enc_id', 'servicio_det_id']);
|
||||
$imagen = $request->input('imagen');
|
||||
$now = Carbon::now()->format('Y-m-d');
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('servicio_det_id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
$servicio_det = ServicioDet::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
list($fecha) = explode(" ", $servicio_det->fecha_solicitud);
|
||||
|
||||
//Validar fecha de solicitud
|
||||
if($now != $fecha){
|
||||
//return response()->unprocessable('Parametros inválidos',['No se pueden guardar evidencias ya que el servicio corresponde a otra fecha.']);
|
||||
}
|
||||
|
||||
//Validar que el servicio no este terminado
|
||||
if($servicio_det->estatus_servicio_id == REALIZADO){
|
||||
//return response()->unprocessable('Parametros inválidos',['El servicio ya está terminado']);
|
||||
|
||||
//Se agrega para que regrese la petición pero no se guarda información
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//Validar que el servicio esté iniciado
|
||||
if(!$servicio_progreso){
|
||||
//return response()->unprocessable('Parametros inválidos',['El servicio no está iniciado.']);
|
||||
|
||||
//Se agrega para que regrese la petición pero no se guarda información
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//Validar imagen
|
||||
//if (!$request->hasFile('imagen') || !$request->file('imagen')->isValid()){
|
||||
// return response()->unprocessable('Parametros inválidos',['Imagen invalida']);
|
||||
//}
|
||||
|
||||
//Validar etapa
|
||||
if($data['etapa'] != 'Inicio' && $data['etapa'] != 'Proceso' && $data['etapa'] != 'Final'){
|
||||
//return response()->unprocessable('Parametros inválidos',['El valor etapa no es valido']);
|
||||
|
||||
//Se agrega para que regrese la petición pero no se guarda información
|
||||
return response()->success(['result' => 'ok']);
|
||||
}
|
||||
|
||||
//$imagen = $request->imagen;
|
||||
|
||||
//$uuid = hash_file('sha256', $imagen);
|
||||
|
||||
//Validar que la imagen no haya sido capturada
|
||||
//if(ServicioEvidencia::where('uuid', $uuid)->first()){
|
||||
return response()->unprocessable('Parametros inválidos',['La imagen ya fue capturada']);
|
||||
//}
|
||||
|
||||
DB::beginTransaction();
|
||||
try {
|
||||
|
||||
$data['uuid'] = hash('sha256', $imagen);
|
||||
$data['servicio_progreso_id'] = $servicio_progreso->id;
|
||||
|
||||
//Se agrego por detalle de Geolocalizacion
|
||||
$servicio_enc = ServicioEnc::select('clientes_domicilios.lat','clientes_domicilios.lng')
|
||||
->join('clientes_domicilios','servicios_enc.cliente_domicilio_id', '=','clientes_domicilios.id')
|
||||
->where('servicios_enc.id', $servicio_det->servicio_enc_id)
|
||||
->first();
|
||||
$data['lat'] = $servicio_enc->lat;
|
||||
$data['lng'] = $servicio_enc->lng;
|
||||
//
|
||||
|
||||
$evidencia = ServicioEvidencia::create($data);
|
||||
|
||||
//$nombre_img = 'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'_evidencia_'.$evidencia->id.'.'.$imagen->extension();
|
||||
//$imagen->storeAs('public/servicios/evidencias', $nombre_img);
|
||||
|
||||
$nombre_img = 'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'_evidencia_'.$evidencia->id.'.jpeg';
|
||||
Storage::disk('public')->put('servicios/evidencias/' . $nombre_img, $this->base64ToImage($imagen), 'public');
|
||||
|
||||
$evidencia->update(['imagen' => $nombre_img]);
|
||||
|
||||
DB::commit();
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
} catch (\Exception $e) {
|
||||
DB::rollBack();
|
||||
Log::info($e);
|
||||
return response()->unprocessable('Error', ['Error al guardar la evidencia.']);
|
||||
}
|
||||
}
|
||||
|
||||
public function guardarFirmas(GuardarFirmaRequest $request)
|
||||
{
|
||||
|
||||
$data = $request->only(['servicio_enc_id', 'servicio_det_id']);
|
||||
|
||||
$servicio_progreso = ServicioProgreso::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
->where('servicio_det_id', $data['servicio_det_id'])
|
||||
->first();
|
||||
|
||||
// $now = Carbon::now()->format('Y-m-d');
|
||||
//
|
||||
// $servicio_det = ServicioDet::where('servicio_enc_id', $data['servicio_enc_id'])
|
||||
// ->where('id', $data['servicio_det_id'])
|
||||
// ->first();
|
||||
//
|
||||
// list($fecha) = explode(" ", $servicio_det->fecha_solicitud);
|
||||
//
|
||||
// //Validar fecha de solicitud
|
||||
// if($now != $fecha){
|
||||
// return response()->unprocessable('Parametros inválidos',['No se pueden guardar evidencias ya que el servicio corresponde a otra fecha.']);
|
||||
// }
|
||||
//
|
||||
// //Validar que el servicio no este terminado
|
||||
// if($servicio_det->estatus_servicio_id == REALIZADO){
|
||||
// return response()->unprocessable('Parametros inválidos',['El servicio ya está terminado']);
|
||||
// }
|
||||
//
|
||||
// //Validar que el servicio esté iniciado
|
||||
// if(!$servicio_progreso){
|
||||
// return response()->unprocessable('Parametros inválidos',['El servicio no está iniciado.']);
|
||||
// }
|
||||
|
||||
// if (!$request->hasFile('imagen') || !$request->file('imagen')->isValid()){
|
||||
// return response()->unprocessable('Parametros inválidos',['Imagen invalida']);
|
||||
// }
|
||||
|
||||
$imagen = $request->input('imagen');
|
||||
|
||||
try {
|
||||
|
||||
// $nombre_img = 'firma_'.'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'.'.$imagen->extension();
|
||||
// $imagen->storeAs('public/servicios/firmas', $nombre_img);
|
||||
|
||||
$nombre_img = 'firma_'.'solicitud_'.$data['servicio_enc_id'].'_servicio_'.$data['servicio_det_id'].'.jpeg';
|
||||
Storage::disk('public')->put('servicios/firmas/' . $nombre_img, $this->base64ToImage($imagen), 'public');
|
||||
|
||||
$servicio_progreso->update(['firma' => $nombre_img]);
|
||||
|
||||
return response()->success(['result' => 'ok']);
|
||||
} catch (\Exception $e) {
|
||||
Log::info($e);
|
||||
return response()->unprocessable('Error', ['Error al guardar la firma.']);
|
||||
}
|
||||
}*/
|
||||
|
||||
public function verificarServicio(Request $request){
|
||||
|
||||
$servicios_id = $request->all();
|
||||
|
||||
$servicios = array();
|
||||
foreach ($servicios_id as $s){
|
||||
$servicio_det = ServicioDet::find($s);
|
||||
|
||||
if($servicio_det && $servicio_det->estatus_servicio_id == REALIZADO){
|
||||
array_push($servicios,['servicio_id' => $s]);
|
||||
}
|
||||
}
|
||||
|
||||
return response()->success($servicios);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user