Files
old-crm-integration/services/integration/bookings.js
2019-08-16 05:16:27 +02:00

95 lines
2.2 KiB
JavaScript

'use strict';
const Op = require('sequelize').Op;
const db = require('../../models/index');
const moment = require('moment-timezone');
const { DEFAULT_DATE_FORMAT, UI_TIMEZONE } = require('../../constants/constants');
const getActiveBookingsForMembersInDateRange = (dateRange, memberIds) => {
const startDate = moment.tz(dateRange.startDate, DEFAULT_DATE_FORMAT, UI_TIMEZONE).startOf('day');
const endDate = moment.tz(dateRange.endDate, DEFAULT_DATE_FORMAT, UI_TIMEZONE).endOf('day');
const attributes = [
'id',
'reservationId',
'memberId',
'officeId',
'resourceId',
'start',
'end',
'timezone',
'canceled',
'hourlyRate'
];
const filters = {
canceled: false,
};
if (startDate && endDate) {
filters.start = {
[Op.gte]: startDate.toISOString()
};
filters.end = {
[Op.lte]: endDate.toISOString(),
};
}
if (memberIds.length > 0){
filters.memberId = {
[Op.in]: memberIds
};
}
return db.bookingReservation.findAll({
attributes,
where: filters,
});
};
const getAllBookingsForMembersInDateRange = (dateRange, memberIds) => {
const startDate = moment.tz(dateRange.startDate, DEFAULT_DATE_FORMAT, UI_TIMEZONE).startOf('day');
const endDate = moment.tz(dateRange.endDate, DEFAULT_DATE_FORMAT, UI_TIMEZONE).endOf('day');
const attributes = [
'id',
'reservationId',
'memberId',
'officeId',
'resourceId',
'start',
'end',
'timezone',
'canceled',
'hourlyRate'
];
const filters = {};
if (startDate && endDate) {
filters.start = {
[Op.gte]: startDate.toISOString()
};
filters.end = {
[Op.lte]: endDate.toISOString(),
};
}
if (memberIds && Array.isArray(memberIds) && memberIds.length > 0){
filters.memberId = {
[Op.in]: memberIds
};
}
return db.bookingReservation.findAll({
attributes,
where: filters,
});
};
module.exports = {
getActiveBookingsForMembersInDateRange,
getAllBookingsForMembersInDateRange,
};