| 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 paymentsHasMany binnaclesHasMany inscriptionsHasMany 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 latestInscriptionBelongsTo pensumBelongsToMany lessonsBelongsToMany courseSections{primary} Al obtener un modelo con el metodo
showoindexse puede utilizar un query string para cargar las relaciones?with=relationo?with=relationA,relationB
GET /studentsadminscoordinadoresextends Query Filters| Filter | 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}adminsestudiante relacionadouser_iduser_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 2El 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 pensumPOST /students/{id}/re-inscriptionadminsestudiante 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-sectionadmins{
"new_section_id": "required|integer|exists"
}
POST /students/{id}/specialization-historyadminsestudiante 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-semesteradminsestudiante 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-semesteradminsestudiante 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}/absencesadminscoordinadorestudiante relacionadoextends QueryFilters| Filter | 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-notesadminscoordinadorprofesorestudiante 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-notesIgual 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-historyIgual 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-historyIgual al anterior
Reporte de fecha de estudiante
GET /students/{id}/reports/profile-infoIgual al anterior