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
Al obtener un modelo con el metodoshow
oindex
se puede utilizar un query string especial para cargar las relaciones?with=relation
o?with=relationA,relationB
Si usuario del request escoordinador
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
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
}
Tambien aplica soft-delete al user relacionado
DELETE /teachers/{id}
admins
Permite que un coordinador supervise
a profesores
Solo para profesores que seancoordinadores
, 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
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
]
}
}