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 supervisor
BelongsTo coordinateSpecialization
HasMany supervising
HasMany courseSections
HasMany binnacles
HasMany schedules Through courseSections
HasMany lessons Through courseSections
BelongsToMany courses
{primary} Al obtener un modelo con el metodo
show
oindex
se puede utilizar un query string especial para cargar las relaciones?with=relation
o?with=relationA,relationB
{info} Si usuario del request es
coordinador
se obtendran solo los profesores que el supervisa
GET /teachers
Admins
Coordinador
que supervise al profesorProfesor
relacionadoextends
Query FiltersFilter | 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 /teachers
admins
{
"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}
admins
coordinador
que pueda actualizar y este supervisando al profesor especificadoprofesor
relacionadouser_id
user_id
{warning}
1.
Si un profesor-coordinador es cambiado a ser solo profesorspecialization_id
pasa 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}
admins
Permite 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-teachers
Por muy confusa que se vea la ruta se recuerda que un profesor tambien es un coordinador
admins
low 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}/historic
Admins
Coordinador
que supervise al profesorProfesor
relacionado{
"20201": { // By Period
"BASICA": [ // By Specialization
// Assigned CourseSections
]
}
}