Buenas tenemos una consulta respecto de personalizar la API de guarani , estamos en versión 3.20.1.
La idea es extender una clase que ya existe y agregarle nuevos endpoints, por ejemplo para personas agregamos “egresado” y nos gustaría poder acceder a través de la url
“/personas/{persona}/egresado”, al igual que por ejemplo el que ya existe de datos personales “/personas/{persona}/datospersonales”., o en su defecto “personas-unlp/{persona}/egresado”, pero por el contrario nos están quedando asi las rutas “/modelos/personas/{persona}/personas-unlp/egresado” .
La personalización la hicimos siguiendo los pasos de la documentación: https://documentacion.siu.edu.ar/wiki/SIU-Guarani/Version3.20.0/personalizaciones/rest
En resumen lo que hicimos fue crear esto:
personalizacion\php\rest\v1\modelos\personas\recurso_personas_unlp.php
<?php
namespace PERS\Guarani\php\rest\v1\personas;
use SIUToba\rest\rest;
use SIUToba\rest\lib\rest_validador;
use SIU\Guarani\php\rest\v1\personas\recurso_personas;
class recurso_personas_unlp extends recurso_personas
{
public static function _get_modelos()
{
$modelos = parent::_get_modelos();
$egresado = array (
'sede' => array('type' =>'string'),
'plan' => array('type' =>'string'),
'nombre_persona' => array('type' =>'string'),
'apellido_persona' => array('type' =>'string'),
'sexo' => array('type' =>'string'),
'nombre_ua' => array('type' =>'string'),
'carrera_nombre' => array('type' =>'string'),
'nombre_titulo' => array('type' =>'string'),
'fecha_egreso' => array('type' =>'string'),
'anio_ingreso' => array('type' =>'string'),
'fecha_ingreso_facultad' => array('type' =>'string'),
'fecha_ingreso_carrera' => array('type' =>'string'),
'tipo_documento' => array('type' =>'string'),
'nro_documento' => array('type' =>'string'),
'id_localidad' => array('type' =>'string'),
'nombre_localidad' => array('type' =>'string'),
'nombre_localidad_abreviado' => array('type' =>'string'),
'id_partido' => array('type' =>'string'),
'nombre_partido' => array('type' =>'string'),
'id_provincia' => array('type' =>'string'),
'nombre_provincia' => array('type' =>'string'),
'id_pais' => array('type' =>'string'),
'nombre_pais' => array('type' =>'string'),
'fecha_nacimiento' => array('type' =>'string'),
'domicilio_calle' => array('type' =>'string'),
'domicilio_numero' => array('type' =>'string'),
'id_colegio' => array('type' =>'string'),
'nombre_colegio' => array('type' =>'string'),
'id_titulo_secundario' => array('type' =>'string'),
'nombre_titulo_secundario' => array('type' =>'string'),
'email' => array('type' =>'string'),
'titulo_anterior' => array('type' =>'string'),
'titulo_anterior_denominacion' => array('type' =>'string'),
'titulo_anterior_institucion' => array('type' =>'string'),
'tipo_titulo' => array('type' =>'string'),
'nro_resolucion_ministerial' => array('type' =>'string'),
'domicilio_telefono' => array('type' =>'string'),
);
$modelos['Egresado'] = $egresado;
return $modelos;
}
/**
* GET /egresado
*
* @notes
* Devuelve datos de un egresado.
*
* @summary Personas
* @responses 200 array {"$ref":"Persona"}
* @responses 404 La persona no existe
* @responses 400 Error en los par�metros
*/
function get_egresado_list($persona)
{
$datos = $this->modelo->get_datos_egresado_alumno($persona);
rest::response()->get($datos);
}
}
personalizacion\php\rest\v1\modelos\rest_personas.php
<?php
namespace PERS\Guarani\php\rest\v1\modelos;
use SIU\Guarani\php\rest\v1\modelos\rest_personas_nucleo;
class rest_personas extends rest_personas_nucleo {
function get_datos_egresado_alumno($persona)
{
$titulo = trim(rest::request()->get('titulo'));
if ($titulo == "") {
throw new rest_error(400, "El parámetro 'titulo' es obligatorio");
} else {
}
$unidad_academica = trim(rest::request()->get('unidad_academica'));
if ($unidad_academica == "") {
throw new rest_error(400, "El parámetro 'unidad_academica' es obligatorio");
}
$carrera = trim(rest::request()->get('carrera'));
if ($carrera == "") {
throw new rest_error(400, "El parámetro 'carrera' es obligatorio");
}
$rs = $this->modelo->get_datos_egresado($persona, $fecha, $modalidad);
if (count($rs)) {
$datos = rest_hidratador::hidratar($this->get_modelo('Egresado'), $rs);
return $datos;
} else {
throw new rest_error(404, 'La persona no tiene historia academica');
}
}
}
Según la documentación el servicio debería quedar disponible en “/personas-unlp/…” como podemos lograr eso? muchas gracias.