Carga inicial

This commit is contained in:
IvanAS94
2025-12-26 17:21:11 -08:00
parent 45d9afc951
commit 51880798ca
359 changed files with 42159 additions and 1 deletions

View File

@@ -0,0 +1,193 @@
<?php
namespace App\Http\Controllers\Operador;
use App\Models\CatMotivoEstatus;
use const App\Http\Controllers\PAGADO;
use const App\Http\Controllers\PENDIENTE;
use const App\Http\Controllers\REPROGRAMADO;
use const App\Http\Controllers\VEHICULO_ASIGNADO;
use const App\Http\Controllers\VISITA;
use App\Http\Requests\Operador\FinalizarJornadaRequest;
use App\Http\Requests\Operador\InicioJornadaRequest;
use App\Models\BitacoraLaboral;
use App\Models\Parametro;
use App\Models\PreguntaDomestico;
use App\Models\PreguntaEmpresarial;
use App\Models\RespuestaDomestico;
use App\Models\RespuestaEmpresarial;
use App\Models\RespuestaOperadorDet;
use App\Models\RespuestaOperadorEnc;
use App\Models\ServicioDet;
use App\Models\ServicioEnc;
use App\Models\User;
use App\Models\UsuarioDesplazamiento;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Auth;
use Log;
use DB;
class JornadaController extends Controller
{
public function inicioJornada(InicioJornadaRequest $request)
{
$data = $request->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.']);
}
}
}