From 8ac69f1497ef73915c867d44d31c8c8ae331e287 Mon Sep 17 00:00:00 2001 From: Bilal Catic Date: Mon, 7 Oct 2019 15:16:09 +0200 Subject: [PATCH] delete reservations removed from ORD --- services/integration/bookings.js | 17 +++++++++++++++++ services/integration/checkBookingChange.js | 14 ++++++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/services/integration/bookings.js b/services/integration/bookings.js index e672a73..ea0ba6a 100644 --- a/services/integration/bookings.js +++ b/services/integration/bookings.js @@ -88,7 +88,24 @@ const getAllBookingsForMembersInDateRange = (dateRange, memberIds) => { }); }; +const deleteBookingsRemovedFromORD = (reservationIds) => { + if (!Array.isArray(reservationIds)){ + return 0; + } + + const filter = { + reservationId: { + [Op.notIn]: reservationIds + } + }; + + return db.bookingReservation.destroy({ + where: filter + }); +}; + module.exports = { getActiveBookingsForMembersInDateRange, getAllBookingsForMembersInDateRange, + deleteBookingsRemovedFromORD }; diff --git a/services/integration/checkBookingChange.js b/services/integration/checkBookingChange.js index e34c350..1bd0395 100644 --- a/services/integration/checkBookingChange.js +++ b/services/integration/checkBookingChange.js @@ -3,6 +3,7 @@ const { fetchAllBookings, bulkWriteReservationsWithChangesTracking } = require('../officeRnD/bookings'); const { fetchResources } = require('../officeRnD/resources'); const { fetchRates } = require('../officeRnD/rates'); +const { deleteBookingsRemovedFromORD } = require('./bookings'); const { officeRnDAPIErrors } = require('../../constants/constants'); const { getIncidentsFromChanges, @@ -34,8 +35,17 @@ const checkBookingChanges = () => { resourcesMap[resourceId] = resource; }); - bulkWriteReservationsWithChangesTracking(reservations, resourcesMap) - .then((changes) => { + const reservationsInORD = []; + reservations.forEach(reservation => { + const { reservationId } = reservation; + reservationsInORD.push(reservationId); + }); + + const asyncActions = [deleteBookingsRemovedFromORD(reservationsInORD), bulkWriteReservationsWithChangesTracking(reservations, resourcesMap)]; + + Promise.all(asyncActions) + .then((asyncActionResults) => { + const changes = asyncActionResults[1]; bulkWriteChanges(changes) .then(() => { getIncidentsFromChanges(changes)