From 81538600a6d7777af27c9582f830f526e3f957d5 Mon Sep 17 00:00:00 2001 From: Senad Uka Date: Mon, 28 Oct 2019 20:35:34 +0100 Subject: [PATCH] Fix weekend rates --- services/integration/checkBookingChange.js | 9 ++++++--- services/officeRnD/bookings.js | 11 ++++++++++- services/officeRnD/rates.js | 8 ++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/services/integration/checkBookingChange.js b/services/integration/checkBookingChange.js index 1bd0395..9a46a39 100644 --- a/services/integration/checkBookingChange.js +++ b/services/integration/checkBookingChange.js @@ -24,14 +24,17 @@ const checkBookingChanges = () => { const ratesMap = {}; rates.forEach(rate => { - const { rateId, price } = rate; - ratesMap[rateId] = price; + const { rateId, price, weekendPrice } = rate; + ratesMap[rateId] = { + price, + weekendPrice + }; }); const resourcesMap = {}; resources.forEach(resource => { const { resourceId, rate } = resource; - resource.price = ratesMap[rate] || 0; + resource.price = ratesMap[rate] || {price: 0, weekendPrice: 0}; resourcesMap[resourceId] = resource; }); diff --git a/services/officeRnD/bookings.js b/services/officeRnD/bookings.js index e38fb81..bea8189 100644 --- a/services/officeRnD/bookings.js +++ b/services/officeRnD/bookings.js @@ -193,7 +193,16 @@ const bulkWriteReservationsWithChangesTracking = (reservations, resourcesMap) => if (parseFloat(instance.previous('hourlyRate') > 0)) { instance.setDataValue('hourlyRate', instance.previous('hourlyRate')); }else{ - const hourlyRate = resourceId ? resourcesMap[resourceId].price : 0; + //Determine if we should apply weekend price or work day price + const newStartWeekDay = moment.utc(instance.start).isoWeekday(); + const isWeekend = newStartWeekDay > 5; //6 - Saturday, 7 - Sunday + let hourlyRate; + if (isWeekend){ + hourlyRate = resourceId ? resourcesMap[resourceId].price.weekendPrice : 0; + }else{ + hourlyRate = resourceId ? resourcesMap[resourceId].price.price : 0; + } + console.log(hourlyRate); instance.setDataValue('hourlyRate', hourlyRate); } } diff --git a/services/officeRnD/rates.js b/services/officeRnD/rates.js index 898c3fe..9f6aea0 100644 --- a/services/officeRnD/rates.js +++ b/services/officeRnD/rates.js @@ -9,9 +9,17 @@ const fetchRates = () => { const rates = result.data || []; const cleanedRates = []; rates.forEach(rate => { + const additionalRates = rate.rates; + let weekendRate = rate.price; //fallback price + additionalRates.forEach(additionalRate => { + if (additionalRate.isWeekendRate){ + weekendRate = additionalRate.price; + } + }); cleanedRates.push({ rateId: rate['_id'], price: rate.price, + weekendPrice: weekendRate }); }); resolve(cleanedRates);