Durante un año solo se podrá crear 2 periodos cada uno tendrá su fecha de inicio y de fin asi como también sus fechas de entrega final.
La creation de periodos está limitado por year
y number
. Durante el año actual solo se podra crear
los periodos 2020-1
y 2020-2
debido a esto no se permitirá crear un nuevo periodo existente o con el número 3
por definir?
Se utiliza para indicar los días que el sistema debe esperar para reflejar a los alumnos las notas de las entregas finales, dando tiempo a que todos los jurados registren sus evaluaciones.
También influye en que los profesores no podrán registrar notas llegadas estas fechas.
Cuando se crea un nuevo periodo el admin debe seleccionar si el periodo esta habilitado o no, cuando un periodo es habilitado, este que todos los periodos anteriores esten deshabilitados.
Method | URI | Action |
---|---|---|
GET |
/periods |
index |
GET |
/periods/{id} |
show |
POST |
/periods |
store |
PATCH |
/periods/{id} |
update |
DELETE |
/periods/{id} |
delete |
PATCH |
/periods/{id}/open-inscriptions |
update inscriptions |
GET |
/periods/{id}/pensums |
get relation |
PUT |
/periods/{id}/pensums/{pensum} |
attach |
{
"id": 1,
"year": 2020, // unico dependiendo del `number`
"number": 1, // unico dependiendo del `year`, limitado a `1` y `2`
"weeks_length": 17,
"start_date": "2020-09-15",
"end_date": "2021-02-15",
"first_half_end_date": "2020-11-15",
"second_half_end_date": "2021-02-15",
"approval_minimum_note": 10,
"high_performance_note": 18,
"low_performance_note": 12,
"max_note": 20, // Nota maxima asignable en las clases evaludas y entregas finales
"approval_minimum_avg": 20, // Promedio de aprobación minimo para especialidad basica
"responsible_principal": "Dr. Sylvester Stanton",
"responsible_vice_principal": "Macie Keeling",
"responsible_of_study_control": "Miss Alexandrine Beer",
"responsible_manager": "Ms. Theresa Lesch",
"responsible_signer": "Prof. Adaline Erdman Sr.",
"enable": true, // solo puede haber un periodo activo
"enabled_inscriptions": false, // si tiene inscripciones de regulares
"enabled_preregisters": false, // si tiene pre-registros
"polls": false,
"final_delivery": true, // Si es falso al crear/actualizar los dias se colocan como nulos.
"final_delivery_days": [ // nullable
"2020-02-15"
],
"created_at": "2020-03-31 17:46:59",
"updated_at": "2020-03-31 17:46:59",
"settings": { // Configuraciones del periodo
"schedule_shifts": [ // turnos que deberian manejarse al registrar un estudiante
"morning",
"afternoon",
"mixed"
]
},
"staff": { // Configuracion de personal
"director": "Nombre", // Director
"vice_director": "Nombre", // Sub director
"executive_director": "Nombre", // Director executivo
"administrative_director": "Nombre", // Director administrativo
"study_control": "Nombre", // Responsable de control de estudio
"reports_signer": "Nombre" // Firmante de reportes/documentos
},
"semester_cost_bs": 12300, // Format E2 -> returned as 123,00
"semester_cost_dollar": 12300, // Format E2 -> returned as 123,00
}
{primary} Al obtener un modelo con el metodo
show
se puede utilizar un query string especial para cargar las relaciones?with=relation
o?with=relationA,relationB
GET /periods
admin
low admin
extends
Query FiltersFilter | Description |
---|---|
search=string |
Busca a traves de los atributos responsible_* |
number=int |
Filtra a traves de number , valores permitidos: 1 y 2 |
year=int |
Filtra a traves de year . Soporta operadores de busqueda > , < , >= , <= (se debe colocar al inicio del value) |
year_number={year}-{number} |
Filtra a traves del formato 2020-1 correspondiente a año y numero. |
enabled=bool |
Obtiene solo los habilitados |
polls=bool |
Obtiene solo los que soporten encuentas |
final_delivery=bool |
Obtiene solo los que soporten entrega final |
200
[
{
// Period
}
]
{info} Cuando se crea un nuevo periodo se buscan los pensums más actualizados por especialidad y se agregan como parte de el
POST /periods
admin
low admin
{
"year": "required|date_format:Y",
"number": "required|integer|min:1|max:2",
"weeks_length": "required|integer|min:0",
"start_date": "required|date_format:Y-m-d|before:end_date",
"end_date": "required|date_format:Y-m-d|after:start_date",
"first_half_end_date": "required|date_format:Y-m-d|before:second_half_end_date",
"second_half_end_date": "required|date_format:Y-m-d|after:first_half_end_date",
"approval_minimum_note": "required|integer|min:0",
"high_performance_note": "required|integer|min:0|gt:low_performance_note",
"low_performance_note": "required|integer|min:0|lt:high_performance_note",
"max_note": "required|integer|min:1|max:100",
"polls": "required|boolean",
"final_delivery": "required|boolean",
"final_delivery_days": "array|min:1|date_format:Y-m-d", // only required if final_delivery === true
"enabled_preregisters": "boolean", // optional
"enabled_inscriptions": "boolean", // optional
"settings.schedule_shifts": "array",
"settings.schedule_shifts.*": "string|in:morning,afternoon,mixed",
"staff.director": "required|string",
"staff.vice_director": "required|string",
"staff.executive_director": "required|string",
"staff.administrative_director": "required|string",
"staff.study_control": "required|string",
"staff.reports_signer": "required|string",
"semester_cost_bs": "nullable|integer|min:100", // Format E2
"semester_cost_dollar": "nullable|integer|min:100", // Format E2
}
201
{
// Model Attributes
}
Casi todos los atributos son actualizables mientras el periodo aun no este activo, exceptuando year
y number
por ser una combinación única.
Si se habilita un periodo, se deshabilitaran todos los demas (por si a caso).
{info} No actualiza
enabled_inscriptions
nienabled_preregisters
PATCH /periods/{id}
admin
low admin
{
"weeks_length": "integer|min:0",
"start_date": "date_format:Y-m-d|before:end_date",
"end_date": "date_format:Y-m-d|after:start_date",
"first_half_end_date": "date_format:Y-m-d|before:second_half_end_date",
"second_half_end_date": "date_format:Y-m-d|after:first_half_end_date",
"approval_minimum_note": "integer|min:0",
"high_performance_note": "integer|min:0|gt:low_performance_note",
"low_performance_note": "integer|min:0|lt:high_performance_note",
"max_note": "integer|min:1|max:100",
"enabled": "boolean",
"polls": "boolean",
"final_delivery": "boolean",
"final_delivery_days": "array|min:1|date_format:Y-m-d", // only required if final_delivery === true and current days are empty
"settings.schedule_shifts": "array",
"settings.schedule_shifts.*": "string|in:morning,afternoon,mixed",
"staff.director": "string",
"staff.vice_director": "string",
"staff.executive_director": "string",
"staff.administrative_director": "string",
"staff.study_control": "string",
"staff.reports_signer": "string",
"semester_cost_bs": "nullable|integer|min:100", // Format E2
"semester_cost_dollar": "nullable|integer|min:100", // Format E2
}
200
{
// Model Attributes
}
Un periodo como tal no deberia de poder eliminarse, pero, se da la opcion de eliminar si:
DELETE /periods/{id}
admin
low admin
204
No Content{primary} Solo se permite al periodo habilitado y al periodo proximo al habilitado actualizar estos atributos
PATCH /periods/{id}/open-inscriptions
admin
low admin
{
"enabled_inscriptions": "boolean", // abre o cierra las inscripciones de los regulares
"enabled_preregisters": "boolean" // abre o cierra los preregistros de primer semestre
}
200
{
// Model Attributes
}
GET /periods/{id}/pensums
admin
low admin
200
[
// pensums
]
Util para obtener el periodo actual del instituto
GET /periods/enabled
public
200
{
// Period
}
El pensum debe
PUT /periods/{id}/pensums/{pensum}
admin