From 89744789b20358206955f1ccdc9f4c7c2d62baf2 Mon Sep 17 00:00:00 2001 From: jirho Date: Sun, 13 Oct 2024 16:16:15 -0300 Subject: [PATCH] Funcion en persona para obtener las sedes --- src/app/Models/UaderMapuchePersona.php | 53 ++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/src/app/Models/UaderMapuchePersona.php b/src/app/Models/UaderMapuchePersona.php index 59bdecc..82bb1e9 100644 --- a/src/app/Models/UaderMapuchePersona.php +++ b/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). *