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) 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")) { if (!$request->has("dni") && !$request->has("telefono")) {
return response()->json( return response()->json(
["error" => __("persona.DEBE_INGRESAR_DNI_O_TELEFONO")], ["error" => __("persona.DEBE_INGRESAR_DNI_O_TELEFONO")],
@ -552,11 +560,11 @@ class ApiPersonaController extends Controller
} }
if ($request->has("dni")) { 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")) { 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. * @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. * @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 { try {
if ($tipo === "dni") { if ($tipo === "dni") {
@ -588,7 +596,7 @@ class ApiPersonaController extends Controller
} }
if ($persona) { if ($persona) {
return response()->json($persona->getSedes(), HttpStatus::OK); return response()->json($persona->getSedesPorDia($dia), HttpStatus::OK);
} }
return response()->json( 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. * @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. * @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; $declaracionJurada = $this->declaracion_jurada;
if (!$declaracionJurada) { if (!$declaracionJurada) {
@ -193,19 +193,28 @@ class UaderMapuchePersona extends Model
->CargosGrupo() ->CargosGrupo()
->where("estado", "A") ->where("estado", "A")
->get(); ->get();
if (empty($cargos)) {
if ($cargos->isEmpty()) {
throw new NotFoundHttpException( throw new NotFoundHttpException(
__("persona.NO_TIENE_DESIGNACIONES") __("persona.NO_TIENE_DESIGNACIONES")
); );
} }
// Agrego la sede
$sedes = []; $sedes = [];
foreach ($cargos as $cargo) { foreach ($cargos as $cargo) {
$codigoSede = trim($cargo->Sede->uacad); // Eliminar espacios en blanco // Filtrar los horarios del cargo según el código del día
// Verificar que no exista ya en el arreglo $tieneHorariosHoy = $cargo->GrupoHorario->some(function ($grupoHorario) use ($codigoDia) {
if (!in_array($codigoSede, $sedes)) { return $grupoHorario->Horarios->some(function ($horario) use ($codigoDia) {
$sedes[] = $codigoSede; 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