Secciones (Sections)


Routes

Method URI Action
GET /sections index
GET /sections/{id} show
POST /sections store
PATCH /sections/{id} update
DELETE /sections/{id} delete
GET /sections/{id}/courses get relation

Model Attributes

{
  "id": 1,
  "letter_code": "A",
  "males_limit": 9,       // Limite de hombres que se pueden asignar a la seccion
  "females_limit": 9,     // Limite de mujeres que se pueden asignar a la seccion
  "males_assigned": 0,    // Hombres actualmente asignados
  "females_assigned": 0,  // Mujeres actualmente asignados
  "filled": false,        // Determina si la seccion ya no tiene disponibilidad de hombre o mujeres
  "specialization_id":1,  // ID de especialidad, se toma del semestre
  "period_id":1,
  "semester_id":1,
  "created_at": "2020-03-10 13:28:15",
  "updated_at": "2020-03-10 13:28:15"
}

Relations

  • Tiene muchas materiasBelongsToMany courses
  • Tiene muchas materia_seccion HasMany courseSection
  • Tiene horarios HasMany schedules Through courseSection
  • Pertecene a una especialidad BelongsTo specialization
  • Pertecene a una periodo BelongsTo period
  • Pertecene a un semestre BelongsTo semesters

{primary} Al obtener un modelo con el metodo show o index se puede utilizar un query string para cargar las relaciones ?with=relation o ?with=relationA,relationB


Index

Route GET /sections

Policies

  • admin
  • coordinador

Filters extends Query Filters

Filter Description
search=string Busca a traves de letter_code
males_assigned=int Filtra por los hombres asignados. Soporta operadores de busqueda >, <, >=, <= (se debe colocar al inicio del value)
females_assigned=int Filtra por los mujeres asignadas. Soporta operadores de busqueda >, <, >=, <= (se debe colocar al inicio del value)
filled=bool Obtiene solo las secciones llenas (o no)
specialization=id Obtiene las que tengan la especialización
period=id Obtiene las que tengan el periodo
semester=id Obtiene las que tengan el semestres
course=id Obtiene las que tengan la materia

Response 200

[
  {
    // Section
  }
]

Store

Consideraciones

  • Cuando se crea una sección, por defecto males_assigned y females_assigned estaran en 0
  • Al crearse se le añaden todas las materias provenientes del semestre asignado
  • Cuando se crean las materias, se copia la configuración de "entregas finales" de la materia original

Route POST /sections

Policies

  • admin

Request Body

{
  "letter_code": "required|string",
  "males_limit": "required|integer",
  "females_limit": "required|integer",
  "period_id": "required|integer|exists",
  "semester_id": "required|integer|exists"
}

Response 201

{
  // Section
}

Update

Si se actualiza el limite y se determina que es la suma de los nuevos limites es menor que la suma de los hombres y mujeres asignados actualmente se marcará filled como true . En el caso contrario se marcara como false.

Route PATCH /sections/{id}

Policies

  • admin

Request Body

{
  "letter_code": "string",
  "males_limit": "integer",
  "females_limit": "integer"
}

Response 200

{
  // Section
}

Delete

Route DELETE /sections/{id}

Policies

  • admin

Response 204 No Content


Listar Materias

Route GET /sections/{id}/courses

Policies

  • admin
  • coordinador que coordine la especialidad de la seccion

Response 200

[
  {
    "id": 1,
    "code": "code",
    "title": "title",
    "scheduled_content": "Test description",
    "scheduled_content_resource": null,
    "credits": 10,
    "hours": 20,
    "priority": 1,
    "calculated_avg": null,
    "elective": false,
    "enabled": true,
    "final_delivery": false,
    "final_delivery_value_percent": null,
    "created_at": "2020-04-08 23:33:53",
    "updated_at": "2020-04-08 23:33:53",
    "pivot": {
      "section_id": 1,
      "course_id": 1,
      "teacher_id": null, // Profesor asignado a la materia_seccion
      "created_at": "2020-04-08 23:33:53",
      "updated_at": "2020-04-08 23:41:40"
    }
  }
]