From 38f7ef333985184d923404c6b9150e35a7f38bbb Mon Sep 17 00:00:00 2001 From: hiteshkumar87 Date: Mon, 28 Aug 2023 12:20:59 +0530 Subject: [PATCH] CSR-1618 added FirstAvailableAppointment GA event --- src/helpers/date-helper.js | 10 ++++++++++ src/store/index.js | 34 ++++++++++++++++++++++++++++++---- 2 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 src/helpers/date-helper.js diff --git a/src/helpers/date-helper.js b/src/helpers/date-helper.js new file mode 100644 index 000000000..dce497231 --- /dev/null +++ b/src/helpers/date-helper.js @@ -0,0 +1,10 @@ +export function getDateDifferenceInDays(startDate, endDate) { + var date1 = new Date(endDate); + date1.setHours(0, 0, 0, 0); + var date2 = new Date(startDate); + date2.setHours(0, 0, 0, 0); + // To calculate the time difference of two dates + var Difference_In_Time = date1.getTime() - date2.getTime(); + // To calculate the no. of days between two dates + return Difference_In_Time / (1000 * 3600 * 24); +} diff --git a/src/store/index.js b/src/store/index.js index 9b52e08a4..403e784c1 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -15,6 +15,7 @@ import { deepEqual } from "@/helpers/object-helper"; import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants"; import { getQuerystringParameter } from "@/helpers/querystring-helper"; import { queryStrings } from "@/constants/query-strings"; +import { getDateDifferenceInDays } from "@/helpers/date-helper"; // Export State const getDefaultState = () => { return { @@ -605,8 +606,24 @@ function getNonFalseValuesOfPropertyInArrayOfObjects(array, propertyName) { return (array ?? []).map((x) => x[propertyName]).filter((x) => x); } -function provisionalTriggersToString(provisionalTriggers) { - return "ProvisionalTriggers:" + provisionalTriggers.join(","); +function FirstAvailableAppointment( + provisionalTriggers, + zipCode, + firstAvailableAppointmentDateString, + shopAppointmentType +) { + var numberOfDays = null; + if (firstAvailableAppointmentDateString) + numberOfDays = getDateDifferenceInDays(new Date(), firstAvailableAppointmentDateString); + + if (shopAppointmentType) + return `FirstAvailableAppointment:${numberOfDays},Zip:${zipCode},ShopAppointmentType:${shopAppointmentType},ProvisionalTriggers:${provisionalTriggers.join( + "," + )}`; + else + return `FirstAvailableAppointment:${numberOfDays},Zip:${zipCode},ProvisionalTriggers:${provisionalTriggers.join( + "," + )}`; } // Export Actions @@ -1297,7 +1314,12 @@ export const actions = { endpoint: endpoints.GetShopTimeSlots.url, payload: payload, additionalSuccessEventDataHandler: (response) => - provisionalTriggersToString(response.data.provisionalTriggers), + FirstAvailableAppointment( + response.data.provisionalTriggers, + order.serviceLocation.zipCode, + response.data.days?.[0]?.date, + shopAppointmentType + ), }); }, @@ -1354,7 +1376,11 @@ export const actions = { endpoint: endpoints.GetMobileTimeSlots.url, payload: payload, additionalSuccessEventDataHandler: (response) => - provisionalTriggersToString(response.data.provisionalTriggers), + FirstAvailableAppointment( + response.data.provisionalTriggers, + order.serviceLocation.zipCode, + response.data.days?.[0]?.date + ), }); },