From 2280933e1271df6654bc8b1d4096b50a901dfb86 Mon Sep 17 00:00:00 2001 From: jirho Date: Mon, 2 Dec 2024 02:37:28 -0300 Subject: [PATCH] Hago que la ruta por dia se le especifique el dia y devuelva las sedes en las que trabaja ese dia --- .../Http/Controllers/ApiPersonaController.php | 16 ++++++++--- src/app/Models/UaderMapuchePersona.php | 27 ++++++++++++------- 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/src/app/Http/Controllers/ApiPersonaController.php b/src/app/Http/Controllers/ApiPersonaController.php index e0a24bb..02d3aaa 100644 --- a/src/app/Http/Controllers/ApiPersonaController.php +++ b/src/app/Http/Controllers/ApiPersonaController.php @@ -544,6 +544,14 @@ class ApiPersonaController extends Controller */ public static function getSedes(Request $request) { + + if (!$request->has("dia")) { + return response()->json( + ["error" => __("persona.DEBE_INGRESAR_DIA")], + HttpStatus::BAD_REQUEST + ); + } + if (!$request->has("dni") && !$request->has("telefono")) { return response()->json( ["error" => __("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], @@ -552,11 +560,11 @@ class ApiPersonaController extends Controller } if ($request->has("dni")) { - return self::getSedesPor("dni", $request->get("dni")); + return self::getSedesPor("dni", $request->get("dni"), $request->has("dia")); } if ($request->has("telefono")) { - return self::getSedesPor("telefono", $request->get("telefono")); + return self::getSedesPor("telefono", $request->get("telefono"), $request->has("dia")); } } @@ -572,7 +580,7 @@ class ApiPersonaController extends Controller * @return JsonResponse La respuesta en formato JSON con las sedes o un mensaje de error. * @throws InvalidArgumentException Si el tipo de búsqueda no es válido. */ - private static function getSedesPor(string $tipo, string $valor) + private static function getSedesPor(string $tipo, string $valor, $dia) { try { if ($tipo === "dni") { @@ -588,7 +596,7 @@ class ApiPersonaController extends Controller } if ($persona) { - return response()->json($persona->getSedes(), HttpStatus::OK); + return response()->json($persona->getSedesPorDia($dia), HttpStatus::OK); } return response()->json( diff --git a/src/app/Models/UaderMapuchePersona.php b/src/app/Models/UaderMapuchePersona.php index 82bb1e9..39fbc14 100644 --- a/src/app/Models/UaderMapuchePersona.php +++ b/src/app/Models/UaderMapuchePersona.php @@ -180,7 +180,7 @@ class UaderMapuchePersona extends Model * @return array Un arreglo que contiene el ID de la persona, su nombre completo y las sedes activas. * @throws NotFoundHttpException Si no se encuentra la declaración jurada o si la persona no tiene designaciones. */ - public function getSedes() + public function getSedesPorDia($codigoDia) { $declaracionJurada = $this->declaracion_jurada; if (!$declaracionJurada) { @@ -193,22 +193,31 @@ class UaderMapuchePersona extends Model ->CargosGrupo() ->where("estado", "A") ->get(); - if (empty($cargos)) { + + if ($cargos->isEmpty()) { throw new NotFoundHttpException( __("persona.NO_TIENE_DESIGNACIONES") ); } - - // Agrego la sede + $sedes = []; + foreach ($cargos as $cargo) { - $codigoSede = trim($cargo->Sede->uacad); // Eliminar espacios en blanco - // Verificar que no exista ya en el arreglo - if (!in_array($codigoSede, $sedes)) { - $sedes[] = $codigoSede; + // Filtrar los horarios del cargo según el código del día + $tieneHorariosHoy = $cargo->GrupoHorario->some(function ($grupoHorario) use ($codigoDia) { + return $grupoHorario->Horarios->some(function ($horario) use ($codigoDia) { + return $horario->dia_semanal == $codigoDia; + }); + }); + + if ($tieneHorariosHoy) { + $codigoSede = trim($cargo->Sede->uacad); // Eliminar espacios en blanco + if (!in_array($codigoSede, $sedes)) { + $sedes[] = $codigoSede; + } } } - + return [ "id" => $declaracionJurada->id_persona, "nombre" =>