Browse Source

Hago que la ruta por dia se le especifique el dia y devuelva las sedes en las que trabaja ese dia

main
jirho 1 year ago
parent
commit
2280933e12
  1. 16
      src/app/Http/Controllers/ApiPersonaController.php
  2. 23
      src/app/Models/UaderMapuchePersona.php

16
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(

23
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,19 +193,28 @@ 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;
}
}
}

Loading…
Cancel
Save