Documentos (Documents)

Con una lista de documentos se crea una Biblioteca Virtual, en este modulo se le permite a los usuarios (menos estudiantes) subir documentos de distintos tipos con una imagen de cobertura opcional.


Routes

Method URI Action
GET /documents index
GET /documents/{id} show
POST /documents store
PATCH /documents/{id} update
DELETE /documents/{id} delete
POST /documents/{id}/download download

Model Attributes

{
  "id": 1,
  "title": "Titulo del Documento",
  "type": 1,                    // Tipo de Documento
  "resource_path": null,        // Ruta del documento subido
  "cover_picture_path": null,   // Ruta de la imagen de cobertura
  "updated_at": "2020-03-06 18:31:36",
  "created_at": "2020-03-06 18:31:36",
  "user_id": 1,              // Se utilizara el usuario que hizo el request como "uploader"
  "period_id": null,         // Opcional
  "specialization_id": null, // Opcional
  "semester_id": null,       // Opcional
  "course_id": null          // Opcional
}

Tipos de Documentos

Ref: https://gitlab.com/simgulary/idc/caracas-design-institute-api/-/issues/6

Type Value
Book 1
Paper 2
Thesis 3
Others 4

Relations

  • Subido por un usuario BelongsTo user
  • Puede pertenecer a un periodo BelongsTo period
  • Puede pertenece a una especialidad BelongsTo specialization
  • Puede pertenecer a un semestre BelongsTo semester
  • Puede pertenecer a una materiaBelongsTo course

Index

Route GET /documents

Policies

  • admins
  • coordinador
  • profesor
  • estudiante

Filters extends Query Filters

Filter Description
search=value Filtra a traves de title
type=int Por tipo
user=id Por usuario
period=id Por periodo
specialization=id Por especialidad
semester=id Por semestre
course=id Por materia

Response 200


Store

  • Si se incluye semestre y especialidad deben estar relacionados
  • Si se incluye semestre y materia deben estar relacionados

Route POST /documents

Policies

  • admins
  • coordinador
  • profesor

Request Body

{
  "title": "required|string",
  "type": "required|integer|in:1,2,3,4", // ver Tipos de Documentos
  "resource": "required|file",

  // No requeridos
  "cover_picture": "image",
  "period_id": "nullable|integer",
  "specialization_id": "nullable|integer",
  "semester_id": "nullable|integer",
  "course_id": "nullable|integer"
}

Response 201


Update

Route PATCH /documents/{id}

Policies

  • admins
  • coordinador
  • profesor que subio el documento

{info} Para subir archivos se requiere que el request sea POST y enviar _method = PATCH en el Form-Data

Request Body

{
  "title": "string",
  "type": "integer|in:1,2,3,4", // ver Tipos de Documentos
  "period_id": "nullable|integer",
  "specialization_id": "nullable|integer",
  "semester_id": "nullable|integer",
  "course_id": "nullable|integer",

  // Estos atributos solo estaran incluidos y utilizados en el request
  // solo si se aplican las condiciones necesarias
  "resource": "file",
  "cover_picture": "image"
}

Response 200


Delete

Tambien se eliminan los archivos asociados

Route DELETE /documents/{id}

Policies

  • admins
  • coordinador
  • profesor que subio el documento

Response 204 No Content


Descargar Archivo

El api manda un response tipo descarga al cliente con el archivo de resource_path


Se deberia limitar las descargas de estudiantes por tipo de archivo?

Route POST /documents/{id}/download

Policies

  • admins
  • coordinador
  • profesor
  • estudiante

Response 200

Contenido  Del Archivo