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. 17
      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(

17
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,21 +193,30 @@ 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) {
// 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 $codigoSede = trim($cargo->Sede->uacad); // Eliminar espacios en blanco
// Verificar que no exista ya en el arreglo
if (!in_array($codigoSede, $sedes)) { if (!in_array($codigoSede, $sedes)) {
$sedes[] = $codigoSede; $sedes[] = $codigoSede;
} }
} }
}
return [ return [
"id" => $declaracionJurada->id_persona, "id" => $declaracionJurada->id_persona,

Loading…
Cancel
Save