Global

Members

administrador

Usuario que administra el tablero

administrador

Validación del administrador del tablero. Debe ser una cadena que contenga un ObjectId válido y es obligatorio.

administrador

Validación del administrador del tablero. Debe ser una cadena que contenga un ObjectId válido y es obligatorio.

asignadoA

Usuario al que se le ha asignado la tarea

asignadoA

Validación del usuario asignado a la tarea Debe ser una cadena que contenga el ID del usuario. Puede ser nulo.

asignadoA

Validación opcional del ID del usuario asignado Puede ser nulo

colaboradores

Lista de usuarios que colaboran en el proyecto

colaboradores

Validación de los colaboradores del tablero. Debe ser una lista de cadenas que contengan ObjectIds válidos.

colaboradores

Validación de los colaboradores del tablero. Debe ser una lista de cadenas que contengan ObjectIds válidos.

comentarios

Lista de comentarios asociados a la tarea

comentarios

Validación de los comentarios de la tarea Debe ser una lista con al menos un comentario

comentarios

Validación opcional del listado de comentarios de la tarea

constant createTableroSchema :yup.ObjectSchema

Esquema de validación para la creación de un tablero.

descripcion

Descripción opcional sobre el tablero

descripcion

Detalle adicional sobre la tarea

descripcion

Validación de la descripción del tablero. Debe ser una cadena, sin espacios al inicio o final.

descripcion

Validación de la descripción de la tarea Debe ser una cadena, sin espacios al inicio o final, con al menos 3 caracteres.

descripcion

Validación de la descripción del tablero. Debe ser una cadena, sin espacios al inicio o final.

descripcion

Validación opcional de la descripción de la tarea Debe ser una cadena con al menos 3 caracteres si se proporciona

email

Dirección de correo electrónico única

email

Validación del correo electrónico del usuario. Debe ser una cadena válida en formato de correo electrónico.

email

Validación del correo electrónico. Debe ser un string requerido en formato de correo electrónico válido.

email

Validación opcional del correo electrónico. Debe ser una cadena válida en formato de correo electrónico si se proporciona.

estado

Estado actual de la tarea

estado

Validación del estado de la tarea Debe ser "pendiente", "en proceso", "en revisión" o "completada"

estado

Validación opcional del estado de la tarea Si se proporciona, debe ser "pendiente", "en proceso", "en revisión" o "completada"

fecha

Fecha en que se realizó el comentario

fechaFin

Fecha de finalización del proyecto

fechaFin

Validación de la fecha de finalización del proyecto. Debe ser una fecha válida o nula.

fechaFin

Validación de la fecha de finalización del proyecto. Debe ser una fecha válida o nula.

fechaInicio

Fecha de inicio del proyecto

fechaInicio

Validación de la fecha de inicio del proyecto. Debe ser una fecha válida o nula.

fechaInicio

Validación de la fecha de inicio del proyecto. Debe ser una fecha válida o nula.

fechaLimite

Fecha límite para completar la tarea

fechaLimite

Validación de la fecha límite de la tarea Debe ser posterior a la fecha actual

fechaLimite

Validación opcional de la fecha límite de la tarea Si se propociona, debe ser posterior a la fecha actual

fotoPerfil

URL de la foto de perfil almacenada en Cloudinary

fotoPerfil

Validación de la URL de la foto de perfil. Puede ser nula o una URL válida.

fotoPerfil

Validación opcional de la URL de la foto de perfil. Puede ser nula o una URL válida si se proporciona.

mensaje

Mensaje del comentario

nombre

Nombre del tablero o proyecto

nombre

Nombre descriptivo de la tarea

nombre

Nombre completo del usuario

nombre

Validación del nombre del tablero. Debe ser una cadena, sin espacios al inicio o final, y es obligatorio.

nombre

Validación del nombre de la tarea. Debe ser una cadena, sin espacios al inicio o final, con al menos 3 caracteres.

nombre

Validación del nombre del usuario. Debe ser una cadena, sin espacios al inicio o final, con al menos 3 caracteres.

nombre

Validación del nombre del tablero. Debe ser una cadena, sin espacios al inicio o final, y es obligatorio.

nombre

Validación opcional del nombre de la tarea Debe ser una cadena con al menos 3 caracteres si se proporciona

nombre

Validación opcional del nombre del usuario. Debe ser una cadena con al menos 3 caracteres si se proporciona.

password

Contraseña cifrada del usuario

password

Validación de la contraseña del usuario. Debe tener al menos 8 caracteres, incluir una letra mayúscula y un número.

password

Validación de la contraseña. Debe ser un string requerido con al menos 6 caracteres.

password

Validación opcional de la contraseña. Debe tener al menos 8 caracteres, incluir una letra mayúscula y un número si se proporciona.

prioridad

Nivel de importancia de la tarea

prioridad

Validación de la prioridad de la tarea Debe ser "baja", "media" o "alta"

prioridad

Validación opcional de la prioridad de la tarea Si se proporciona, debe ser "baja", "media" o "alta"

rol

Rol del usuario: administrador o usuario

rol

Validación del rol del usuario. Debe ser "administrador" o "usuario".

rol

Validación opcional del rol del usuario. Si se proporciona, debe ser "administrador" o "usuario".

constant schema :yup.ObjectSchema

Esquema de validación para la creación de tareas

constant schema :yup.ObjectSchema

Esquema de validación para la creación de usuarios.

constant schema :yup.ObjectSchema

Esquema de validación para el inicio de sesión de usuarios.

constant schema :yup.ObjectSchema

Esquema de validación para la actualización de tareas

constant schema :yup.ObjectSchema

Esquema de validación para la actualización de usuarios.

tablero

Tablero al que pertenece la tarea

constant tableroSchema

Esquema de Tablero para la base de datos. Representa un proyecto colaborativo en el sistema.

Campos:

  • nombre: Nombre del tablero o proyecto.
  • descripcion: Descripción opcional sobre el tablero.
  • fechaInicio: Fecha de inicio del proyecto.
  • fechaFin: Fecha de finalización del proyecto.
  • administrador: Usuario que administra el tablero.
  • colaboradores: Lista de usuarios que colaboran en el proyecto.

Timestamps:

  • created_at: Fecha de creación del registro.
  • updated_at: Fecha de última actualización del registro.

constant tareaSchema

Esquema de Tarea para la base de datos. Representa las tareas asociadas a un tablero en el sistema.

Campos:

  • nombre: Nombre descriptivo de la tarea.
  • descripcion: Detalle adicional sobre la tarea.
  • prioridad: Nivel de importancia de la tarea ('baja', 'media', 'alta').
  • estado: Estado actual de la tarea ('pendiente', 'en proceso', 'en revisión', 'completada').
  • fechaLimite: Fecha límite para completar la tarea.
  • asignadoA: Usuario al que se le ha asignado la tarea.
  • comentarios: Lista de comentarios asociados a la tarea.
  • tablero: Tablero al que pertenece la tarea.

Timestamps:

  • created_at: Fecha de creación del registro.
  • updated_at: Fecha de última actualización del registro.

constant updateTableroSchema :yup.ObjectSchema

Esquema de validación para la actualización de un tablero.

constant updateTareaValidations

Middleware para validar los datos de actualización de tareas

usuario

Usuario que realizó el comentario

constant usuarioSchema

Esquema de Usuario para la base de datos. Representa la información básica de los usuarios en el sistema.

Campos:

  • nombre: Nombre completo del usuario.
  • email: Dirección de correo electrónico única y validada.
  • password: Contraseña del usuario almacenada en formato cifrado.
  • rol: Rol del usuario, puede ser 'administrador' o 'usuario'.
  • fotoPerfil: URL de la foto de perfil del usuario, almacenada en Cloudinary.

Timestamps:

  • created_at: Fecha de creación del registro.
  • updated_at: Fecha de última actualización del registro.

Methods

async addCollaborator(tableroId, userId) → {Promise.<(Object|null)>}

Agrega un colaborador a un tablero específico.

Parameters:
Name Type Description
tableroId string

El ID del tablero al que se añadirá el colaborador.

userId string

El ID del usuario que se añadirá como colaborador.

Returns:
Promise.<(Object|null)> -

El tablero actualizado con el nuevo colaborador, o null si no se encuentra el tablero.

async create(data) → {Promise.<Object>}

Crea un nuevo tablero en la base de datos.

Parameters:
Name Type Description
data Object

Datos del tablero a crear.

Returns:
Promise.<Object> -

El tablero creado.

async create(data) → {Promise.<Object>}

Crea una nueva tarea en la base de datos

Parameters:
Name Type Description
data Object

Datos de la tarea a crear

Returns:
Promise.<Object> -

La tarea creada

async create(data) → {Promise.<Object>}

Crea un nuevo usuario en la base de datos y en Firebase Authentication. Encripta la contraseña del usuario antes de guardarla y opcionalmente sube la imagen de perfil.

Parameters:
Name Type Description
data Object

Datos del usuario a crear.

Properties
Name Type Attributes Description
password string

Contraseña del usuario que será encriptada.

fotoPerfil Object <optional>

Ruta de la imagen de perfil para subir (opcional).

Returns:
Promise.<Object> -

El usuario creado.

async createTableroValidations(req, res, next)

Middleware para validar la creación de tableros.

Parameters:
Name Type Description
req Object

Objeto de solicitud HTTP.

res Object

Objeto de respuesta HTTP.

next function

Función para pasar al siguiente middleware.

Throws:

Si la validación falla, se pasa el error al siguiente middleware.

Type
Error

async createTareaValidations(req, res, next)

Moddleware para validar la creación de tareas.

Parameters:
Name Type Description
req Object

Objeto de la solicitud HTTP

res Object

Objeto de respuesta HTTP

next function

Función para pasar al siguiente middleware

Throws:

Si la validación falla, se pasa el error al siguiente middleware

Type
Error

customErrorHandler(err, req, res, next)

Middleware para manejar errores personalizados y globales en la aplicación.

Este middleware captura y gestiona diferentes tipos de errores, devolviendo respuestas específicas según el tipo de error.

Parameters:
Name Type Description
err Error

Objeto de error capturado.

req Object

Objeto de solicitud HTTP.

res Object

Objeto de respuesta HTTP.

next function

Función para pasar al siguiente middleware o controlador.

async getByAdministrator(administratorId) → {Promise.<(Array.<Object>|null)>}

Obtiene un tablero por su administrador.

Parameters:
Name Type Description
administratorId string

Id del usuario administrador.

Returns:
Promise.<(Array.<Object>|null)> -

Lista de tableros donde el usuario es administrador o null si no existe.

async getByCollaborator(userId) → {Promise.<Array.<Object>>}

Obtiene los colaboradores de todos los tableros en los que un usuario es colaborador.

Parameters:
Name Type Description
userId string

Id del usuario colaborador.

Returns:
Promise.<Array.<Object>> -

Lista de tableros del colaborador.

async getOne(id) → {Promise.<(Object|null)>}

Obtiene un tablero por su ID.

Parameters:
Name Type Description
id string

ID del tablero.

Returns:
Promise.<(Object|null)> -

El tablero encontrado o null si no existe.

async getOne(id) → {Promise.<(Object|null)>}

Obtiene una tarea por su ID.

Parameters:
Name Type Description
id string

ID único de la tarea.

Returns:
Promise.<(Object|null)> -

La tarea encontrada o null si no existe.

async getOne(id) → {Promise.<(Object|null)>}

Obtiene un usuario por su ID.

Parameters:
Name Type Description
id string

ID único del usuario.

Returns:
Promise.<(Object|null)> -

El usuario encontrado o null si no existe.

async getOneByEmailAndPassword(email, password) → {Promise.<(Object|null)>}

Obtiene un usuario por su correo electrónico y contraseña.

Parameters:
Name Type Description
email string

Correo electrónico del usuario.

password string

Contraseña del usuario.

Returns:
Promise.<(Object|null)> -

El usuario encontrado o null si no existe.

isProyectoActual(fechaActual, fechaFin) → {boolean}

Determina si un proyecto es actual basado en la fecha actual y su fecha de fin.

Parameters:
Name Type Description
fechaActual Date

Fecha actual.

fechaFin Date

Fecha de fin del proyecto.

Returns:
boolean -

True si es un proyecto actual, false si está finalizado.

isValidDate(fecha) → {boolean}

Validación de la fecha

Parameters:
Name Type Description
fecha String

Fecha para comprobar

Returns:
boolean -

True si es una fecha válida o False si no es válida

isValidToken(token, invalidTokens) → {boolean}

Verifica si un token es válido y no está en la lista de tokens inválidos.

Parameters:
Name Type Description
token string

El token a verificar.

invalidTokens Set.<string>

Conjunto de tokens inválidos.

Returns:
boolean -
  • true si el token es válido, false en caso contrario.

async list() → {Promise.<Array.<Object>>}

Lista todos los tableros ordenados por fecha de creación de forma descendente.

Returns:
Promise.<Array.<Object>> -

Lista de tableros.

async list() → {Promise.<Array.<Object>>}

Lista todas las tereas ordenadas por nombre de forma descendente

Returns:
Promise.<Array.<Object>> -

Lista de tareas ordenada.

async list() → {Promise.<Array.<Object>>}

Lista todos los usuarios ordenados por fecha de creación de forma descendente.

Returns:
Promise.<Array.<Object>> -

Lista de usuarios ordenada.

async listByLimitDate(tablero, date) → {Promise.<Array.<Object>>}

Lista las tareas de un tablero filtradas por una fecha límite

Parameters:
Name Type Description
tablero string

Identificador del tablero

date date

Fecha límite para filtrar

Returns:
Promise.<Array.<Object>> -

Lista de tareas de un tablero con una fecha límite menor a la fecha pasada

async listByPriority(tablero, priority) → {Promise.<Array.<Object>>}

Lista las tareas de un tablero filtradas por el valor de la prioridad

Parameters:
Name Type Description
tablero string

Identificador del tablero

priority string

Prioridad para filtrar

Returns:
Promise.<Array.<Object>> -

Lista de tareas de un tablero con una prioridad determinada

async listByState(tablero, state) → {Promise.<Array.<Object>>}

Lista las tareas de un tablero filtradas por el valor del estado

Parameters:
Name Type Description
tablero string

Identificador del tablero

state string

Estado para filtrar

Returns:
Promise.<Array.<Object>> -

Lista de tareas de un tablero con un estado determinado

async listByUserAsigned(tablero, id) → {Promise.<Array.<Object>>}

Lista las tareas de un tablero filtradas por el usuario asignado

Parameters:
Name Type Description
tablero string

Identificador del tablero

id string

Usuario asignado para filtrar

Returns:
Promise.<Array.<Object>> -

Lista de tareas de un tablero con un usuario asignado

async loginUsuarioValidations(req, res, next)

Middleware para validar los datos del inicio de sesión de usuarios.

Parameters:
Name Type Description
req Object

Objeto de solicitud HTTP.

res Object

Objeto de respuesta HTTP.

next function

Función para pasar al siguiente middleware.

Throws:

Si la validación falla, se pasa el error al siguiente middleware.

Type
Error

pathNotFoundHandler(req, res, next)

Middleware para manejar rutas no encontradas.

Este middleware se ejecuta cuando una solicitud no coincide con ninguna de las rutas definidas. Devuelve un error 404 con un mensaje indicando que la URL no fue encontrada.

Parameters:
Name Type Description
req Object

Objeto de solicitud HTTP.

res Object

Objeto de respuesta HTTP.

next function

Función para pasar al siguiente middleware o controlador de errores.

async remove(id) → {Promise.<(Object|null)>}

Elimina un tablero por su ID.

Parameters:
Name Type Description
id string

ID del tablero a eliminar.

Returns:
Promise.<(Object|null)> -

El tablero eliminado o null si no existe.

async remove(id) → {Promise.<(Object|null)>}

Elimina una tarea por su ID.

Parameters:
Name Type Description
id string

ID único de la tarea a eliminar.

Returns:
Promise.<(Object|null)> -

La tarea eliminada o null si no existe.

async remove(id) → {Promise.<(Object|null)>}

Elimina un usuario por su ID.

Parameters:
Name Type Description
id string

ID único del usuario a eliminar.

Returns:
Promise.<(Object|null)> -

El usuario eliminado o null si no existe.

async removeCollaborator(tableroId, userId) → {Promise.<(Object|null)>}

Elimina un colaborador de un tablero específico.

Parameters:
Name Type Description
tableroId string

El ID del tablero del que se eliminará el colaborador.

userId string

El ID del usuario que se eliminará como colaborador.

Returns:
Promise.<(Object|null)> -

El tablero actualizado sin el colaborador eliminado, o null si no se encuentra el tablero.

async update(id, data) → {Promise.<(Object|null)>}

Actualiza un tablero por su ID con los datos proporcionados.

Parameters:
Name Type Description
id string

ID del tablero a actualizar.

data Object

Datos a actualizar.

Returns:
Promise.<(Object|null)> -

El tablero actualizado o null si no existe.

async update(id, data) → {Promise.<(Object|null)>}

Actualiza la tarea por su ID con los datos proporcionados.

Parameters:
Name Type Description
id string

ID único de la tarea a actualizar.

data Object

Datos de la tarea a actualizar.

Returns:
Promise.<(Object|null)> -

La tarea actualizada o null si no existe.

async update(id, data) → {Promise.<(Object|null)>}

Actualiza un usuario por su ID con los datos proporcionados en la base de datos y en Firebase Authentication. Si se incluye una nueva contraseña, esta será encriptada. Si se incluye una nueva imagen de perfil, será subida antes de actualizar.

Parameters:
Name Type Description
id string

ID único del usuario a actualizar.

data Object

Datos del usuario a actualizar.

Properties
Name Type Attributes Description
password string <optional>

Nueva contraseña del usuario (opcional).

fotoPerfil Object <optional>

Nueva imagen de perfil para subir (opcional).

Returns:
Promise.<(Object|null)> -

El usuario actualizado o null si no existe.

async updateTableroValidations(req, res, next)

Middleware para validar la actualización de tableros.

Parameters:
Name Type Description
req Object

Objeto de solicitud HTTP.

res Object

Objeto de respuesta HTTP.

next function

Función para pasar al siguiente middleware.

Throws:

Si la validación falla, se pasa el error al siguiente middleware.

Type
Error

async uploadImage(imagePath) → {Promise.<(string|null)>}

Sube una imagen a Cloudinary y devuelve la URL segura de la imagen.

Parameters:
Name Type Description
imagePath string

Ruta local o URL de la imagen que se desea subir.

Throws:

Registra el error en la consola si la subida falla.

Type
Error
Returns:
Promise.<(string|null)> -

URL segura de la imagen subida o null si ocurre un error.

Example
import { uploadImage } from './uploadImageToCloudinary.js';

const imageUrl = await uploadImage('./images/avatar.jpg');
console.log(imageUrl); // https://res.cloudinary.com/<cloud_name>/users/avatar.jpg

validateAsignadoTareaFormat(paramNameopt) → {function}

Middleware para validar el formato de un ObjectId de Mongoose.

Parameters:
Name Type Attributes Default Description
paramName string <optional>
'asignado'

Nombre del parámetro en los parámetros del body que contiene el ObjectId.

Returns:
function -

Middleware de validación.

validateEstadoTareaFormat(paramNameopt) → {function}

Middleware para validar el formato del estadp

Parameters:
Name Type Attributes Default Description
paramName string <optional>
'estado'

Nombre del parámetro en los parámetros de la ruta que contiene el estado

Returns:
function -

Middleware de validación

validateFechaTareaFormat(paramNameopt) → {function}

Middleware para validar el formato de la fecha

Parameters:
Name Type Attributes Default Description
paramName string <optional>
'fecha'

Nombre del parámetro en los parámetros de la ruta que contiene la fecha

Returns:
function -

Middleware de validación

validateObjectIdFormat(paramNameopt) → {function}

Middleware para validar el formato de un ObjectId de Mongoose.

Parameters:
Name Type Attributes Default Description
paramName string <optional>
'id'

Nombre del parámetro en los parámetros de la ruta que contiene el ObjectId.

Returns:
function -

Middleware de validación.

validatePrioridadTareaFormat(paramNameopt) → {function}

Middleware para validar el formato de la prioridad

Parameters:
Name Type Attributes Default Description
paramName string <optional>
'prioridad'

Nombre del parámetro en los parámetros de la ruta que contiene la prioridad

Returns:
function -

Middleware de validación