Entregas Finales (Final Deliveries)


Routes

Method URI Action
GET /final-deliveries index
GET /final-deliveries/{id} show
POST /final-deliveries store
PATCH /final-deliveries/{id} update
DELETE /final-deliveries/{id} delete
GET /teachers/{id}/final-deliveries index
GET /students/{id}/final-deliveries index

Model Attributes

{
  "id": 1,
  "date": null,                // Fecha de la entrega
  "summary": null,             // Resumen textual de la entrega final
  "teacher_as_jury": false,    // Profesor es jurado, si al momento de crear se asigna el profesor de la materia_seccion como jurado
  "closed": false,             // Determina si esta entrega final esta cerrada o no
  "course_section_id": 1,      // ID de materia_seccion
  "classroom_id": 1,           // ID de aula
  "specialization_id": 1,      // ID de especialidad, se toma de materia_seccion
  "period_id": 1,              // ID de periodo, se toma de materia_seccion
  "updated_at": "2020-05-12 23:32:13",
  "created_at": "2020-05-12 23:32:13"
}

Entrega Final Cerrada

Una entrega final cerrada es aquella donde todos los jurados an evaluado a todos los estudiantes. En este estado no se puede actualizar, agregar/quitar jurados ni agregar/quitras horas.


Relations

  • Pertenece a una materia_seccion
  • Pertenece a una aula
  • Pertenece a una especialidad (igual a materia_seccion)
  • Pertenece a un periodo
  • Tiene Jurados BelongsToMany juries
  • Tiene Jurados con notas HasMany juriesAndNotes
  • Tiene Notas de estudiante BelongsToMany students
  • Tiene Horarios BelongsToMany classHours

Index

{info} Cuando el usuario autenticado es coordinador se obtendran solo las entregas de la especialidad que el coordine

Route GET /final-deliveries

Policies

  • admin
  • coordinador

Filters extends Query Filters

Filter Description
date=Y-m-d Obtiene las de una fecha especifica
teacher_as_jury=bool Obtiene las que tengan o no profesor como jurado
closed=bool Obtiene las que esten o no cerradas
classroom=id Obtiene las que esten un aula
specialization=id Obtiene las que esten en una especialidad
period=id Obtiene las que esten en un periodo
course=id Obtiene las que esten en una materia
section=id Obtiene las que esten en una seccion

Response 200

[
  {
    // FinalDelivery
  }
]

Store

Consideraciones

  • La materia_seccion debe tener asignado un profesor
  • La materia_seccion debe soportar entregas finales
  • La materia_seccion debe estar en un periodo habilitado

Route POST /final-deliveries

Policies

  • admin

Request Body

{
  "summary": "nullable|string",
  "teacher_as_jury": "boolean",
  "course_section_id": "required|integer|exists",
  "classroom_id": "required|integer|exists",
  "juries.*.teacher_id": "required|integer"  // Lista de teacher IDs que seran jurados en la entrega
}

Response 201


Update

Cada vez que se cambie de fecha o aula se validara que no choque con otras entregas finales en los siguientes casos

Caso A Misma fecha, misma aula, misma horas de clase. (de haber encontrado uno se lanzara un error)
Caso B Misma fecha, mismas hora de clase, mismo jurados. (de haber encontrado uno se lanzara un error)

Para los casos A y B implicitamente se incluye el periodo

Consideraciones

  • Si la materia soporta multi entrega se permitira que 2 o más secciones de la misma materia se presenten en en mismo dia/horas/aulas con los mismo jurados
  • La materia_seccion debe estar en un periodo habilitado

Route PATCH /final-deliveries/{id}

Policies

  • admin

Request Body

{
  "date": "date_format:Y-m-d",     // Cambiar de fecha
  "summary": "string",
  "classroom_id": "integer|exists" // Cambiar de aula
}

Response 200


Delete

Consideraciones

  • Se permite eliminar si la fecha del dia actual es menor a la fecha de la entrega
  • Se permite eliminar si no tiene fecha
  • No se permite eliminar si la entrega final esta cerrada
  • La materia_seccion debe estar en un periodo habilitado

Route DELETE /final-deliveries/{id}

Policies

  • admin

Response 204 No Content


Entregas de un profesor

Obtiene entregas finales siempre y cuando el profesor haya sido o es jurado de una.

Route GET /teachers/{id}/final-deliveries

Policies

  • admin
  • coordinador que supervise a ese profesor
  • profesor relacionado a ese profesor

Filters extends Index Filters

Response 200

[
  {
    // FinalDelivery
  }
]

Entregas de un estudiante

Route GET /students/{id}/final-deliveries

Policies

  • admin
  • coordinador
  • student relacionado a ese estudiante

Filters extends Index Filters

Response 200

[
  {
    // FinalDelivery + pivot con NOTA FINAL
  }
]