Carga inicial
This commit is contained in:
193
app/Http/Controllers/Operador/JornadaController.php
Normal file
193
app/Http/Controllers/Operador/JornadaController.php
Normal 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.']);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user