Browse Source

Funcion en persona para obtener las sedes

main
jirho 1 year ago
parent
commit
89744789b2
  1. 53
      src/app/Models/UaderMapuchePersona.php

53
src/app/Models/UaderMapuchePersona.php

@ -166,6 +166,59 @@ class UaderMapuchePersona extends Model
];
}
/**
* Obtiene los codigos de sedes asociadas a la declaración jurada de la persona.
*
* Este método verifica si la persona tiene una declaración jurada. Si no la tiene,
* se lanza una excepción indicando que no se encontró la declaración jurada.
* Luego, se obtienen los cargos activos de la declaración jurada. Si no hay cargos,
* se lanza una excepción indicando que la persona no tiene designaciones.
* Finalmente, se construye un arreglo con las sedes activas asociadas a los cargos,
* asegurando que no haya duplicados, y se devuelve un array con el ID de la persona, su nombre
* completo y las unidades académicas 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.
*/
public function getSedes()
{
$declaracionJurada = $this->declaracion_jurada;
if (!$declaracionJurada) {
throw new NotFoundHttpException(
__("persona.DECLARACION_JURADA_NO_ENCONTRADA")
);
}
$cargos = $declaracionJurada
->CargosGrupo()
->where("estado", "A")
->get();
if (empty($cargos)) {
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;
}
}
return [
"id" => $declaracionJurada->id_persona,
"nombre" =>
ucwords(strtolower(trim($this->desc_nombr))) .
" " .
ucwords(strtolower(trim($this->desc_appat))),
"sedes activas" => $sedes,
];
}
/**
* Busca una persona en el sistema según el tipo de filtro especificado (DNI o teléfono).
*

Loading…
Cancel
Save