|
|
|
|
@ -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). |
|
|
|
|
* |
|
|
|
|
|