all(); $user = Auth::user(); $fecha = Carbon::now()->toDateTimeString(); DB::beginTransaction(); try { $bitacora = BitacoraLaboral::where('usuario_id', $user->id) ->whereNull('fecha_hora_fin') ->first(); if($bitacora){ DB::rollBack(); return response()->unprocessable('JORNADA_YA_INICIADA', [$bitacora->id]); } $campos = $this->camposSolicitudesServiciosOperador(); $servicios = ServicioDet::select($campos) ->joinDetalleServicioDet() ->joinDetalleServicioDetMovil() ->leftJoin('servicios_progreso', function($join) { $join->on('servicios_enc.id', '=', 'servicios_progreso.servicio_enc_id'); $join->on('servicios_det.id', '=', 'servicios_progreso.servicio_det_id'); }) ->whereNull('servicios_progreso.id') ->whereIn('servicios_det.estatus_servicio_id', [PENDIENTE, REPROGRAMADO, VISITA, PAGADO]) ->where('servicios_det.operador_id', $user->id) ->where('servicios_enc.sucursal_id', $user->sucursal_id) ->whereDate('servicios_det.fecha_solicitud', Carbon::now()->format('Y-m-d')) ->orderBy('servicios_det.fecha_solicitud') ->get(); /*$fecha_actual = Carbon::now()->format('Y-m-d'); $servicios = []; foreach ($servicios_list as $s){ $fecha_asignacion = Carbon::createFromTimeString($s->fecha_agenda)->format('Y-m-d'); if($fecha_asignacion == $fecha_actual && $s->aceptado){ $servicios[] = $s; }elseif ($fecha_asignacion != $fecha_actual){ $servicios[] = $s; } }*/ $encuesta_operador = RespuestaOperadorEnc::select('respuestas_operador_enc.id') ->join('respuestas_operador_det', 'respuestas_operador_det.respuestas_operador_enc_id', '=', 'respuestas_operador_enc.id') ->where('respuestas_operador_enc.user_id', $user->id) ->orderBy('respuestas_operador_enc.created_at','desc') ->first(); $vehiculo_operador = RespuestaOperadorDet::select('cat_vehiculos.id', 'respuestas_operador_det.respuesta_text') ->join('respuestas_operador_enc', 'respuestas_operador_enc.id', '=', 'respuestas_operador_det.respuestas_operador_enc_id') ->join('cat_vehiculos','cat_vehiculos.num_economico', '=', 'respuestas_operador_det.respuesta_text') ->where('respuestas_operador_enc.user_id', $user->id) ->where('respuestas_operador_det.nombre', '=',VEHICULO_ASIGNADO) ->where('respuestas_operador_det.respuestas_operador_enc_id', $encuesta_operador->id) ->first(); //$servi = collect($servicios)->first(); //$data['vehiculo_id'] = ($servi) ? $servi->vehiculo_id : null; $data['vehiculo_id'] = ($vehiculo_operador->id) ? $vehiculo_operador->id : 2; $data['usuario_id'] = $user->id; $data['fecha_hora_ini'] = $fecha; $jornada = BitacoraLaboral::create($data); $data_desplazamiento = [ 'bitacora_laboral_id' => $jornada->id, 'usuario_id' => $user->id, 'fecha' => $fecha, 'modelo_celular' => $data['modelo_celular'], 'bateria' => $data['bateria'], 'lat' => $data['lat_ini'], 'lng' => $data['lng_ini'] ]; UsuarioDesplazamiento::create($data_desplazamiento); User::where('id', $user->id)->first()->update(['token_firebase' => $data['token_firebase']]); $parametros = Parametro::get(); $encuesta_domestico = PreguntaDomestico::get(); foreach ($encuesta_domestico as $eD){ $eD->respuestas = RespuestaDomestico::where('pregunta_id', $eD->id)->get(); } $encuesta_empresarial = PreguntaEmpresarial::get(); foreach ($encuesta_empresarial as $eE){ $eE->respuestas = RespuestaEmpresarial::where('pregunta_id', $eE->id)->get(); } $motivos_estatus = CatMotivoEstatus::select('id', 'nombre as descripcion') ->get(); DB::commit(); return response()->success(compact('servicios', 'parametros', 'jornada', 'encuesta_domestico', 'encuesta_empresarial', 'motivos_estatus')); } catch (\Exception $e) { DB::rollBack(); Log::info($e->getMessage()); return response()->unprocessable('Error', ['Error al guardar el inicio de jornada.']); } } public function finalizarJornada(FinalizarJornadaRequest $request, $id){ $data = $request->all(); $user = Auth::user(); $fecha = Carbon::now()->toDateTimeString(); DB::beginTransaction(); try { $jornada = BitacoraLaboral::where('id',$id) ->first(); if($jornada->fecha_hora_fin){ DB::rollBack(); return response()->unprocessable('Error', ['La jornada ya se encuentra finalizada.']); } $data['fecha_hora_fin'] = $fecha; $jornada->update($data); $data_desplazamiento = [ 'bitacora_laboral_id' => $id, 'usuario_id' => $user->id, 'fecha' => $fecha, 'modelo_celular' => $data['modelo_celular'], 'bateria' => $data['bateria'], 'lat' => $data['lat_fin'], 'lng' => $data['lng_fin'] ]; UsuarioDesplazamiento::create($data_desplazamiento); User::where('id', $user->id)->update(['token_firebase' => NULL]); DB::commit(); return response()->success(['result' => 'ok']); } catch (\Exception $e) { DB::rollBack(); return response()->unprocessable('Error', ['Error al guardar el fin de jornada.']); } } }