| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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};
|