diff --git a/services/doorLock/doorLock.js b/services/doorLock/doorLock.js index ea45109..c50c6eb 100644 --- a/services/doorLock/doorLock.js +++ b/services/doorLock/doorLock.js @@ -190,10 +190,16 @@ const getUnlockEntryForReservation = (reservation, previousReservation) => { const attributes = ['memberName', 'event', 'timestamp', 'resourceId']; - const fromTimestamp = previousReservation && previousReservation.end ? - previousReservation.end : moment.utc(reservation.start).tz(UI_TIMEZONE).startOf('Day').toISOString(); + const previousReservationEndMoment = previousReservation && previousReservation.end ? + moment.utc(previousReservation.end) : null; + const reservationStartMoment = moment.utc(reservation.start); + + const fromTimestamp = previousReservationEndMoment && previousReservationEndMoment.tz(UI_TIMEZONE).isSame(reservationStartMoment.tz(UI_TIMEZONE), 'day') ? + previousReservation.end : reservationStartMoment.tz(UI_TIMEZONE).startOf('day').toISOString(); + const toTimestamp = reservation.end; + const filters = { memberId, timestamp: { @@ -217,21 +223,8 @@ const getUnlockEntryForReservation = (reservation, previousReservation) => { let pairedLockEntry = null; let eventFound = false; - // console.log('\r\n=?== SEARCH UNLOCK =='); - // console.log('ReservatioN : ', reservation.start); - const entriesBeforeReservationStart = entries.filter((entry) => moment.utc(entry.timestamp).isBefore(reservation.start)); - // console.log('After end : '); - /*console.log(entriesBeforeReservationStart.map(e => { - return { - timestamp: e.timestamp, - event: e.event, - } - })); - - */ - entriesBeforeReservationStart.forEach((entry) => { if (!eventFound) { if (entry.event === doorLockEvents.USER_UNLOCKED) { @@ -250,35 +243,21 @@ const getUnlockEntryForReservation = (reservation, previousReservation) => { }); if (eventFound){ - // console.log('FOUND : ', candidateUnlockEntry.timestamp, candidateUnlockEntry.event); resolve(candidateUnlockEntry); } else { - // console.log('NOT FOUND IN FIRST ROUND'); candidateUnlockEntry = null; const numberOfEntriesLeft = entries.length - entriesBeforeReservationStart.length; const entriesAfterReservationStart = entries.slice(0, numberOfEntriesLeft); - // console.log('Entries in reservation time : '); - /*console.log(entriesAfterReservationStart.map(e => { - return { - timestamp: e.timestamp, - event: e.event, - } - })); - - */ - entriesAfterReservationStart.forEach((entry) => { if (!eventFound) { if (entry.event === doorLockEvents.USER_UNLOCKED) { - //console.log('FOUND : ', entry.timestamp, entry.event); eventFound = true; candidateUnlockEntry = entry; } } }); - //console.log('===??=='); resolve(candidateUnlockEntry); } }) @@ -292,9 +271,13 @@ const getLockEntryForReservation = (reservation, nextReservation) => { const attributes = ['memberName', 'event', 'timestamp']; + const nextReservationStartMoment = nextReservation && nextReservation.start ? + moment.utc(nextReservation.start) : null; + const reservationStartMoment = moment.utc(reservation.start); + const fromTimestamp = reservation.start; - const toTimestamp = nextReservation && nextReservation.start ? - nextReservation.start : moment.utc(reservation.start).tz(UI_TIMEZONE).endOf('Day').toISOString(); + const toTimestamp = nextReservationStartMoment && nextReservationStartMoment.tz(UI_TIMEZONE).isSame(reservationStartMoment.tz(UI_TIMEZONE), 'day') ? + nextReservation.start : reservationStartMoment.tz(UI_TIMEZONE).endOf('day').toISOString(); const filters = { memberId, @@ -361,6 +344,10 @@ const getLockEntryForReservation = (reservation, nextReservation) => { }); }; +const getEntriesBetween = (reservation, previousReservation) => { + +}; + const getLastEntryForReservation = (reservation) => { return new Promise ((resolve, reject) => { getFirstReservationInBlock(reservation) @@ -404,5 +391,6 @@ module.exports = { writeDoorLockEvent, getUnlockEntryForReservation, getLockEntryForReservation, + getEntriesBetween, getLastEntryForReservation, }; diff --git a/services/integration/doorLockCharges.js b/services/integration/doorLockCharges.js index 7cc5029..a6ac770 100644 --- a/services/integration/doorLockCharges.js +++ b/services/integration/doorLockCharges.js @@ -4,7 +4,7 @@ const moment = require('moment-timezone'); const db = require('../../models/index'); const { doorLockEvents, incidentType, unlockedIncidentLevelsPrices, UNSCHEDULED_CHARGE_PRICE, MAX_BACK_TO_BACK_DIFFERENCE, UNSCHEDULED_TIME_RESOLUTION } = require('../../constants/constants'); -const { getUnlockEntryForReservation, getLockEntryForReservation, getLastEntryForReservation } = require('../doorLock/doorLock'); +const { getUnlockEntryForReservation, getLockEntryForReservation, getEntriesBetween, getLastEntryForReservation } = require('../doorLock/doorLock'); const { getAllFinishedBookings, getFirstPreviousBooking, getFirstNextBooking } = require('../officeRnD/bookings'); const getSortedIncidentsForMember = (memberId) => { @@ -180,11 +180,12 @@ const analyseReservation = (reservation) => { .then(([previousReservation, nextReservation]) => { const getRelatedDoorLockEntriesAsync = [ getUnlockEntryForReservation(reservation, previousReservation), - getLockEntryForReservation(reservation, nextReservation) + getLockEntryForReservation(reservation, nextReservation), + getEntriesBetween(reservation, previousReservation) ]; Promise.all(getRelatedDoorLockEntriesAsync) - .then(([unlockEntry, lockEntry]) => { + .then(([unlockEntry, lockEntry, entriesBetween]) => { const currentReservationStart = moment.utc(reservation.start); const currentReservationEnd = moment.utc(reservation.end);