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