// dtos/CreateMeetingRequestDTO.js const Joi = require('joi'); class CreateMeetingRequestDTO { constructor({ title, description, start_time, end_time, location, deadline, type, created_by }) { this.title = title; this.description = description; this.start_time = start_time; this.end_time = end_time; this.location = location; this.deadline = deadline; this.type = type; this.created_by = created_by; } validate() { const schema = Joi.object({ title: Joi.string().min(1).max(255).required(), description: Joi.string().allow('', null).optional(), start_time: Joi.date().iso().required(), end_time: Joi.date().iso().greater(Joi.ref('start_time')).required(), location: Joi.string().allow('', null).optional(), deadline: Joi.date().iso().less(Joi.ref('start_time')).optional(), type: Joi.string().valid('OPEN', 'CLOSE').required(), created_by: Joi.number().integer().positive().required() }); const { error } = schema.validate(this, { abortEarly: false }); if (error) { const errorMessages = error.details.map(detail => detail.message).join(', '); throw new Error(`Validation error: ${errorMessages}`); } return true; } } module.exports = CreateMeetingRequestDTO;