import Joi from "joi"; import moment from "moment"; const appointmentTimeSchema = Joi.object().keys({ date: Joi.date().required(), available: Joi.boolean().required() }); function isValidEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } function isDueDatePassed(dueDate) { return moment(dueDate, 'YYYY-MM-DD', true).isAfter(); } function isDatePassed(dateA, dateB) { const dueDateA = new Date(dateA); const dueDateB = new Date(dateB); return dueDateA < dueDateB; } function isValidAppointmentTimes(data) { return data.every(item => { try { if (!moment(item.date, 'YYYY-MM-DDTHH:mm', true).isValid() || appointmentTimeSchema.validate(item)['error']) { return false; } } catch (e) { return false; } return true; }); } function validateDates(res, startDate, endDate, dueDate) { if (isDatePassed(startDate, dueDate)) { res.status(400).json({ 'message': 'Due date is after start date' }); return false; } if (isDueDatePassed(dueDate)) { res.status(400).json({ 'message': 'Due date is in the past' }); return false; } if (isDatePassed(endDate, startDate)) { res.status(400).json({ 'message': 'End date is before start date' }); return false; } return true; } export {isValidEmail, isDueDatePassed, isDatePassed, validateDates, isValidAppointmentTimes, appointmentTimeSchema};