Semestres (Semesters)


Routes

Method URI Action
GET /semesters index
GET /semesters/{id} show
POST /semesters store
PATCH /semesters/{id} update
DELETE /semesters/{id} delete
GET /semesters/{id}/courses get relation
PUT /periods/{id}/pensums/{id}/semesters/{id}/courses Actualizar materias de un semestre

Model Attributes

{
  "id": 1,
  "number": 1,
  "code": "BAS1", // this is optional
  "pensum_id" : 1,
  "specialization_id" : 1,  // se asigna desde pensum
  "created_at": "2020-04-06 17:28:15",
  "updated_at": "2020-04-06 17:28:15"
}

Relations


Index

Route GET /semesters

Policies

  • admin

Filters extends QueryFilters

Filter Description
search=string Busca a traves de code
number=int Filtra por el numero de semestre. Soporta operadores de busqueda >, <, >=, <= (se debe colocar al inicio del value)
pensum=id Por pensum
specialization=id Por especialidad
period=id Por periodo (a traves de su pensum)

Response 200

[
  {
    // Semester
  }
]

Store

Route POST /semesters

Policies

  • admin

{info} No se puede crear 2 veces el mismo semester.number

Request Body

{
  "number": "required|integer|min:1|max:15",
  "code": "string", // this is optional
  "pensum_id" : "required|integer|exists:pensums,id"
}

Response 201

{
  // Semester
}

Update

Route PATCH /semesters/{id}

Policies

  • admin

Request Body

{
  "code": "string"
}

Response 200

{
  // Model Attributes
}

Delete

Un semestre con secciones no puede eliminarse

Route DELETE /semesters/{id}

Policies

  • admin

Response 204 No Content


Listar Materias

Route GET /semesters/{id}/courses

Policies

  • admin

Response 200

[
  {
    // Course
  }
]

Agregar o Eliminar Materias

Esta accion sincroniza las materias de el semestre.


Para eliminar una materia si ya tiene

Se envian todos los courses_ids que ya tenia menos el que se quiere eliminar


Para agregar una materia si ya tiene

Se envian todos los courses_ids que ya tenia más el que se quiere agregar (este metodo tambien sirve si no tiene materias)

Route PUT /periods/{id}/pensums/{id}/semesters/{id}/courses

Policies

  • admin

Request Body

{info} Se filtran los cursos duplicados, si se envian [1, 2 ,1 ,3] solo se utilizará [1, 2 ,3]

 // courses ids

[
  1,
  2,
  3
]

Response 200