CASH-1637
CASH-1637 function that used GA got reverted out but needed added back with the new endpoint that logs via kinesis
This commit is contained in:
parent
2dbead5b37
commit
b49a66b599
1 changed files with 88 additions and 0 deletions
|
|
@ -200,6 +200,94 @@ export default {
|
|||
await this.logPageView(analyticsPageEvents.ENTRY);
|
||||
},
|
||||
|
||||
// This sends session data to the session logging endpoint on the analytics service.
|
||||
// From there, it uses aws kinesis data stream, DigitalConsumer-Session-Data-Stream,
|
||||
// and aws FireHose stream, DigitalConsumer-Session-Firehose, to push data to an
|
||||
// S3 bucket, safelite-dev-digitalconsumer-session-data-us-east-2/1.
|
||||
// This bucket data is then picked up by snowflake for analytics use.
|
||||
async pushFmgSessionData() {
|
||||
const hasSubmittedOrder = baseMixin.methods.hasSubmittedOrder();
|
||||
const submittedOrder = baseMixin.methods.getSubmittedOrder();
|
||||
const order = hasSubmittedOrder ? submittedOrder : store.getters.order;
|
||||
|
||||
const hasSubmittedApplicationUser = baseMixin.methods.hasSubmittedApplicationUser();
|
||||
const submittedApplicationUser = baseMixin.methods.getSubmittedApplicationUser();
|
||||
const applicationUser = hasSubmittedApplicationUser
|
||||
? submittedApplicationUser
|
||||
: store.getters.applicationUser;
|
||||
|
||||
const isEarlyBird = order?.lineItems?.supportingItems?.find(
|
||||
(lineItem) => lineItem.partType == partTypeStrings.EARLY_BIRD
|
||||
);
|
||||
|
||||
const promoCodes = Array.isArray(order?.lineItems?.promos)
|
||||
? order?.lineItems?.promos
|
||||
.map((item) => item.promoCode)
|
||||
.filter((code) => code)
|
||||
.join(", ")
|
||||
: null;
|
||||
|
||||
const glassProducts = order?.damage?.glassToReplace?.map(
|
||||
(part) => `${part.glassLocation}-${part.glassName}`
|
||||
);
|
||||
|
||||
var sessionData = {};
|
||||
sessionData.currentPage = getPageNameFromRouter();
|
||||
sessionData.sid = getSessionIdValue();
|
||||
sessionData.deviceId = getDeviceIdValue();
|
||||
sessionData.fmgSessionId = applicationUser?.savedSessionId;
|
||||
sessionData.userId = getUserIdValue();
|
||||
sessionData.carId = order?.vehicle?.carId;
|
||||
sessionData.vehicleYear = order?.vehicle?.year;
|
||||
sessionData.vehicleMake = order?.vehicle?.make;
|
||||
sessionData.vehicleModel = order?.vehicle?.model;
|
||||
sessionData.vehicleStyle = order?.vehicle?.style;
|
||||
sessionData.hasVin = order?.vehicle?.vin ? true : false;
|
||||
sessionData.cashOrInsuranceAccountType = order?.payment?.isInsurance
|
||||
? "Insurance"
|
||||
: "Cash";
|
||||
sessionData.damageType = order?.damage?.isRepair ? "Repair" : "Replace";
|
||||
sessionData.productType = glassProducts;
|
||||
sessionData.eon = order?.eon;
|
||||
sessionData.referralNumber = order?.referralNumber;
|
||||
sessionData.referralSequenceNumber = order?.referralSequenceNumber;
|
||||
sessionData.referralDate = order?.referralDate;
|
||||
sessionData.workOrderNumber = order?.workOrderNumber;
|
||||
sessionData.workOrderId = order?.workOrderId;
|
||||
sessionData.isPia = order?.payment?.isPia ?? false;
|
||||
sessionData.piaType = order?.payment?.piaType;
|
||||
sessionData.parentAccountNumber = order?.payment?.parentAccountNumber;
|
||||
sessionData.settledTenderAmount = order?.settledTenderAmount;
|
||||
sessionData.recalRequired = containsRecalParts(order?.lineItems);
|
||||
sessionData.recalType = getRecalPartNumbers(order?.lineItems?.glassParts);
|
||||
sessionData.serviceZipCode = order?.serviceLocation?.provider?.address?.zipCode
|
||||
? order?.serviceLocation?.provider?.address?.zipCode
|
||||
: order?.serviceLocation?.zipCode;
|
||||
sessionData.providerCtu = order?.serviceLocation?.provider?.address?.zipCodeCtu
|
||||
? order?.serviceLocation?.provider?.address?.zipCodeCtu
|
||||
: order?.serviceLocation?.zipCodeCtu;
|
||||
sessionData.appointmentDate = `${order?.schedule?.date} ${order?.schedule?.startTime}`;
|
||||
sessionData.serviceType = order?.serviceLocation?.appointmentType;
|
||||
sessionData.promoCodes = promoCodes;
|
||||
sessionData.hasTechnicianNotes = order?.serviceLocation?.techNotes ? true : false;
|
||||
sessionData.paymentMethod = order?.payment?.piaType;
|
||||
sessionData.isTextingOptedIn = order?.customer?.isSmsOptIn ? true : false;
|
||||
sessionData.isEarlyBird = isEarlyBird ? true : false;
|
||||
sessionData.insuranceCo = order?.policy?.insuranceCompanyName;
|
||||
sessionData.deductible = order?.policy?.currentDeductible;
|
||||
sessionData.isVerified = order?.payment?.insuranceCoverage?.isVerified ?? false;
|
||||
sessionData.isNoComp = order?.policy?.isNoComp;
|
||||
sessionData.isItac = order?.policy?.isItac;
|
||||
sessionData.subTotalPrice = getSubTotal(order?.lineItems);
|
||||
sessionData.totalPrice = getAmountDue(order?.lineItems, true);
|
||||
|
||||
await baseMixin.methods.dispatchStoreAction(
|
||||
storeActions.LOG_FMG_SESSION_DATA,
|
||||
sessionData,
|
||||
false
|
||||
);
|
||||
},
|
||||
|
||||
pushOrderToDataLayer() {
|
||||
// helper check for if an object is defined (but maybe falsey)
|
||||
const isDefined = (x) => x !== null && x !== undefined;
|
||||
|
|
|
|||
Loading…
Reference in a new issue