'use strict'; const { fetchAllBookings, bulkWriteReservationsWithChangesTracking } = require('../officeRnD/bookings'); const { getIncidentsFromChanges, bulkWriteBookingChangeIncidents, getReservationsIncidentsForRemoval, deleteBookingChangeIncidents, } = require('./bookingChangeCharges'); const { bulkWriteChanges } = require('./bookingChangeLog'); const checkBookingChanges = () => { return new Promise((resolve, reject) => { fetchAllBookings() .then((reservations) => { bulkWriteReservationsWithChangesTracking(reservations) .then((changes) => { bulkWriteChanges(changes) .then(() => { getIncidentsFromChanges(changes) .then(({incidents, reservationsForAdditionalCheck}) => { bulkWriteBookingChangeIncidents(incidents) .then(() => { getReservationsIncidentsForRemoval(reservationsForAdditionalCheck) .then((incidentsToRemove) => { deleteBookingChangeIncidents(incidentsToRemove) .then(() => resolve(true)) .catch((error) => { console.log('Error deleting incidents : ', error); reject(error); }); }) .catch((error) => { console.log('Failed to fetch reservations possible incidents for removal', error); reject(error); }); }) .catch((error) => { console.log('error', error); reject(error); }); }) .catch((error) => { console.log('Error creating charges ', error); reject(error); }); }) .catch((error) => { console.log('Error bulk write booking reservation change log :', error); reject(error); }); }) .catch((error) => { console.log('Error bulk write booking reservations :', error); reject(error); }); }) .catch((error) => { console.log('Error fetching bookings from ORD ', error); reject(error); }); }); }; module.exports = { checkBookingChanges };