Method | URI | Action |
---|---|---|
GET |
/students |
index |
GET |
/students/{id} |
show |
PATCH |
/students/{id} |
update |
DELETE |
/students/{id} |
soft delete |
POST |
/students/{id}/re-inscription |
custom |
POST |
/students/{id}/change-section |
custom |
POST |
/students/{id}/specialization-history |
custom |
GET |
/students/{id}/courses/next-semester |
custom |
POST |
/students/{id}/approves-current-semester |
custom |
GET |
/students/{id}/absences |
index |
GET |
/students/{id}/reports/courses-notes |
download |
GET |
/students/{id}/reports/courses-final-notes |
download |
GET |
/students/{id}/reports/courses/lessons-notes-history |
download |
GET |
/students/{id}/reports/general-notes-history |
download |
GET |
/students/{id}/reports/profile-info |
download |
{
"id": 1,
"email": "blake03@stanton.net", // mismo email que el user relacionado
"id_document": "29788338",
"first_name": "Janis Howell",
"last_name": "Schneider",
"gender": "female",
"schedule_shift": "afternoon",
"address": "432 Roslyn Inlet Suite 382\nPort Lynn, HI 22962-1350",
"birth_place": "432 Roslyn Inlet Suite 382\nPort Lynn, HI 22962-1350",
"birth_date": "2002-04-03",
"phone": "+2454506365354",
"mobile_phone": "+2454506365354",
"profile_picture": null, // copia del profile_picture del usuario relacionado
"educational_background": "superior",
"educational_title": "Prof.",
"educational_institution_name": "Eliseo Braun",
"educational_graduation_date": "2019-04-03",
"educational_current_activity": "trabajando?",
"representative_email": "ggusikowski@gmail.com",
"representative_name": "Kiera Bauch",
"representative_profession": "Audio and Video Equipment Technician",
"representative_address": "432 Roslyn Inlet Suite 382\nPort Lynn, HI 22962-1350",
"user_id": 1,
"pensum_id": 1,
"preregister_specialization_id": 2,
"updated_at": "2020-04-03 14:11:11",
"created_at": "2020-04-03 14:11:11",
"institution_email": "micorreodeinstitucion@disegno.com"
}
HasMany payments
HasMany binnacles
HasMany inscriptions
HasMany absencesByDelay
(Cuando tiene una clase con retraso, se coloca en inasistencias por que 2 retrasos es 1 inasistencia)HasMany absencesByAttendance
(Cuando tiene una clase con asistencia=false
)HasOne latestInscription
BelongsTo pensum
BelongsToMany lessons
BelongsToMany courseSections
{primary} Al obtener un modelo con el metodo
show
oindex
se puede utilizar un query string para cargar las relaciones?with=relation
o?with=relationA,relationB
GET /students
admins
coordinadores
extends
Query FiltersFilter | Description |
---|---|
search=value |
Busca a traves de email , id_document , first_name , last_name |
gender=string |
Filtra por genero del estudiante. string === male o female |
birth_date=Y-m-d |
Filtra por fecha de nacimiento. Soporta operadores de busqueda > , < , >= , <= (se debe colocar al inicio del value) |
period=id |
Obtiene los estudiantes de un periodo |
specialization=id |
Obtiene los estudiantes de una especialidad |
semester=id |
Obtiene los estudiantes de un semestre |
section=id |
Obtiene los estudiantes de una seccion |
pensum=id |
Obtiene los estudiantes de un pensum |
deleted |
Incluye a los estudiantes con soft-delete |
only_deleted |
Obtiene solo los estudiantes con soft-delete |
{primary} No soporta
store
PATCH /students/{id}
admins
estudiante
relacionadouser_id
user_id
{
// actualizable por el estudiante
"first_name": "string",
"last_name": "string",
"address": "string",
"phone": "string",
"mobile_phone": "string",
// solo cuando el usuario logeado es admin
"id_document": "string",
"schedule_shift": "string|in:morning,afternoon,mixed",
"birth_place": "string",
"birth_date": "date_format:Y-m-d|before:today",
"educational_background": "string|in:medium,superior",
"educational_title": "string",
"educational_institution_name": "string",
"educational_graduation_date": "date_format:Y-m-d",
"educational_current_activity": "string",
"representative_email": "email",
"representative_name": "string",
"representative_profession": "string",
"representative_address": "string",
"social_networks.instagram": "nullable|string|max:128",
"social_networks.facebook": "nullable|string|max:128",
"social_networks.twitter": "nullable|string|max:128",
"institution_email": "email"
}
DELETE /students/{id}
admins
{warning} Aun no se toma en cuenta las prelaciones ni promedios
Caso 1
Estudiante en el primer semestre de básicoCuando se re-inscriba el estudiante sera pasado automaticamente a segundo de semestre de básico en el nuevo periodo.
Caso 2
Estudiante en el segundo semestre de básicoSe realizara el cambio de básico a la especialidad cambiando de 2do Semestre al 3er Semestre de la especialidad que se solicitara en el request.
{primary}
Caso 2
El pensum que se utilizara al momento de re-inscribirse sera el más actualizado que se encuentre por periodo y por especialidad.
Caso 3
Estudiante en el 3,4,5 semestre de la especialidadSera pasado automaticamente al siguiente semestre de la especialidad en el nuevo periodo
semetre
y pensum
POST /students/{id}/re-inscription
admins
estudiante
relacionado a ese estudianteTodos los atributos opcionales pero cuando se este pasado del semestre 2 de basico al 3 de la especialidad
specialization_id
sera requerido.
Si se actualiza email
, se deshabilitara el usuario hasta se confirme el nuevo correo, para confirmarlo se utiliza
el metodo de Confirmar Correo
{
"phone": "string",
"mobile_phone": "string",
"schedule_shift": "string",
"email": "string|email|unique:students|unique:users",
"payment_date": "required|date_format:Y-m-d",
"payment_receipt_number": "required|string",
"payment_amount": "required|integer",
"payment_type": "required|integer|in:1,2,3,4,5" // Tipo de pagos
}
POST /students/{id}/change-section
admins
{
"new_section_id": "required|integer|exists"
}
POST /students/{id}/specialization-history
admins
estudiante
relacionado200
{ // grouped by {period->year}{period->numer}{semester->number}
"202021": [ // CourseSections
{
"id": 10,
"final_delivery": true,
"final_delivery_value_percent": 30,
"final_delivery_merged_sections": false,
"course_id": 1,
"section_id": 2,
"teacher_id": null,
"period_id": 1,
"specialization_id": 1,
"semester_id": 1,
"created_at": "2020-08-19T00:47:17.000000Z",
"updated_at": "2020-08-19T00:47:17.000000Z",
"pivot": { // CourseSectionStudent
"student_id": 1,
"course_section_id": 10,
"created_at": "2020-08-19T03:28:39.000000Z",
"updated_at": "2020-08-20T22:37:32.000000Z",
"first_cut_note": 16,
"second_cut_note": 17,
"final_delivery_note": null,
"overwritten_final_note": null,
"cut_average_note": 16.5,
"cut_weight_note": null,
"final_delivery_weight_note": null,
"final_note": 16.5
},
"period": {
"id": 1,
"year": 2020,
"number": 2
},
"semester": {
"id": 1,
"number": 1
},
"course": {
// Course
},
"section": {
// Section
}
}
]
}
Lista los cursos del proximo semestre del estudiante.
GET /students/{id}/courses/next-semester
admins
estudiante
relacionado{
// Solo requerido si se esta pasando de basico 2 a specializad 3 (semestres)
"specialization_id": "nullable|integer|exists"
}
200
// Semester + Courses
GET /students/{id}/approves-current-semester
admins
estudiante
relacionado200
{
"current_period": {
// Period
},
"current_specialization": {
// Specialization
},
"current_semester": {
// Semester
},
"passed": true,
"is_basic": true,
"message": "", // for basic if failed
// "message": "basic_avg_lt_approval_minimum_avg", // for basic if failed
// "message": "student_has_failed_courses", // for specialization if failed
"details": [] // extra data to handle better the response
}
Inasistencias de un estudiante Update Pendiente
GET /students/{id}/absences
admins
coordinador
estudiante
relacionadoextends
QueryFiltersFilter | Description |
---|---|
period=id |
Por periodo (si no se especifica por defecto se utiliza el habilitado actual) |
lesson=id |
Por clase |
course=id |
Por materia |
section=id |
Por sección |
by_delay |
Por los que sean por retraso |
by_attendance |
Por los que sean por asistencia |
200
[
{
// Absence
}
]
Reporte de notas de las MateriaSeccion de un periodo, se debe especificar un corte
GET /students/{id}/reports/courses-notes
admins
coordinador
profesor
estudiante
relacionado{
"period_id": "integer|exists", // Por defecto el actual
"cut": "integer|in:1,2" // Por defecto 1
}
Reporte de notas finales de las MateriaSeccion de un periodo, con promedio de materias
GET /students/{id}/reports/courses-final-notes
Igual al anterior
{
"period_id": "integer|exists" // Por defecto el actual
}
Reporte de notas finales de las MateriaSeccion de un periodo, con historico de clases evaluadas
GET /students/{id}/reports/courses/lessons-notes-history
Igual al anterior
{
"period_id": "integer|exists" // Por defecto el actual
}
Reporte de notas generales de todos los periodos del estudiante, con promedio general
GET /students/{id}/reports/general-notes-history
Igual al anterior
Reporte de fecha de estudiante
GET /students/{id}/reports/profile-info
Igual al anterior