Horarios (Schedules)


Routes

Method URI Action
GET /schedules index
GET /schedules/{id} show
POST /schedules store
PATCH /schedules/{id} update
DELETE /schedules/{id} delete
POST /schedules/bulk-store store
GET /classrooms/{id}/schedules index
GET /teachers/{id}/schedules index
GET /sections/{id}/schedules index

Model Attributes

{
  "id": 1,
  "day": 1,                  // 1 al 7, reprensenta un dia de la semana. 1 Seria lunes
  "course_section_id": 1,    // ID de materia_seccion
  "specialization_id": 1,    // ID de especialidad, este se auto asigna desde course_section (no modificable)
  "semester_id": 1,          // ID de semestre, este se auto asigna desde course_section (no modificable)
  "classroom_id": 1,         // ID de Aula
  "class_hour_id": 1,        // ID de Horario, debe ser del mismo periodo que materia_seccion
  "period_id": 3,            // ID de Periodo, se toma de materia_seccion
  "updated_at": "2020-05-01 22:55:34",
  "created_at": "2020-05-01 22:55:34"
}

Relations

  • Pertenece a una Materia_Seccion BelongsTo courseSection
  • Pertenece a una Especialidad BelongsTo specialization
  • Pertenece a un semestre BelongsTo semester
  • Pertenece a una Aula BelongsTo classroom
  • Pertenece a una Hora de Clase BelongsTo classHour
  • Pertenece a una periodo BelongsTo period

{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 /schedules

Policies

  • admin
  • coordinadores

Filters extends Query Filters

Filter Description
day=int Obtiene los horarios de un dia en especifico. >, <, >=, <= (se debe colocar al inicio del value)
course=id Obtiene los horarios de una materia
section=id Obtiene los horarios de una sección
specialization=id Obtiene los horarios de una specialidad
semester=id Obtiene los horarios de un semestre
classroom=id Obtiene los horarios de una aula
class_hour=id Obtiene los horarios de una hora de clase
period=id Obtiene los horarios de un periodo

Response 200

[
  {
    // Schedule
  }
]

Store

Consideraciones

  1. No se puede crear un horario en un mismo dia, en una misma aula, en la misma hora de clase (por periodo)
  2. Una materia_seccion no puede ser asignado a otra aula en el mismo dia, en la misma hora de clase (por periodo)
  3. Las horas de clase deben pertencer al mismo periodo que materia_seccion

Route POST /schedules

Policies

  • admin
  • coordinador que coordine la especialidad de la materia_seccion especificada

Request Body

{
  "day": "required|integer|in:1,2,3,4,5,6,7",
  "course_section_id": "required|integer|exists:course_section,id",
  "classroom_id": "required|integer|exists:classrooms,id",
  "class_hour_id": "required|integer|exists:class_hours,id"
}

Response 201

{
  // Schedule
}

Update

Route PATCH /schedules/{id}

Policies

  • admin
  • coordinador que coordine la especialidad de la materia_seccion especificada

Request Body

{
  "day": "integer|in:1,2,3,4,5,6,7",
  "classroom_id": "integer|exists:classrooms,id",
  "class_hour_id": "integer|exists:class_hours,id"
}

Response 200

{
  // Schedule
}

Delete

Route DELETE /schedules/{id}

Policies

  • admin
  • coordinador que coordine la especialidad de la materia_seccion especificada

Response 204 No Content


Bulk Store

Consideraciones

  1. No se puede crear un horario en un mismo dia, en una misma aula, en la misma hora de clase (por periodo)
  2. Una materia_seccion no puede ser asignado a otra aula en el mismo dia, en la misma hora de clase (por periodo)
  3. day no puede estar duplicado
  4. Las horas de clase deben pertencer al mismo periodo que materia_seccion

Route POST /schedules/bulk-store

Policies

  • admin
  • coordinador que coordine la especialidad de la materia_seccion especificada

Request Body

{
  "course_section_id": "required|integer|exists:course_section,id",
  "classroom_id": "required|integer|exists:classrooms,id",
  "schedules": [              // required|array|min:1
    {
      "day": 1,               // required|integer|in:1,2,3,4,5,6,7
      "class_hours_ids": [    // required|array|min:1
        1                     // required|integer
      ] 
    }
  ]
}

Response 201

[
  {
    // Schedule
  }
]

Horarios de una aula

Route GET /classrooms/{id}/schedules

Policies

  • admin

Filters extends Schedules Query Filters

Response 200

[
  {
    // Schedule
  }
]

Horarios de un profesor

Route GET /teachers/{id}/schedules

Policies

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

Filters extends Schedules QueryFilters

Response 200


Horarios de un estudiante

Route GET /students/{id}/schedules

Policies

  • admins
  • coordinador

Filters extends Schedules QueryFilters

Response 200


Horarios de un seccion

Route GET /sections/{id}/schedules

Policies

  • admins
  • coordinador que coordine la especialidad de esa sección

Filters extends Schedules Query Filters

Response 200