| Method | URI | Action |
|---|---|---|
GET |
/teachers |
index |
GET |
/teachers/{id} |
show |
POST |
/teachers |
store |
PATCH |
/teachers/{id} |
update |
DELETE |
/teachers/{id} |
soft delete |
POST |
/teachers/{id}/assign-teachers |
relation |
GET |
/teachers/{id}/historic |
index |
{
"id": 1,
"id_document": "00000000",
"first_name": "teacher",
"last_name": "test",
"email": "teacher@idc.com",
"address": "83717 Jany Fall\nNorth Adityaberg, MD 18735-4415",
"phone": "+8507954705133",
"mobile_phone": "+5663221842210",
"profession": "test",
"profile_picture": null, // copia del profile_picture del User relacionado
"enabled": true,
"is_coordinator": false,
"created_at": "2020-03-10 13:28:15",
"updated_at": "2020-03-10 13:28:15",
"user_id": 1,
"supervisor_teacher_id": null // (int) id del coordinador que supervisa este profesor (si aplica)
"specialization_id": null // (int) id de la especialidad que coordinara un profesor-coordinador
}
BelongsTo supervisorBelongsTo coordinateSpecializationHasMany supervisingHasMany courseSectionsHasMany binnaclesHasMany schedules Through courseSectionsHasMany lessons Through courseSectionsBelongsToMany courses{primary} Al obtener un modelo con el metodo
showoindexse puede utilizar un query string especial para cargar las relaciones?with=relationo?with=relationA,relationB
{info} Si usuario del request es
coordinadorse obtendran solo los profesores que el supervisa
GET /teachersAdminsCoordinador que supervise al profesorProfesor relacionadoextends Query Filters| Filter | Description |
|---|---|
search=string |
Busca a traves de id_document, first_name, last_name, email, address, phone, mobile_phone, profession |
enabled=bool |
Obtener solo los profesores habilitados |
is_coordinator=bool |
Obtener solos los profesores que sean coordinadores |
supervisor_teacher=int |
Filtra por el atributo supervisor_teacher_id |
lessons_view_data |
Si este atributo esta presente en el query string al traer a los profesores se cargara toda la data necesaria en referencia a clases (lessons) |
200[
{
// Teacher
}
]
POST /teachersadmins{
"id_document": "required|string",
"first_name": "required|string",
"last_name": "required|string",
"email": "required|email|unique:users",
"address": "required|string",
"phone": "required|string",
"mobile_phone": "required|string",
"profession": "required|string",
"is_coordinator": "required|boolean",
"enabled": "boolean",
"profile_picture": "image",
// Este atributo solo es requerido y utilizado cuando `is_coordinator` es true
"specialization_id": "required|integer|exists:specializations,id"
}
201{
// Teacher
}
PATCH /teachers/{id}adminscoordinador que pueda actualizar y este supervisando al profesor especificadoprofesor relacionadouser_iduser_id {warning}
1.Si un profesor-coordinador es cambiado a ser solo profesorspecialization_idpasa hacernull
2.Solo se permite 1 coordinador por especialidad
{
"first_name": "string",
"last_name": "string",
"address": "string",
"phone": "string",
"mobile_phone": "string",
"profession": "string",
// Estos atributos tienen efecto solo cuando el usuario autenticado es admin o low_admin
"id_document": "string",
"enabled": "boolean",
"is_coordinator": "boolean",
// Este atributo solo es utilizado cuando el profesor es coordinador o pasa hacer coordinador (Si es coordinador luego de actualizar)
"specialization_id": "integer|exists:specializations,id"
}
200{
// Teacher
}
{primary} Tambien aplica soft-delete al user relacionado
DELETE /teachers/{id}adminsPermite que un coordinador supervise a profesores
{warning} Solo para profesores que sean
coordinadores, si el profesor especificado no es un coordinador se retornara un error
POST /teachers/{id}/assign-teachersPor muy confusa que se vea la ruta se recuerda que un profesor tambien es un coordinador
adminslow admins{primary} Si se envia coordinadores en el arreglo se filtraran, solo se tomaran los profesores que no sean coordinadores
{
"target_teachers_ids": "required|array",
"target_teachers_ids.*": "integer" // must be an existing teacher
}
GET /teachers/{id}/historicAdminsCoordinador que supervise al profesorProfesor relacionado{
"20201": { // By Period
"BASICA": [ // By Specialization
// Assigned CourseSections
]
}
}