Bitácoras (Binnacles)

Las bitácoras son registros que representan las incidencias cometidas por un estudiante, estas puedes ser reportadas por un profesor, coordinador o un administrador. El estudiante podra ser capaz de ver todas sus incidencias cometidas


Routes

Method URI Action
GET /binnacles index
GET /binnacles/{id} show
POST /binnacles store
PATCH /binnacles/{id} update
DELETE /binnacles/{id} delete
GET /students/{id}/binnacles index

Model Attributes

{primary} teacher_id puede venir null, en casos de que un admin cree una bitacora sin profesor

{
  "id": 1,
  "incidence_date": "2020-04-20",
  "description": "Descripción de la incidencia",
  "user_id": 1,            // Usuario que creo la bitacora
  "course_section_id": 1,  // ID de materia_seccion 
  "student_id": 1,         // Estudiante que cometio la incidencia
  "teacher_id": 1,         // Profesor de la incidencia (cuando un profesor crea la bitacora o un admin la crea con un profesor)
  "period_id": 1,          // ID del periodo, se toma de materia_seccion
  "created_at": "2020-04-20 23:42:30",
  "updated_at": "2020-04-20 23:42:30",
  "deleted_at": null
}

Relations

  • Pertenece a un creador (user) BelongsTo user
  • Pertenece a una materia_seccion BelongsTo courseSection
  • Puede pertenece a una profesor BelongsTo teacher
  • Pertenece a un estudiante BelongsTo student

Index

Dependiendo del usuario autenticado se obtendra diferente bitacoras

  1. Si es admin se obtendran por su user_id (Los que el creo)
  2. Si es profesor se obtendra por su user_id (Los que el creo)
  3. Si es estudiante se obtendra por su student_id (En donde es referenciado)

Route GET /binnacles

Policies

  • admin
  • profesor
  • coordinaor
  • estudiante

Filters extends Query Filters

Filter Description
search=value Busca a traves descripción
incidence_date=Y-m-d Filtra a traves de fecha de incidencia. Soporta operadores de busqueda >, <, >=, <= (se debe colocar al inicio del value)
course=id Obtiene las bitacoras de una materia
section=id Obtiene las bitacoras de una especialidad
period=id Obtiene las bitacoras de un periodo
teacher=id Obtiene las bitacoras de un profesor

Response 200

[
  {
    // Binnacle
  }
]

Show

Route GET /binnacles/{id}

Policies

  • admin
  • profesor que lo creo o relacionado
  • coordinador que lo creo o relacionado (un coordinador sigue siendo un profesor)
  • estudiante relacionado

Store

Route POST /binnacles

Policies

{primary} Si el usuario autenticado es profesor entonces teacher_id sera llenado automaticamente

  • admin
  • profesor
  • coordinador

Request Body

{info} El estudiante debe pertenecer a esa materia_seccion

{
  "incidence_date": "required|date_format:Y-m-d|before_or_equal:today",
  "description": "required|string",
  "course_section_id": "required|integer|exists",
  "student_id": "required|integer|exists",

  // Cuando el usuario autenticado es admin se podra utilizar este atributo de manera opcional 
  "teacher_id": "nullable|integer|exists"
}

Response 201

{
  // Binnacle
}

Update

Route PATCH /binnacles/{id}

Policies

  • admin que creo la bitacora
  • profesor que creo la bitacora

Request Body

{
  "incidence_date": "date_format:Y-m-d|before_or_equal:today",
  "description": "string",
  "student_id": "integer|exists"
}

Response 200


Soft Delete

Route DELETE /binnacles/{id}

Policies

  • admin que creo la bitacora
  • profesor que creo la bitacora

Response 204 No Content


Bitacoras de un estudiante

Route GET /students/{id}/binnacles

Policies

  • admins
  • coordinador
  • profesor
  • estudiante relacionado

Filters extends Binnacle Query Filters

Response 200