Files
old-psihologija/services/integration/bookingChangeLog.js

67 lines
2.0 KiB
JavaScript

'use strict';
const db = require('../../models/index');
const bulkWriteChanges = (changes) => {
const changeLogsForDB = [];
changes.forEach((change) => {
const { oldReservation, newReservation } = change;
const { reservationId, memberId, officeId, resourceId, start, end, canceled } = newReservation;
const logEntry = {
reservationId: oldReservation.reservationId || reservationId,
memberId: oldReservation.memberId || memberId,
officeId: oldReservation.officeId || officeId,
oldResourceId: oldReservation.resourceId || resourceId,
newResourceId: resourceId,
oldStart: oldReservation.start || start,
newStart: start,
oldEnd: oldReservation.end || end,
newEnd: end,
canceled,
};
if (!oldReservation.start && !oldReservation.end && !oldReservation.resourceId){
if (newReservation.canceled){
//new reservation created and canceled immediately
logEntry.oldResourceId = resourceId;
logEntry.oldStart = start;
logEntry.newEnd = end;
}else{
// new reservation
logEntry.oldResourceId = null;
logEntry.oldStart = null;
logEntry.oldEnd = null;
}
}
if (newReservation.canceled){
logEntry.newResourceId = null;
logEntry.newStart = null;
logEntry.newEnd = null;
}
changeLogsForDB.push(logEntry);
});
return db.bookingReservationChangeLog.bulkCreate(changeLogsForDB);
// console.log(changeLogsForDB);
// return new Promise((resolve) => resolve());
};
const getBookingChangeLogsForReservationId = (reservationId) => {
const filter = {
reservationId,
};
const order = [['createdAt', 'ASC']];
return db.bookingReservationChangeLog.findAll({where: filter, order});
};
module.exports = {
bulkWriteChanges,
getBookingChangeLogsForReservationId,
};