{"version":3,"file":"static/js/14d2f05c37789920bf0b.bundle.js","mappings":"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","sources":["webpack://Dobbies.Commerce/./src/dotdigital-extension/DataServiceEntities.g.ts?cecd","webpack://Dobbies.Commerce/./src/dotdigital-extension/DataActionExtension.g.ts?36a7","webpack://Dobbies.Commerce/./src/themes/dobbies/utilities/formatDate.ts?ae4d","webpack://Dobbies.Commerce/./src/themes/dobbies/views/custom-components/lost-your-card.tsx?1663","webpack://Dobbies.Commerce/./src/themes/dobbies/views/custom-components/cancel-membership.tsx?0071","webpack://Dobbies.Commerce/./src/themes/dobbies/views/account-loyalty.view.tsx?2da7"],"sourcesContent":["// tslint:disable\r\n/* eslint-disable security/detect-object-injection */\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as Entities from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceTypes.g';\r\n\r\n/**\r\n * VSIRestAPIHandler entity interface.\r\n */\r\nexport interface IVSIRestAPIHandler {\r\n Id: number;\r\n result?: string;\r\n ExtensionProperties?: Entities.CommerceProperty[];\r\n}\r\n\r\n/**\r\n * VSIRestAPIHandler entity class.\r\n */\r\nexport class VSIRestAPIHandlerExtensionClass implements IVSIRestAPIHandler {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public Id: number;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public result: string;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n public ExtensionProperties: Entities.CommerceProperty[];\r\n\r\n // Navigation properties names\r\n\r\n /**\r\n * Construct an object from odata response.\r\n * @param {any} odataObject The odata result object.\r\n */\r\n constructor(odataObject?: any) {\r\n odataObject = odataObject || {};\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.Id = odataObject.Id;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.result = odataObject.result;\r\n\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties = undefined;\r\n if (odataObject.ExtensionProperties) {\r\n this.ExtensionProperties = [];\r\n for (var i = 0; i < odataObject.ExtensionProperties.length; i++) {\r\n if (odataObject.ExtensionProperties[i]) {\r\n if (odataObject.ExtensionProperties[i]['@odata.type']) {\r\n var className: string = odataObject.ExtensionProperties[i]['@odata.type'];\r\n className = className.substr(className.lastIndexOf('.') + 1).concat('Class');\r\n if (EntityClasses[className]) {\r\n this.ExtensionProperties[i] = new EntityClasses[className](odataObject.ExtensionProperties[i]);\r\n }\r\n } else {\r\n this.ExtensionProperties[i] = new EntityClasses.CommercePropertyClass(odataObject.ExtensionProperties[i]);\r\n }\r\n } else {\r\n // @ts-ignore - TODO bug fix #23427261 - remove ts-ignore - https://microsoft.visualstudio.com/DefaultCollection/OSGS/_workitems/edit/23427261/\r\n this.ExtensionProperties[i] = undefined;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","/*!\r\n * Copyright (c) Microsoft Corporation.\r\n * All rights reserved. See LICENSE in the project root for license information.\r\n * THIS FILE IS AN AUTOGENERATED TYPESCRIPT PROXY EXTENSION.\r\n * TO USE THIS FILE, IT MUST BE ADDED TO A D365COMMERCE APPLICATION\r\n */\r\n// tslint:disable\r\nimport { AsyncResult, callActionOrExecute, DataServiceQuery, IContext, IDataServiceRequest } from '@msdyn365-commerce/retail-proxy';\r\n// @ts-ignore\r\nimport * as EntityClasses from '@msdyn365-commerce/retail-proxy/dist/Entities/CommerceModels.g';\r\nimport * as DataServiceEntities from './DataServiceEntities.g';\r\n\r\n// @ts-ignore\r\nfunction vSIGetAPIResponseQuery(id?: number): DataServiceQuery {\r\n const key = id ? { Id: id } : null;\r\n return new DataServiceQuery('VSIGetRestAPIResponse', 'VSIRestAPIHandler', DataServiceEntities.VSIRestAPIHandlerExtensionClass, key);\r\n}\r\n\r\nexport function createVSIInitiateRestCallInput(\r\n targetSystem: string,\r\n methodType: string,\r\n requestHeader: string,\r\n requestBody: string,\r\n urlParams: string,\r\n servicePath: string\r\n): IDataServiceRequest {\r\n const query = vSIGetAPIResponseQuery();\r\n return query.createDataServiceRequestForOperation(\r\n 'VSI_CallGenericRestAPIHandler',\r\n true,\r\n DataServiceEntities.VSIRestAPIHandlerExtensionClass,\r\n 'false',\r\n { bypassCache: 'get', returnEntity: 'DataServiceEntities.IVSIRestAPIHandler' },\r\n {\r\n targetSystem: targetSystem,\r\n methodType: methodType,\r\n requestHeader: requestHeader,\r\n requestBody: requestBody,\r\n urlParams: urlParams,\r\n servicePath: servicePath\r\n }\r\n );\r\n}\r\n\r\nexport function vSIInitiateRestCallAsync(\r\n context: IContext,\r\n targetSystem: string,\r\n methodType: string,\r\n requestHeader: string,\r\n requestBody: string,\r\n urlParams: string,\r\n servicePath: string\r\n): AsyncResult {\r\n const request = createVSIInitiateRestCallInput(targetSystem, methodType, requestHeader, requestBody, urlParams, servicePath);\r\n return callActionOrExecute(request, context.callerContext);\r\n}\r\n","export function setDateFormat(originalDate:string){\r\n if (!originalDate) {\r\n return;\r\n }\r\n var dateComponents = originalDate.split('/');\r\n const day = dateComponents[0];\r\n const month = dateComponents[1];\r\n const year = dateComponents[2].slice(-2);\r\n const formattedDate = `${day}/${month}/${year}`;\r\n \r\n return formattedDate;\r\n }","import React from 'react';\r\nimport { updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport { IAccountLoyaltyResources } from '../../definition-extensions/account-loyalty.ext.props.autogenerated';\r\nimport axios from 'axios';\r\nimport { IAccountLoyaltyData } from '@msdyn365-commerce-modules/account-management';\r\nimport { ICoreContext } from '@msdyn365-commerce/core';\r\n\r\ninterface ILostYourCardProps {\r\n resources: IAccountLoyaltyResources;\r\n onSubmit: () => void;\r\n onCancel: () => void;\r\n disableCardBtn: () => void;\r\n userToken: string | false;\r\n cardNumber: string | undefined;\r\n data: IAccountLoyaltyData;\r\n context: ICoreContext;\r\n tierId?: string;\r\n clubImage?: string;\r\n clubPlusImage?: string;\r\n}\r\n\r\nconst LostYourCard = (props: ILostYourCardProps) => {\r\n const {\r\n resources: {\r\n requestNewCardHeading,\r\n lostYourCardDescriptionText,\r\n proceedText,\r\n cancelText,\r\n requestReceivedText,\r\n requestReceivedHeading,\r\n lostCardLabel\r\n },\r\n onCancel,\r\n onSubmit,\r\n disableCardBtn,\r\n tierId,\r\n clubImage,\r\n clubPlusImage\r\n } = props;\r\n\r\n // React.useEffect(() => {\r\n // replaceCard()\r\n // },[])\r\n\r\n const replaceCard = async () => {\r\n const userToken = props.userToken;\r\n await axios({\r\n method: 'POST',\r\n\r\n url: `${props.context.request.apiSettings.baseUrl}/Commerce/UpdateReplacementCard`,\r\n data: {\r\n CardNumber: props.cardNumber\r\n },\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n OUN: props.context.request.apiSettings.oun,\r\n Authorization: `Bearer ${userToken}`\r\n }\r\n })\r\n .then(res => {\r\n // @ts-ignore\r\n const customer = props.data?.customerInformation.result!;\r\n const customerAttr = customer.Attributes;\r\n // @ts-ignore\r\n const newAttributes = customerAttr?.map(attr => {\r\n let attrValue = attr.AttributeValue;\r\n if (attr.Name === 'LostCardDate') {\r\n const value = res.data.Date;\r\n\r\n attrValue = { ...attr.AttributeValue, StringValue: value };\r\n }\r\n return { ...attr, AttributeValue: attrValue };\r\n });\r\n const input = new updateCustomerAttributesInput(\r\n customer.AccountNumber,\r\n newAttributes || [],\r\n props.context.request.apiSettings\r\n );\r\n updateCustomerAttributes(input, props.context.actionContext)\r\n .then(response => {\r\n onCancel();\r\n disableCardBtn();\r\n })\r\n .catch(err => {\r\n console.log(err, 'ERROR');\r\n });\r\n })\r\n .catch(err => {\r\n console.log(err, 'Error');\r\n });\r\n };\r\n\r\n const handleSubmit = () => {\r\n replaceCard();\r\n onSubmit();\r\n };\r\n const [isSubmitted] = React.useState(false);\r\n const currentHeading = isSubmitted ? requestReceivedHeading : lostCardLabel;\r\n const currentDescription = isSubmitted ? requestReceivedText : lostYourCardDescriptionText;\r\n const currentButtons = (\r\n <>\r\n \r\n \r\n {cancelText}\r\n \r\n \r\n );\r\n const imgSrc = tierId?.toLowerCase() === 'club' ? clubImage : clubPlusImage;\r\n\r\n return (\r\n
\r\n {

{currentHeading}

}\r\n
\r\n
\r\n

{requestNewCardHeading}

\r\n

{currentDescription}

\r\n\r\n
{currentButtons}
\r\n
\r\n
\r\n Card Image\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default LostYourCard;\r\n","import React from 'react';\r\nimport { IAccountLoyaltyResources, IAccountLoyaltyConfig } from '../../definition-extensions/account-loyalty.ext.props.autogenerated';\r\n\r\ninterface ICancelMembershipProps {\r\n resources: IAccountLoyaltyResources;\r\n expireDate?: string;\r\n onSubmit: () => void;\r\n onCancel: () => void;\r\n config: IAccountLoyaltyConfig;\r\n}\r\n\r\nconst CancelMembership: React.FC = props => {\r\n const {\r\n resources: {\r\n clubBenefitsHeading,\r\n clubplusSubheading,\r\n clubSubheading,\r\n clubBenefit1,\r\n clubBenefit2,\r\n clubBenefit3,\r\n clubBenefit4,\r\n clubBenefit5,\r\n clubBenefit6,\r\n clubBenefit7,\r\n clubPlusPoints,\r\n clubPlusCostText,\r\n clubCost,\r\n continueMembershipBtn,\r\n cancelMembershipBtn,\r\n homeButtonLabel\r\n },\r\n expireDate,\r\n onCancel,\r\n onSubmit,\r\n config\r\n } = props;\r\n\r\n const [showMessage, setShowMessage] = React.useState(false);\r\n\r\n const handleSubmit = () => {\r\n setShowMessage(true);\r\n onSubmit();\r\n };\r\n\r\n const formatDate = (date: string) => {\r\n const d = new Date(date);\r\n const day = String(d.getDate()).padStart(2, \"0\");\r\n const month = String(d.getMonth() + 1).padStart(2, \"0\");\r\n const year = String(d.getFullYear()).slice(-2);\r\n return ` ${day}/${month}/${year}. `;\r\n }\r\n\r\n const renderMessage = () => {\r\n return (\r\n
\r\n
\r\n

{config.membershipexpireLabel}

\r\n

\r\n {expireDate && config.cardExpireLabelDecription?.replace('{date}', formatDate(expireDate))}\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n {homeButtonLabel}\r\n \r\n
\r\n
\r\n );\r\n };\r\n\r\n const renderForm = () => {\r\n return (\r\n
\r\n
\r\n {config.cancelFormHeading &&

{config.cancelFormHeading}

}\r\n

{config.cancelFormDescription}

\r\n
\r\n
\r\n

{clubBenefitsHeading}

\r\n
\r\n
\r\n
{clubplusSubheading}
\r\n
{clubSubheading}
\r\n
\r\n
\r\n

{clubBenefit1}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{clubBenefit2}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{clubBenefit3}

\r\n
\r\n
{clubPlusPoints}
\r\n
{clubPlusPoints}
\r\n
\r\n
\r\n
\r\n

{clubBenefit4}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{clubBenefit5}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{clubBenefit6}

\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n

{clubBenefit7}

\r\n
\r\n
{clubPlusCostText.replace(\"{club-plus-cost}\", config.clubPlusCostValue!)}
\r\n
{clubCost}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n return
{showMessage ? renderMessage() : renderForm()}
;\r\n};\r\n\r\nexport default CancelMembership;\r\n","/*---------------------------------------------------------------------------------------------\r\n * Copyright (c) Microsoft Corporation. All rights reserved.\r\n * Licensed under the MIT License. See License.txt in the project root for license information.\r\n *--------------------------------------------------------------------------------------------*/\r\n\r\n// tslint:disable: max-func-body-length\r\n\r\nimport { updateCustomerAttributes, updateCustomerAttributesInput } from '@msdyn365-commerce-modules/retail-actions';\r\nimport React, { useEffect, useState } from 'react';\r\n\r\nimport { IAccountLoyaltyViewProps } from '@msdyn365-commerce-modules/account-management';\r\nimport { Module, Node } from '@msdyn365-commerce-modules/utilities';\r\nimport * as Msdyn365 from '@msdyn365-commerce/core';\r\nimport { vSIInitiateRestCallAsync } from '../../../dotdigital-extension/DataActionExtension.g';\r\nimport {\r\n IAccountLoyaltyProps,\r\n IUpdatedMyAddressData,\r\n IUpdateMyDetailsLinkData,\r\n IClubRenewalCTAData\r\n} from '../definition-extensions/account-loyalty.ext.props.autogenerated';\r\nimport { IAccountLoyaltyData } from './account-loyalty.data';\r\nimport LostYourCard from './custom-components/lost-your-card';\r\nimport CancelMembership from './custom-components/cancel-membership';\r\nimport { setDateFormat } from '../utilities/formatDate';\r\n\r\ninterface IErrorMessage {\r\n message: string | null;\r\n StatusCode: Number | null;\r\n}\r\ninterface ICard {\r\n Number: string;\r\n Status: string;\r\n PIN: string;\r\n}\r\n\r\ninterface IProgram {\r\n Id: number;\r\n Name: string;\r\n}\r\n\r\ninterface IBalance {\r\n Type: string;\r\n Balance: string;\r\n Currency: string;\r\n}\r\n\r\ninterface ITotalCredit {\r\n Type: string;\r\n Balance: string;\r\n Currency: string;\r\n}\r\n\r\ninterface IAvailableReward {\r\n Id: number;\r\n ItemQuantityAvailable: number;\r\n ItemPrice?: number;\r\n ItemDiscountPercent?: number | null;\r\n StampsRequired?: boolean | null;\r\n StampBalance: number;\r\n}\r\n\r\ninterface ILoyaltyAccount {\r\n Card: ICard;\r\n Program: IProgram;\r\n ProgramTier?: string | null;\r\n Customer?: {} | null;\r\n Balances: IBalance[];\r\n TotalCredits: ITotalCredit[];\r\n AvailableRewards: IAvailableReward[];\r\n}\r\n\r\ninterface ICustomerRewardsInfo {\r\n Id: number;\r\n Status: string;\r\n Name: string;\r\n DisplayDescription: string | null;\r\n Display: string | null;\r\n}\r\n\r\nconst enum ViewStateTypes {\r\n Details,\r\n CancelForm,\r\n LostYourCard\r\n}\r\n\r\nconst AccountLoyaltyView: React.FC> = props => {\r\n const {\r\n AccountLoyalty,\r\n heading,\r\n cardNumber,\r\n config,\r\n totalPoints,\r\n context: { actionContext }\r\n } = props;\r\n const {\r\n lostCardLabel,\r\n downloadAppStatement,\r\n updateInfo,\r\n freeTrialCancelledText,\r\n myDetailLabel,\r\n makeRoomLabel,\r\n moreLabel,\r\n upgradeLabel,\r\n homeStoreLabel,\r\n membershipExpiryLabel,\r\n cancelMembershipBtn,\r\n lostCardSubmittedStatement\r\n } = props.resources;\r\n const {\r\n pointsText,\r\n youGotFirstText,\r\n nameLabel,\r\n cardLabel,\r\n tierLabel,\r\n coffeeIntroText,\r\n coffeePointsText,\r\n drinksLeftText,\r\n requestNewCardText\r\n } = props.resources;\r\n const { localStoreAttribute } = props.config;\r\n //@ts-ignore\r\n const [coffeePerksBalance, setCoffeePerksBalance] = useState(undefined);\r\n const [viewState, setViewState] = useState(ViewStateTypes.Details);\r\n const [activeTier, setActiveTier] = React.useState('');\r\n const [loyaltyExpiryDate, setLoyaltyExpirydate] = React.useState('');\r\n const [customerDDAttribute, setcustomerDDAttribute] = React.useState('');\r\n const [loyaltyRemainingDays, setLoyaltyRemainingDays] = React.useState(0);\r\n // const [showCancel, setShowCancel] = React.useState(false);\r\n // const [cancelMembership, setCancelMembership] = React.useState(false);\r\n //@ts-ignore\r\n const [coffeeMembershipError, setCoffeeMembershipError] = React.useState(false);\r\n const [displayLostCard, setDisplayLostCard] = React.useState(false);\r\n const [isDisabled, setIsDisabled] = React.useState(false);\r\n const [attriVal, setAttriVal] = React.useState('');\r\n const [canSubCheck, setCanSubCheck] = React.useState(false);\r\n\r\n /* VSI-Customization -- START If user is not authenticated route him to signin page */\r\n if (!props.context.request.user.isAuthenticated) {\r\n const signinURL = props.context.request.user.signInUrl;\r\n window.location.assign(signinURL!);\r\n }\r\n /* VSI-Customization -- END */\r\n\r\n useEffect(() => {\r\n if (!coffeePerksBalance) {\r\n // First call to get customer rewards if any\r\n const customerCardNo = props.data.loyaltyCard.result?.CardNumber;\r\n if (customerCardNo && config.programID) {\r\n _getLoyaltyInfo(\r\n actionContext,\r\n customerCardNo,\r\n config.programID,\r\n config.rewardID!,\r\n config.availableRewardID!,\r\n config.extraAvailableRewardID!,\r\n setCoffeePerksBalance,\r\n setCoffeeMembershipError\r\n ).catch(error => error);\r\n }\r\n }\r\n }, []);\r\n useEffect(() => {\r\n const loyaltGroups = props.data.loyaltyCard.result?.LoyaltyGroups![0];\r\n if (loyaltGroups) {\r\n const highestActiveLoyaltyCardTier = loyaltGroups.HighestActiveLoyaltyCardTier;\r\n\r\n const activatedTier = loyaltGroups.LoyaltyCardTiers!.find(card => card.RecordId === highestActiveLoyaltyCardTier);\r\n const loyaltyGroupTier = loyaltGroups.LoyaltyCardTiers?.find(tier => {\r\n return tier.TierId === 'Club Plus';\r\n });\r\n\r\n if (activatedTier) {\r\n //@ts-ignore\r\n setActiveTier(activatedTier.TierId);\r\n }\r\n\r\n if (loyaltyGroupTier) {\r\n const validToDate = loyaltyGroupTier.ValidTo;\r\n\r\n const endDate = new Date(validToDate ?? '');\r\n const today = new Date();\r\n const timeDifference = endDate.getTime() - today.getTime() + 24 * 60 * 60 * 1000;\r\n const remainingDays = Math.ceil(timeDifference / (1000 * 60 * 60 * 24));\r\n\r\n if (remainingDays) {\r\n setLoyaltyRemainingDays(remainingDays);\r\n }\r\n const formattedDate = setDateFormat(endDate.toLocaleDateString('en-GB'));\r\n formattedDate && setLoyaltyExpirydate(formattedDate);\r\n }\r\n }\r\n\r\n getCustomerDDAttribute();\r\n }, []);\r\n\r\n useEffect(() => {\r\n const customer = props.data?.customerInformation.result!;\r\n const customerAttr = customer.Attributes;\r\n customerAttr?.map(attr => {\r\n let attrValue = attr.AttributeValue;\r\n\r\n if (attr.Name === 'Direct Debit' && attr.AttributeValue!.StringValue) {\r\n setAttriVal(attr.AttributeValue!.StringValue);\r\n }\r\n\r\n if (attr.Name === 'LostCardDate' && attrValue?.StringValue) {\r\n const lostCardDate = new Date(attrValue?.StringValue);\r\n const todayDate = new Date();\r\n const Difference_In_Time = todayDate.getTime() - lostCardDate.getTime();\r\n const Difference_In_Days = Difference_In_Time / (1000 * 3600 * 24);\r\n if (Difference_In_Days < 10) {\r\n setDisplayLostCard(true);\r\n }\r\n }\r\n });\r\n checkRemDays();\r\n }, []);\r\n\r\n const tierId: string | undefined = getTierId(props);\r\n console.log(tierId, 'TIER ID');\r\n\r\n let loyaltyClass = 'ms-loyalty-free';\r\n if (tierId?.toLowerCase() === config.clubTierFreeText?.toLowerCase()) {\r\n loyaltyClass = 'ms-loyalty-free';\r\n } else if (tierId?.toLowerCase() === config.clubTierPlusText?.toLowerCase()) {\r\n loyaltyClass = 'ms-loyalty-plus';\r\n // loyaltyClass = 'ms-loyalty-premium';\r\n } else if (tierId?.toLowerCase() === config.premiumClubPlusTierText?.toLowerCase()) {\r\n loyaltyClass = 'ms-loyalty-premium';\r\n }\r\n const customerName = props.data.customerInformation.result?.Name;\r\n const localStore = props.data.customerInformation.result?.Attributes?.find(\r\n x => x.Name?.toLowerCase() === localStoreAttribute?.toLowerCase()\r\n );\r\n const { updateMyDetailsLink, updatedMyAddress, cancelButton } = props.config;\r\n const selectedStore = localStore?.AttributeValue?.StringValue || 'None';\r\n let showCancelBtn = false;\r\n\r\n if (props.data.loyaltyCard.result?.LoyaltyGroups![0]) {\r\n const highestActiveLoyaltyCardTier = props.data.loyaltyCard?.result.LoyaltyGroups[0].HighestActiveLoyaltyCardTier;\r\n\r\n const activatedTier = props.data.loyaltyCard?.result.LoyaltyGroups[0].LoyaltyCardTiers!.find(\r\n card => card.RecordId === highestActiveLoyaltyCardTier\r\n );\r\n\r\n if (activatedTier) {\r\n const showBtn = activatedTier?.TierId !== 'Club';\r\n showCancelBtn = showBtn;\r\n }\r\n }\r\n const getCustomerDDAttribute = () => {\r\n const customer = props.data.customerInformation.result!;\r\n const customerAttr = customer?.Attributes?.filter((attr: any) => {\r\n return attr.Name === 'Direct Debit';\r\n });\r\n if (customerAttr) {\r\n //@ts-ignore\r\n setcustomerDDAttribute(customerAttr[0].AttributeValue?.StringValue);\r\n }\r\n };\r\n const handleCancelMembership = async () => {\r\n const customer = props.data.customerInformation.result!;\r\n const customerAttr = customer.Attributes;\r\n const newAttributes = customerAttr?.map(attr => {\r\n let attrValue = attr.AttributeValue;\r\n if (attr.Name === 'Direct Debit') {\r\n const value = attrValue?.StringValue === 'DDRP' ? 'DDCAN' : 'DDRP';\r\n attrValue = { ...attr.AttributeValue, StringValue: value };\r\n }\r\n return { ...attr, AttributeValue: attrValue };\r\n });\r\n\r\n const input = new updateCustomerAttributesInput(customer.AccountNumber, newAttributes || [], props.context.request.apiSettings);\r\n const cancelResponse = await updateCustomerAttributes(input, actionContext).catch();\r\n if (cancelResponse && cancelResponse?.Attributes![3].AttributeValue!.StringValue === 'DDCAN') {\r\n setCanSubCheck(true);\r\n }\r\n };\r\n\r\n const checkRemDays = () => {\r\n const enrollmentDate = props.data.loyaltyCard.result?.LoyaltyGroups![0].LoyaltyCardTiers!.filter(\r\n tier => tier.TierId === 'Club Plus Free Trial'\r\n );\r\n if (enrollmentDate && enrollmentDate.length > 0) {\r\n let validTo: any = enrollmentDate && new Date(enrollmentDate[0].ValidTo);\r\n validTo = new Date(validTo.setDate(validTo.getDate() - 2));\r\n const currentDate: Date = new Date();\r\n currentDate <= validTo ? setIsDisabled(false) : setIsDisabled(true);\r\n\r\n const endDate = new Date(enrollmentDate[0].ValidTo ?? '');\r\n const formattedDate = setDateFormat(endDate.toLocaleDateString('en-GB'));\r\n formattedDate && setLoyaltyExpirydate(formattedDate);\r\n }\r\n };\r\n\r\n const handleLostYourCartRequest = () => {};\r\n\r\n const handleGoBack = () => {\r\n setViewState(ViewStateTypes.Details);\r\n };\r\n\r\n const handleLostYourCard = () => {\r\n setDisplayLostCard(true);\r\n };\r\n\r\n const renderDetails = () => {\r\n const daysLimit = props.context.app.config.clubPlusRenewalDays || 30;\r\n const showRenewMembershipButton =\r\n activeTier === 'Club Plus' && loyaltyRemainingDays <= daysLimit && (customerDDAttribute === 'None' || customerDDAttribute === 'DDCAN');\r\n const { clubRenewalCTA } = props.config;\r\n\r\n return (\r\n
\r\n {heading}\r\n
\r\n
\r\n

{youGotFirstText}

\r\n

\r\n

{totalPoints && totalPoints.toFixed(0)}

\r\n

\r\n

{pointsText}

\r\n
\r\n
\r\n
\r\n \r\n
\r\n {getRemainingPointsMessage(props, totalPoints)}\r\n
\r\n {tierId?.toLowerCase() !== config.clubTierFreeText?.toLowerCase() && (\r\n
\r\n
\r\n \r\n
\r\n {coffeeMembershipError ? (\r\n

{drinksLeftText}

\r\n ) : (\r\n

\r\n {coffeeIntroText} {coffeePerksBalance} {coffeePointsText}\r\n

\r\n )}\r\n
\r\n )}\r\n
\r\n

{myDetailLabel}

\r\n

\r\n {nameLabel} {customerName}\r\n

\r\n

\r\n {cardLabel} {cardNumber}\r\n

\r\n

\r\n {tierLabel} {tierId}\r\n

\r\n {loyaltyExpiryDate && activeTier !== 'Club' && (\r\n

\r\n {membershipExpiryLabel} {loyaltyExpiryDate}\r\n

\r\n )}\r\n

\r\n {homeStoreLabel} {selectedStore}\r\n

\r\n
\r\n {/* /** END -- Conditional renderig of divs */}\r\n
\r\n

{updateInfo}

\r\n \r\n  \r\n \r\n \r\n {showRenewMembershipButton ? _renderLinkButton(clubRenewalCTA, props) : <>}\r\n {_renderLinkButton(updateMyDetailsLink, props)}\r\n {_renderLinkButton(updatedMyAddress, props)}\r\n {/* Remove condition false for displaying cancel button */}\r\n {false &&\r\n showCancelBtn &&\r\n // directDebitAttr?.AttributeValue?.StringValue === 'DDRP' &&\r\n _renderLinkButton(cancelButton, props, () => setViewState(ViewStateTypes.CancelForm))}\r\n {tierId == 'Club Plus Free Trial' &&\r\n (attriVal !== '' && !(attriVal === 'DDCAN') && !canSubCheck ? (\r\n setViewState(ViewStateTypes.CancelForm)}\r\n >\r\n {cancelMembershipBtn}\r\n \r\n ) : (\r\n

{freeTrialCancelledText}

\r\n ))}\r\n
\r\n
\r\n
\r\n

{lostCardLabel}

\r\n
\r\n {/* Hidden Send Detail button */}\r\n setViewState(ViewStateTypes.LostYourCard)}\r\n >\r\n {requestNewCardText}\r\n \r\n {/* VSI-Customization -- START Render request new card link based on tierId */}\r\n {/* {renderRequestNewCardBasedOnTierId(props, tierId, () => setViewState(ViewStateTypes.LostYourCard))} */}\r\n {/* VSI-Customization -- END */}\r\n
\r\n

{displayLostCard ? lostCardSubmittedStatement : downloadAppStatement}

\r\n
\r\n \r\n App Store\r\n \r\n \r\n Google Play\r\n \r\n
\r\n
\r\n {tierId && tierId.toLowerCase() === config.clubTierFreeText?.toLowerCase() ? (\r\n
\r\n

{makeRoomLabel}

\r\n

{moreLabel}

\r\n

{upgradeLabel}

\r\n \r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const renderCurrentView = () => {\r\n switch (viewState) {\r\n case ViewStateTypes.Details:\r\n return renderDetails();\r\n case ViewStateTypes.CancelForm:\r\n return (\r\n tier.TierId === 'Club Plus Free Trial')[0]\r\n .ValidTo.toString() || ''\r\n }\r\n config={props.config}\r\n />\r\n );\r\n case ViewStateTypes.LostYourCard:\r\n return (\r\n \r\n );\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n \r\n {renderCurrentView()}\r\n \r\n );\r\n};\r\n// Following function gets account loyalty account\r\n// @ts-ignore\r\nexport const _getLoyaltyInfo = async (\r\n actionContext: Msdyn365.IActionContext,\r\n customerCardNo: string,\r\n programId: number,\r\n rewardId: number,\r\n availableRewardId: number,\r\n extraAvailableRewardID: number,\r\n setCoffeePerksBalance: React.Dispatch>,\r\n setCoffeeMembershipError: React.Dispatch>\r\n) => {\r\n try {\r\n const customerRewardsInfo = await vSIInitiateRestCallAsync(\r\n { callerContext: actionContext },\r\n 'Zonal',\r\n 'get',\r\n \"{'cache-control':'no-cache', 'Accept':'application/json'}\",\r\n '',\r\n '',\r\n `/v1/api/programs/${programId}/rewards`\r\n );\r\n let coffeeRewardInfo: ICustomerRewardsInfo | undefined;\r\n let extraCoffeeRewardInfo: ICustomerRewardsInfo | undefined;\r\n if (customerRewardsInfo.result) {\r\n const rewardsInfo: ICustomerRewardsInfo[] = JSON.parse(customerRewardsInfo.result);\r\n coffeeRewardInfo = rewardsInfo.find(reward => reward.Id === rewardId);\r\n extraCoffeeRewardInfo = rewardsInfo.find(reward => reward.Id === extraAvailableRewardID);\r\n if (coffeeRewardInfo?.Status === 'Enabled') {\r\n const customerLoyaltyInfo = await vSIInitiateRestCallAsync(\r\n { callerContext: actionContext },\r\n 'Zonal',\r\n 'get',\r\n \"{'cache-control':'no-cache', 'Accept':'application/json'}\",\r\n '',\r\n '',\r\n `v1/api/programs/${programId}/accounts/${customerCardNo}`\r\n );\r\n if (customerLoyaltyInfo.result) {\r\n const responseError: IErrorMessage = JSON.parse(customerLoyaltyInfo.result);\r\n if (\r\n (responseError.StatusCode && responseError.StatusCode === 404) ||\r\n (responseError.message && responseError.message.length > 0)\r\n ) {\r\n // Error in getting token\r\n setCoffeeMembershipError(true);\r\n console.log('error in getting token');\r\n // this.setState({ submissionErrorMsg: submissionErrorMessage, submissionSuccessMsg: undefined });\r\n return;\r\n } else {\r\n const customerRewards: ILoyaltyAccount = JSON.parse(customerLoyaltyInfo.result);\r\n\r\n // const coffeePerksReward = customerRewards.AvailableRewards.find(reward => reward.Id === 1532); // do not show this reward , only recurringrewardShow.\r\n const coffeePerksRecurringReward = customerRewards.AvailableRewards.find(reward => reward.Id === availableRewardId);\r\n const extraCoffeePerksReward = customerRewards.AvailableRewards.find(\r\n reward => reward.Id === extraAvailableRewardID\r\n );\r\n\r\n const extraCoffeePerksRewardQuantity = extraCoffeePerksReward?.ItemQuantityAvailable ?? 0;\r\n\r\n //const coffeePerkQuantity = coffeePerksReward?.ItemQuantityAvailable ?? 0;\r\n let coffeePerkRecurringQuantity = coffeePerksRecurringReward?.ItemQuantityAvailable ?? 0;\r\n if (extraCoffeeRewardInfo?.Status === 'Enabled') {\r\n coffeePerkRecurringQuantity = coffeePerkRecurringQuantity + extraCoffeePerksRewardQuantity;\r\n }\r\n setCoffeePerksBalance(coffeePerkRecurringQuantity);\r\n return;\r\n }\r\n }\r\n } else {\r\n setCoffeePerksBalance(0);\r\n }\r\n }\r\n } catch (err) {\r\n setCoffeeMembershipError(true);\r\n console.log(err);\r\n }\r\n};\r\n\r\n// Customer\r\n\r\nconst _renderLinkButton = (\r\n link: IUpdateMyDetailsLinkData | IUpdatedMyAddressData | IClubRenewalCTAData | undefined,\r\n props: IAccountLoyaltyViewProps & IAccountLoyaltyProps,\r\n onCancel?: () => void\r\n) => {\r\n if (!link) {\r\n return null;\r\n }\r\n\r\n if (link.linkUrl.destinationUrl === '/dobbies/cancel') {\r\n return (\r\n \r\n );\r\n }\r\n const linkData: Msdyn365.ILinksData = {\r\n ariaLabel: link.ariaLabel,\r\n className: 'cta__btn',\r\n linkText: link.linkText,\r\n linkUrl: link.linkUrl.destinationUrl,\r\n openInNewTab: link.openInNewTab,\r\n role: 'button'\r\n };\r\n return ;\r\n};\r\n\r\nconst getTierId = (props: IAccountLoyaltyViewProps & IAccountLoyaltyProps) => {\r\n const loyaltyGroup = props.data.loyaltyCard.result?.LoyaltyGroups && props.data.loyaltyCard.result?.LoyaltyGroups[0];\r\n // highestLoyaltCardTier\r\n const highestActiveLoyaltyCardTier = loyaltyGroup && loyaltyGroup.HighestActiveLoyaltyCardTier;\r\n const loyaltyCardTiers = loyaltyGroup && loyaltyGroup.LoyaltyCardTiers;\r\n // Get TierId based on the active cardTier\r\n if (loyaltyCardTiers && loyaltyCardTiers?.length > 0) {\r\n for (const [_, loyaltyCardTier] of loyaltyCardTiers.entries()) {\r\n if (loyaltyCardTier.RecordId === highestActiveLoyaltyCardTier) {\r\n return loyaltyCardTier.TierId;\r\n }\r\n }\r\n }\r\n return;\r\n};\r\n\r\nconst getRemainingPointsMessage = (props: IAccountLoyaltyViewProps & IAccountLoyaltyProps, clientPoints: number) => {\r\n const { collectText, collectPointsText } = props.resources;\r\n const totalPointsQuota = props.config.totalPointsToGetVoucher || 150;\r\n const threshold = props.config.pointsThreshold || 50;\r\n const pointValue = props.config.pointValue || 0.5;\r\n const earnedPoints = clientPoints;\r\n\r\n // First calculate voucher value for one point\r\n const voucherForOnePoint = pointValue / threshold;\r\n /* The point calculation here is as following:\r\n * 150pts = £1.50 voucher\r\n * 200pts = £2 voucher\r\n * Each following 50pts adds £0.50 to their voucher. */\r\n\r\n if (earnedPoints < totalPointsQuota) {\r\n // user has less points than to get voucher\r\n // Now multiplies it by totalPointsQuota (total more points to be earned) to get voucher price and format its currency\r\n const voucherPrice = props.context.cultureFormatter.formatCurrency(voucherForOnePoint * totalPointsQuota, props.context.request.channel?.Currency);\r\n return (\r\n

\r\n {collectText} {totalPointsQuota - earnedPoints} {collectPointsText}\r\n {voucherPrice}\r\n

\r\n );\r\n } else if (earnedPoints >= totalPointsQuota) {\r\n // user has more points than minimum points required\r\n const remainder = earnedPoints % threshold;\r\n // Get value of the next voucher points issuing level from earnedPoints e.g. 200 is that value from 220 as 50 is multiple of 200\r\n let nextVoucherPoints = earnedPoints - remainder;\r\n // points needed to get to next voucher level\r\n nextVoucherPoints += threshold;\r\n // points needed for next voucher\r\n const pointsToCollect = threshold - remainder;\r\n\r\n // Now multiplies it by totalPointsQuota (total more points to be earned) to get voucher price and format its currency\r\n const voucherPrice = props.context.cultureFormatter.formatCurrency(voucherForOnePoint * nextVoucherPoints, props.context.request.channel?.Currency);\r\n return (\r\n

\r\n {collectText} {pointsToCollect} {collectPointsText} {voucherPrice}\r\n

\r\n );\r\n }\r\n return;\r\n};\r\n\r\nexport default AccountLoyaltyView;\r\n"],"names":["VSIRestAPIHandlerExtensionClass","constructor","odataObject","this","Id","result","ExtensionProperties","undefined","i","length","className","substr","lastIndexOf","concat","EntityClasses","createVSIInitiateRestCallInput","targetSystem","methodType","requestHeader","requestBody","urlParams","servicePath","id","key","DataServiceQuery","DataServiceEntities","vSIGetAPIResponseQuery","createDataServiceRequestForOperation","bypassCache","returnEntity","vSIInitiateRestCallAsync","context","request","callActionOrExecute","callerContext","setDateFormat","originalDate","dateComponents","split","slice","props","resources","requestNewCardHeading","lostYourCardDescriptionText","proceedText","cancelText","requestReceivedText","requestReceivedHeading","lostCardLabel","onCancel","onSubmit","disableCardBtn","tierId","clubImage","clubPlusImage","isSubmitted","React","currentHeading","currentDescription","currentButtons","onClick","handleSubmit","async","userToken","axios","method","url","apiSettings","baseUrl","data","CardNumber","cardNumber","headers","OUN","oun","Authorization","then","res","_props$data","customer","customerInformation","customerAttr","Attributes","newAttributes","map","attr","attrValue","AttributeValue","Name","value","Date","_objectSpread","StringValue","input","updateCustomerAttributesInput","AccountNumber","updateCustomerAttributes","actionContext","response","catch","err","console","log","replaceCard","imgSrc","toLowerCase","src","alt","clubBenefitsHeading","clubplusSubheading","clubSubheading","clubBenefit1","clubBenefit2","clubBenefit3","clubBenefit4","clubBenefit5","clubBenefit6","clubBenefit7","clubPlusPoints","clubPlusCostText","clubCost","continueMembershipBtn","cancelMembershipBtn","homeButtonLabel","expireDate","config","showMessage","setShowMessage","membershipexpireLabel","_config$cardExpireLab","cardExpireLabelDecription","replace","date","d","String","getDate","padStart","getMonth","getFullYear","formatDate","href","cancelFormHeading","cancelFormDescription","clubPlusCostValue","renderMessage","ViewStateTypes","_getLoyaltyInfo","customerCardNo","programId","rewardId","availableRewardId","extraAvailableRewardID","setCoffeePerksBalance","setCoffeeMembershipError","customerRewardsInfo","coffeeRewardInfo","extraCoffeeRewardInfo","_coffeeRewardInfo","rewardsInfo","JSON","parse","find","reward","Status","customerLoyaltyInfo","responseError","StatusCode","message","_extraCoffeePerksRewa","_coffeePerksRecurring","_extraCoffeeRewardInf","customerRewards","coffeePerksRecurringReward","AvailableRewards","extraCoffeePerksReward","extraCoffeePerksRewardQuantity","ItemQuantityAvailable","coffeePerkRecurringQuantity","_renderLinkButton","link","linkUrl","destinationUrl","ariaLabel","linkText","linkData","openInNewTab","role","Msdyn365","editProps","requestContext","getTierId","_props$data$loyaltyCa9","_props$data$loyaltyCa10","loyaltyGroup","loyaltyCard","LoyaltyGroups","highestActiveLoyaltyCardTier","HighestActiveLoyaltyCardTier","loyaltyCardTiers","LoyaltyCardTiers","_","loyaltyCardTier","entries","RecordId","TierId","getRemainingPointsMessage","clientPoints","collectText","collectPointsText","totalPointsQuota","totalPointsToGetVoucher","threshold","pointsThreshold","earnedPoints","voucherForOnePoint","pointValue","_props$context$reques","voucherPrice","cultureFormatter","formatCurrency","channel","Currency","_props$context$reques2","remainder","nextVoucherPoints","pointsToCollect","_config$clubTierFreeT","_config$clubTierPlusT","_config$premiumClubPl","_props$data$customerI","_props$data$customerI2","_localStore$Attribute","_props$data$loyaltyCa3","AccountLoyalty","heading","totalPoints","downloadAppStatement","updateInfo","freeTrialCancelledText","myDetailLabel","makeRoomLabel","moreLabel","upgradeLabel","homeStoreLabel","membershipExpiryLabel","lostCardSubmittedStatement","pointsText","youGotFirstText","nameLabel","cardLabel","tierLabel","coffeeIntroText","coffeePointsText","drinksLeftText","requestNewCardText","localStoreAttribute","coffeePerksBalance","useState","viewState","setViewState","Details","activeTier","setActiveTier","loyaltyExpiryDate","setLoyaltyExpirydate","customerDDAttribute","setcustomerDDAttribute","loyaltyRemainingDays","setLoyaltyRemainingDays","coffeeMembershipError","displayLostCard","setDisplayLostCard","isDisabled","setIsDisabled","attriVal","setAttriVal","canSubCheck","setCanSubCheck","user","isAuthenticated","signinURL","signInUrl","window","location","assign","useEffect","_props$data$loyaltyCa","programID","rewardID","availableRewardID","error","_props$data$loyaltyCa2","loyaltGroups","_loyaltGroups$Loyalty","activatedTier","card","loyaltyGroupTier","tier","validToDate","ValidTo","endDate","today","timeDifference","getTime","remainingDays","Math","ceil","formattedDate","toLocaleDateString","getCustomerDDAttribute","lostCardDate","checkRemDays","loyaltyClass","clubTierFreeText","clubTierPlusText","premiumClubPlusTierText","customerName","localStore","x","_x$Name","updateMyDetailsLink","updatedMyAddress","cancelButton","selectedStore","showCancelBtn","_props$data$loyaltyCa4","_props$data$loyaltyCa5","_customer$Attributes","filter","_customerAttr$0$Attri","handleCancelMembership","_attrValue","cancelResponse","_props$data$loyaltyCa6","enrollmentDate","_enrollmentDate$0$Val","validTo","setDate","currentDate","handleLostYourCartRequest","handleGoBack","handleLostYourCard","Module","Object","renderCurrentView","_props$data$loyaltyCa7","_props$data$loyaltyCa8","_props$config$clubCar","_props$config$clubPlu","renderDetails","_config$clubTierFreeT2","_config$clubTierFreeT3","_props$config$upgrade","_props$config$upgrade2","daysLimit","app","clubPlusRenewalDays","showRenewMembershipButton","clubRenewalCTA","toFixed","Node","tag","disabled","CancelForm","LostYourCard","title","target","upgradeNow","CancelMembership","toString","token","clubCardImage","clubPlusCardImage"],"sourceRoot":""}