Merge pull request #2188 from Safelite/feature/CASH-79-BE

CASH-79 Front end save quote api call
This commit is contained in:
CarlNation 2025-01-13 06:36:03 -05:00 committed by GitHub
commit b045d6e135
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 67 additions and 2 deletions

View file

@ -124,6 +124,10 @@ const endpoints = {
url: "/order/api/v1/order/load-session",
method: "POST",
},
SaveQuote: {
url: "/order/api/v1/order/initiate-saved-progress-email",
method: "POST",
},
GetSignature: {
url: "/order/api/v1/order/sign",
method: "POST",

View file

@ -37,6 +37,7 @@ const storeActions = {
GET_MOBILE_PREMIUM_FEE: "getMobilePremiumFee",
SAVE_SESSION: "saveSession",
LOAD_SESSION: "loadSession",
SAVE_QUOTE: "saveQuote",
UPDATE_STORE_WITH_SAVE_SESSION_RESPONSE: "updateStoreWithSaveSessionResponse",
VALIDATE_ZIP: "validateZip",
PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA: "priceOrderItemsAndSaveServerData",

View file

@ -98,6 +98,15 @@ export async function submitWorkOrder({
});
}
export async function saveQuote({ pageNameToLog }) {
return await baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.SAVE_QUOTE,
{},
pageNameToLog,
false
);
}
// PRIVATE FUNCTIONS //
/*

View file

@ -84,6 +84,11 @@
class="mb-5 quote-disclaimer" />
</div>
</div>
<div class="row justify-content-center">
<div class="col-md-6 col-xl-4">
<button @click="handleClick">Click me!</button>
</div>
</div>
</div>
</Form>
</template>
@ -134,6 +139,7 @@ import { packageNames } from "@/constants/package-names";
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
import { containsRecalParts } from "@/helpers/recal-helper";
import { externalParameterStatus } from "@/constants/external-parameters";
import { saveQuote } from "@/helpers/heritage-integration/order-helper.js";
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
@ -455,6 +461,9 @@ export default {
},
},
methods: {
async handleClick() {
await saveQuote({ pageNameToLog: "quote" });
},
openModalAction(modalName) {
this.$refs[modalName].openModal();
},

View file

@ -1931,6 +1931,49 @@ export const actions = {
},
// Session API Actions
saveQuote(context, { pageNameToLog, payload }) {
const vehicle = context.getters.vehicle;
const damage = context.getters.damage;
const order = context.state.order;
const applicationUser = context.getters.applicationUser;
const lineItems = context.state.order.lineItems;
const excludeRecalInquote = context.getters.shouldHideRecalibration;
return globalMethods.callHttpClient({
method: endpoints.SaveQuote.method,
endpoint: endpoints.SaveQuote.url,
payload: {
referralCorrelationId: order.referralCorrelationId,
referralNumber: order.referralNumber?.toString(),
referralSequenceNumber: order.referralSequenceNumber,
emailAddress: "cn@gm.com", //order.customer.emailAddress,
lastPage: pageNameToLog,
isRepair: damage.isRepair,
firstName: order.customer.firstName,
lastName: order.customer.lastName,
savedSessionId: applicationUser.savedSessionId,
serviceState: order.serviceLocation.state,
serviceZipCode: order.serviceLocation.zipCode,
parentAccountNumber: order.payment.parentAccountNumber,
excludeRecalInquote: excludeRecalInquote,
year: vehicle.year,
make: vehicle.make,
model: vehicle.model,
isInsurance: order.payment.isInsurance ?? false,
isVerified: order.payment.insuranceCoverage.isVerified ?? false,
lineItems: {
glassParts: lineItems.glassParts,
supportingItems: lineItems.supportingItems,
vaps: lineItems.vaps,
serverData: lineItems.serverData,
promos: lineItems.promos,
},
},
logApiCall: true,
pageNameToLog: pageNameToLog,
});
},
saveSession(context, { pageNameToLog, payload }) {
const vehicle = context.getters.vehicle;
const damage = context.getters.damage;
@ -2008,8 +2051,7 @@ export const actions = {
order.payment.insuranceCoverage.coverageStatus?.toString(),
coverageVerificationType:
order.payment.insuranceCoverage.coverageVerificationType,
coverageSubStatus:
order.payment.insuranceCoverage.coverageSubStatus,
coverageSubStatus: order.payment.insuranceCoverage.coverageSubStatus,
},
isInsurance: order.payment.isInsurance,
parentAccountNumber: order.payment.parentAccountNumber,