Fix incidents for bookings with break between #74

Merged
bilal.catic merged 2 commits from fix-incidents-for-bookings-with-break-between into master 2019-12-06 05:46:44 +01:00

View File

@@ -177,8 +177,8 @@ const setUnlockedIncidentsLevel = (incidents) => {
formattedIncident.incidentLevel = unlockedIncidentLevelsPrices.UNLOCKED_0.title;
formattedIncident.incidentLevelPrice = unlockedIncidentLevelsPrices.UNLOCKED_0.price;
} else {
const lastIncidentTime = moment.utc(memberLastIncident.incidentTimestamp).startOf('month');
const currentIncidentTime = moment.utc(incident.unlockTimestamp).startOf('month');
const lastIncidentTime = moment.tz(memberLastIncident.incidentTimestamp, UI_TIMEZONE).startOf('month');
const currentIncidentTime = moment.tz(incident.unlockTimestamp, UI_TIMEZONE).startOf('month');
const timeDiff = Math.abs(lastIncidentTime.diff(currentIncidentTime, 'months'));
if (timeDiff >= (parseInt(process.env.UNLOCK_STREAK_REPAIR_AFTER) || 6)){
@@ -405,6 +405,12 @@ const getIncidentData = (reservation) => {
//**********************
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
// 1. Check if member entered before reservation start time
// if (currentReservation.memberId === '5ce785af422bdd00967fb781' && reservationMoment.isAfter('2019-12-01 00:00:16+00')) {
// console.log('\r\n\r\nChecking if member entered before reservation start time :');
@@ -471,12 +477,6 @@ const getIncidentData = (reservation) => {
// }
let forgotToLockAsyncCheck;
if (!lockEntry && !nextReservationIsBackToBack){
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
if (unlockEntry){
// if (currentReservation.memberId === '5ce785af422bdd00967fb781' && reservationMoment.isAfter('2019-12-01 00:00:16+00')) {
// console.log('\tIncident : YES [#1]');
@@ -538,6 +538,38 @@ const getIncidentData = (reservation) => {
if (previousReservationResults){
const previousReservationLockEntry = previousReservationResults.lockEntry;
const previousReservationUnlockEntry = previousReservationResults.unlockEntry;
//Special check for bookings with break between
if (previousReservation &&
!previousReservationIsBackToBack &&
previousReservation.memberId === currentReservation.memberId &&
previousReservationUnlockEntry && !previousReservationLockEntry &&
!unlockEntry && lockEntry //current reservation unlock / lock entries
) {
const unlockMoment = previousReservation.end ? moment.utc(previousReservation.end) : null;
const lockMoment = currentReservation.start ? moment.utc(currentReservation.start) : null;
if (unlockMoment && lockMoment){
const timeDifference = lockMoment.diff(unlockMoment, 'minutes');
const timeIntervalsToCharge = Math.floor(timeDifference / UNSCHEDULED_TIME_RESOLUTION);
const totalChargeFee = timeIntervalsToCharge * UNSCHEDULED_CHARGE_PRICE;
if (timeIntervalsToCharge > 0) {
incidents.push({
incidentType: incidentType.UNSCHEDULED_INCIDENT_STANDALONE,
reservation: emptyReservation,
unlockTimestamp: previousReservation.end,
lockTimestamp: currentReservation.start,
memberId: currentReservation.memberId,
resourceId,
chargePrice: UNSCHEDULED_CHARGE_PRICE,
timeIntervalsToCharge,
totalChargeFee,
});
}
}
}
fromTimestamp = previousReservationLockEntry && previousReservationLockEntry.timestamp ?
previousReservationLockEntry.timestamp : previousReservation.end;
@@ -599,12 +631,6 @@ const getIncidentData = (reservation) => {
if (!pairUnlockEntry){
pairUnlockEntry = entry;
}else{
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
incidents.push({
incidentType: incidentType.UNLOCKED_INCIDENT_STANDALONE,
reservation: emptyReservation,
@@ -620,11 +646,7 @@ const getIncidentData = (reservation) => {
case doorLockEvents.USER_LOCKED:
if (pairUnlockEntry && !pairLockEntry){
pairLockEntry = entry;
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
const unlockMoment = moment.utc(pairUnlockEntry.timestamp);
const lockMoment = moment.utc(pairLockEntry.timestamp);
@@ -646,12 +668,6 @@ const getIncidentData = (reservation) => {
});
}
}else{
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
incidents.push({
incidentType: incidentType.UNLOCKED_INCIDENT_STANDALONE,
reservation: emptyReservation,
@@ -676,12 +692,6 @@ const getIncidentData = (reservation) => {
});
if (pairUnlockEntry){
const emptyReservation = {
reservationId: null,
start: null,
end: null,
};
incidents.push({
incidentType: incidentType.UNLOCKED_INCIDENT_STANDALONE,
reservation: emptyReservation,