Prelaciones (Prelations)


Routes

Method URI Action
GET prelations index
POST prelations bulk store
DELETE prelations bulk delete
GET courses/{id}/prelations index
GET pensums/{id}/prelations index

Model Attributes

{
  "id": 1,
  "originating_course_id": 1,       // Materia que origina la prelación
  "originating_semester_number": 1, // Semestre al que pertenece la materia que origina  en el pensum
  "target_course_id": 2,            // Materia afectada por la prelación, no puede ser el mismo que originating
  "target_semester_number": 2,      // Semestre al que pertenece la materia afectada en el pensum
  "period_id": 1,                   // ID del periodo objetivo de esta prelacion
  "specialization_id": 1,           // ID de especialidad, se toma del semestre
  "pensum_id": 1,                   // ID de pensum, se toma del semestre
  "updated_at": "2020-05-12 18:31:36",
  "created_at": "2020-05-12 18:31:36"
}

Index

Cuando el usuario autenticado es un coordinador, se obtienen las prelaciones de la especialidad que el coordine. NOTA: si el coordinador no tiene definido una especialidad se retornara un error.

Route GET prelations

Policies

  • admin
  • coordinador

Filters extends QueryFilters

Filter Description
originating_course=id Filtra por la materia que origina la prelación
originating_semester_number=int Filtra por la materia que origina la prelación
target_course=id Filtra por la materia objetivo de la prelación
target_semester_number=int Filtra por la materia objetivo de la prelación
period=id Filtra por periodo
specialization=id Filtra por especialidad. Si el usuario es coordinador esto no tendra efecto
pensum=id Filtra por pensum

Response 200

[
  {
    // Prelation
  }
]

Crear prelaciones

Para obtener de manera simple las materias para la prelacion utilice Obtener Materias Prelacionables

Consideraciones

  • La especialidad y pensum se asocia automaticamente desde el semester_id del request
  • La materia que origina debe estar asociada al semestre_id del request
  • Las materias objetivos deben estar associados a los semestres siguientes en el mismo pensum y en el mismo periodo del request
  • El pensum del semestre debe estar asociado al periodo del request
  • Al ser dependencia de periodo se requiere un periodo "habilitado" o que sea el siguiente a el

Route POST prelations

Policies

  • admin
  • coordinador que coordine la especialidad del semestre

Request Body

{
  "period_id": "required|integer|exists",   // Periodo objetivo
  "semester_id": "required|integer|exists", // Semestre de la materia de la ruta
  "target_courses_ids": "required|array",   // Semestres que seran afectados por la materia de la ruta
  "target_courses_ids.*": "integer" 
}

Response 204 No Content


Remover prelaciones

Mismas consideraciones que el attach

Policies

  • admin
  • coordinador que coordine la especialidad de la prelacion

Route DELETE prelations

Request Body

{
  "period_id": "required|integer|exists",   // Periodo objetivo
  "semester_id": "required|integer|exists", // Semestre de la materia de la ruta
  "target_courses_ids": "required|array",   // Semestres que seran removidos como afectados por la materia de la ruta
  "target_courses_ids.*": "integer" 
}

Response 204 No Content


Prelaciones de una materia

Cuando el usuario autenticado es un coordinador, se obtienen las prelaciones de la especialidad que el coordine. NOTA: si el coordinador no tiene definido una especialidad se retornara un error.

Route GET /courses/{id}/prelations

Policies

  • admin
  • coordinador

Filters extends QueryFilters

Antes de aplicar los filtros se revisa si en el request esta presenta los atributos

  • as_origin: Se obtendran las prelaciones donde la materia del request sea el origen (default)
  • as_target: Se obtendran las prelaciones donde la materia del request sea la afectada
Filter Description
originating_course=id Por la materia que origina la prelación (as_origin tiene prioridad)
originating_semester_number=int Por numero de semestre del origen (Combinar con pensum para que tenga sentido)
target_course=id Filtra por la materia objetivo de la prelación (as_target tiene prioridad)
target_semester_number=int Por numero de semestre del target (Combinar con pensum para que tenga sentido)
period=id por periodo
specialization=id por especialidad. Si el usuario es coordinador esto no tendra efecto
pensum=id por pensum

Response 200

[
  {
    // Prelation
  }
]

Prelaciones en un pensum

Cuando el usuario autenticado es un coordinador, se obtienen las prelaciones de la especialidad que el coordine. NOTA: si el coordinador no tiene definido una especialidad se retornara un error.

Route GET /pensums/{id}/prelations

Policies

  • admin
  • coordinador

Response 200

// Prototipo, se puede cambiar a como se necesite
{
  "semesters": {
    "3": { // Numero de semestre
      "Course - 1": [ // Codigo de materia que origina
        "Course - 2", // Codigo de Materias objetivo
        "Course - 3",
        "Course - 4"
      ]
    }
  }
}