{"version":3,"sources":["reducers/reducerAuthenticationToken.js","actions/actionAuthentication.js","helpers/chartjs.js","helpers/genfunction.js","helpers/CouponManager.js","helpers/formerrorstate.js","helpers/formfields.js","helpers/UDFs.js","actions/actionBookingTypes.js","helpers/sessionStorage.js","reducers/reducerBookingTypes.js","actions/actionAppLoader.js","reducers/reducerAppLoader.js","actions/actionShopCart.js","reducers/reducerShopCart.js","actions/actionExtraItems.js","reducers/reducerExtraItems.js","actions/actionMember.js","reducers/reducerMember.js","actions/actionPaymentTransaction.js","reducers/reducerPaymentTransaction.js","actions/actionIP.js","reducers/reducerIP.js","actions/actionCalendarNavBar.js","reducers/reducerCalendarView.js","actions/actionCardDiscardTime.js","reducers/reducerCardDiscardTime.js","actions/actionDisplayAreas.js","reducers/reducerDisplayAreas.js","actions/actionCoupon.js","reducers/reducerCoupon.js","reducers/reducerTourProduct.js","actions/actionTourProduct.js","actions/actionGiftCardHold.js","reducers/reducerGiftCardHold.js","actions/actionUniqueCouponHolds.js","reducers/reducerUniqueCouponHolds.js","actions/actionMemberValidation.js","reducers/reducerMemberValidation.js","actions/actionFormError.js","reducers/reducerFormError.js","actions/actionDonation.js","reducers/reducerDonation.js","actions/actionTransactionFee.js","reducers/reducerTransactionFee.js","actions/actionMembershipPackages.js","reducers/reducerMembershipPackages.js","actions/actionGATicket.js","reducers/reducerGaTicket.js","actions/actionLostMember.js","reducers/reducerLostMember.js","reducers/reducerMemberMemberships.js","actions/actionMemberMemberships.js","actions/actionCustomer.js","reducers/reducerCustomer.js","actions/actionBooking.js","reducers/reducerBooking.js","reducers/reducerGiftCardDisplayAreas.js","actions/actionGiftCardDisplayAreas.js","actions/actionGiftCards.js","reducers/reducerGiftCards.js","actions/actionCostRate.js","reducers/reducerCostRate.js","actions/actionIDMeUserData.js","reducers/reducerIDMeUserData.js","actions/actionBookingUserDefinedFields.js","reducers/reducerBookingUserDefinedFields.js","actions/actionOrderLocations.js","reducers/reducerOrderLocations.js","actions/actionOrdersMenu.js","reducers/reducerOrderMenu.js","actions/actionMembershipUserDefinedFeilds.js","reducers/reducerMembershipUserDefinedFields.js","actions/actionCustomerUDFs.js","reducers/reducerCustomerUDFs.js","actions/actionCountryAndState.js","reducers/reducerCountryAndState.js","actions/actionOrganizationSection.js","reducers/reducerOrganizationSection.js","reducers/reducerProduct.js","actions/actionProduct.js","actions/actionRecaptcha.js","reducers/reducerRecaptcha.js","actions/actionGlobal.js","helpers/userIdentifier.js","reducers/reducerGlobal.js","actions/actionCustomerAddresses.js","reducers/reducerCustomerAddresses.js","reducers/index.js","api/constants.js","api/apiAuthentication.js","saga/sagaAuthenticationToken.js","api/apiBooking.js","api/apiBookingTypes.js","api/apiCostRate.js","api/apiCustomer.js","helpers/AES.js","api/API.js","api/apiCustomerUDFs.js","api/apiDonation.js","api/apiDisplayAreas.js","api/apiExtraItems.js","api/apiCouponV3.js","api/apiGATicket.js","api/apiGiftCards.js","api/apiGiftCardHold.js","api/apiOrderLocations.js","api/apiProducts.js","api/apiIDMeUserData.js","api/apiLostMember.js","api/apiMember.js","api/apiMemberMemberships.js","api/apiMembershipPackages.js","api/apiMemberValidation.js","api/apiTourHold.js","api/apiTransaction.js","api/apiTourProduct.js","api/apiTransactionFee.js","api/apiUniqueCouponHolds.js","api/apiUserDefinedFields.js","api/apiCountryAndState.js","api/apiOrganizationSection.js","api/apiBookingTickets.js","api/apiRecaptcha.js","api/apiCustomerAddresses.js","saga/sagaBookingTypes.js","saga/sagaExtraItems.js","saga/sagaMember.js","saga/sagaPaymentTransaction.js","api/ip.js","saga/sagaIP.js","saga/sagaDisplayAreas.js","saga/sagaShopCart.js","saga/sagaGiftCardHold.js","saga/sagaCoupon.js","saga/sagaUniqueCouponHolds.js","saga/sagaMemberValidation.js","saga/sagaDonation.js","saga/sagaTransactionFee.js","saga/sagaMembershipPackages.js","saga/sagaGaTicket.js","saga/sagaLostMember.js","saga/sagaMemberMemberships.js","saga/sagaCustomer.js","saga/sagaBooking.js","saga/sagaGiftcarddisplayAreas.js","saga/sagaGiftcards.js","saga/sagaCostRate.js","saga/sagaIdMeUserData.js","saga/sagaBookingUserDefinedFields.js","saga/sagaOrderLocations.js","saga/sagaOrderMenu.js","saga/sagaMembershipUserDefinedFields.js","saga/sagaCustomerUDFs.js","saga/sagaCountryAndState.js","saga/sagaOrganizationSection.js","saga/sagaProduct.js","saga/sagaRecaptcha.js","saga/sagaCustomerAddresses.js","saga/index.js","serviceWorker.js","theme/palette.js","theme/typography.js","theme/overrides/index.js","theme/overrides/MuiButton.js","theme/overrides/MuiIconButton.js","theme/overrides/MuiPaper.js","theme/overrides/MuiTableCell.js","theme/overrides/MuiTableHead.js","theme/overrides/MuiTypography.js","theme/overrides/MuiCssBaseline.js","theme/index.js","common/validators.js","components/SearchInput/SearchInput.js","components/StatusBullet/StatusBullet.js","components/RouteWithLayout/RouteWithLayout.js","components/DialogeBox/DialogeBox.js","components/DialogeBox/PinCodeDialogeBox.js","components/ErrorHandling/ErrorHandling.js","components/InputControls/NumberSpinner.js","components/InputControls/FormattedInputs.js","components/InputControls/UDFText.js","components/InputControls/UDFCheckBox.js","components/InputControls/UDFDateTime.js","components/InputControls/UDFNumber.js","components/InputControls/UDFSelect.js","components/InputControls/NumberInput.js","components/DisplayCards/DisplayCard.js","components/Title/Title.js","layouts/Main/components/Sidebar/components/Profile/Profile.js","layouts/Main/components/Sidebar/components/SidebarNav/SidebarNav.js","layouts/Main/components/Sidebar/components/UpgradePlan/UpgradePlan.js","layouts/Main/components/Sidebar/Sidebar.js","helpers/CartDiscardTimeController.js","helpers/VersionCheck.js","layouts/Main/components/Topbar/Topbar.js","layouts/Main/Main.js","layouts/Minimal/components/Topbar/Topbar.js","layouts/Minimal/Minimal.js","views/Account/components/AccountDetails/AccountDetails.js","views/Account/components/AccountProfile/AccountProfile.js","views/Account/Account.js","components/CalendarControls/CalendarNavBar.js","components/CalendarControls/ExtraItemsProducts.js","components/CalendarControls/UDFDataField.js","components/CalendarControls/BookingUDFields.js","components/CalendarControls/Chaperone.js","components/CalendarControls/PaymentSelection.js","components/CalendarControls/ExtraItemDrawer.js","components/CalendarControls/OrganizationSection.js","components/CalendarControls/GroupSizeSection.js","components/CalendarControls/GroupReservationDrawer.js","components/CalendarControls/CalendarControl.js","components/DateSearch/DateSearch.js","components/CalendarControls/CalendarListView.js","components/CalendarControls/CalendarHybridView.js","views/Calendar/Calendar.js","views/Dashboard/components/Budget/Budget.js","views/Dashboard/components/LatestOrders/data.js","views/Dashboard/components/LatestOrders/LatestOrders.js","views/Dashboard/components/LatestProducts/data.js","views/Dashboard/components/LatestProducts/LatestProducts.js","views/Dashboard/components/LatestSales/chart.js","views/Dashboard/components/LatestSales/LatestSales.js","views/Dashboard/components/TasksProgress/TasksProgress.js","views/Dashboard/components/TotalProfit/TotalProfit.js","views/Dashboard/components/TotalUsers/TotalUsers.js","views/Dashboard/components/UsersByDevice/UsersByDevice.js","views/Dashboard/Dashboard.js","views/Icons/Icons.js","views/NotFound/NotFound.js","views/ProductList/components/ProductCard/ProductCard.js","views/ProductList/ProductList.js","views/Settings/components/Notifications/Notifications.js","views/Settings/components/Password/Password.js","views/Settings/Settings.js","views/Typography/Typography.js","views/UserList/components/UsersTable/UsersTable.js","helpers/getInitials.js","views/UserList/components/UsersToolbar/UsersToolbar.js","views/UserList/data.js","views/UserList/UserList.js","views/Checkout/components/BookingTypeCard.js","views/Checkout/components/CouponItems.js","views/Checkout/components/PayableCard.js","views/Checkout/components/ProcessingBox.js","views/Checkout/components/PaymentCompletebox.js","views/Checkout/components/FreeTicketForm.js","components/Payments/Spreedly.js","views/Checkout/components/MultiPayments.js","components/Payments/GlobalPayments.js","components/Payments/Helper.js","components/Payments/Payments.js","views/Checkout/components/PaymentForm.js","views/Checkout/components/CouponGiftCard.js","views/Checkout/components/CartDiscardTimeInfo.js","views/Checkout/components/DonationPopUp.js","views/Checkout/components/Donations.js","views/Checkout/components/MembershipPackagesCard.js","views/Checkout/components/GATicketCard.js","views/Checkout/components/GiftCards.js","views/Checkout/components/OrderItemsCard.js","views/Checkout/components/DonationProductCard.js","views/Checkout/Checkout.js","views/Checkout/formstates.js","views/Memberships/components/MembershipCard/MembershipCard.js","views/Memberships/MembershipList.js","views/MembershipsMain/components/MembershipHeader.js","components/UDFs/MembershipUDF.js","views/MembershipsMain/components/MembershipTypes.js","views/MembershipsMain/Memberships.js","views/MembershipsMain/MemberValidation.js","views/GATicket/components/GAGroupItem.js","views/GATicket/GATickets.js","views/ManageMyBooking/FindMyBooking.js","views/ManageMyBooking/ManageBooking.js","views/ManageMyBooking/ConfimBookingChanges.js","views/ManageCheckout/components/CreditCardPayment.js","views/Checkout/components/PayableCardMMB.js","views/ManageCheckout/components/MakePayment.js","views/ManageCheckout/components/PaymentCompletePage.js","views/ManageCheckout/ManageCheckout.js","views/ManageMyBooking/ModifyTicketsAddons.js","views/GiftCards/components/GiftCardAreaCard/GiftCardAreaCard.js","views/GiftCards/components/MainGiftCards/MainGiftCards.js","views/GiftCards/GiftCardsAreasList.js","views/FoodOrder/components/OrderLocationItem.js","views/FoodOrder/OrderLocationScreen.js","views/FoodOrder/OrderLocationTab.js","views/FoodOrder/components/MenuItem.js","views/FoodOrder/OrderMenu.js","views/FoodOrder/components/OrderProduct.js","views/FoodOrder/components/SubMenuItem.js","views/FoodOrder/OrderSubMenu.js","views/FoodOrder/OrderItemsReview.js","views/Donation/components/DonationProduct.js","views/Donation/DonationProducts.js","views/Donation/DonationAreas.js","Routes.js","components/Apploaders/Apploader.js","App.js","index.js"],"names":["initialState","token","loading","authenticationError","reducerAuthenticationToken","state","action","type","error","draw","left","right","top","bottom","signX","signY","borderSkipped","radius","ctx","this","_chart","vm","_view","borderWidth","cornerRadius","config","options","horizontal","base","x","y","height","width","barSize","Math","min","abs","halfStroke","borderLeft","borderRight","borderTop","borderBottom","beginPath","fillStyle","backgroundColor","strokeStyle","borderColor","lineWidth","corners","startCorner","indexOf","cornerAt","index","corner","moveTo","i","nextCornerId","floor","xTl","xTr","yTl","yTr","xBl","xBr","yBl","yBr","lineTo","quadraticCurveTo","fill","stroke","window","nodeNo","PaymentTypeID","CashlessTypeID","GiftCardTypeID","TransactionUserName","DonationProductID","TransactionFeeProductID","ApplyTransactionFee","Currency","ShowOrderItemPriceAs","EnableAlternateMerchantOnline","Merchant2TypeID","StreetAddressTypeID","UseFamilyJoinDateOnMembershipPackageEarlyRenewal","GetMonths","GetYears","numberofyears","years","currentyear","Date","getFullYear","push","ccyFormat","num","toFixed","priceRow","qty","unit","subproducttotal","products","cashless","donation","transactionfee","membershipPackages","gatickets","giftcards","orderProducts","donationProducts","totalDiscount","transFee","membershipPackTotal","map","product","CouponItems","e","TotalAmount","producttotal","GetProductsTotalPrice","total","gaticketstotal","reduce","sum","cashlesstotal","HoldAmount","giftcardstotal","CartTotalAmount","orderProductsTotal","getOrderProductsTotalPrice","donationProductsTotal","Amount","isdonationApplied","parseFloat","price","length","MembershipProducts","m","CouponCodeApplied","MembershipType","Quantity","CouponCodeIncTax","Users","u","hasOwnProperty","Price","PriceIsAPercentage","round","Taxes","TaxIncluded","ApplyTransactionFeeTax","calculateeventsamount","events","forEach","event","TicketAmount","TaxAmount","TourProducts","PriceMatrix","itemp","itemtax","itemTAmount","tax","TaxPercentage","IndividualPrice","ProductAmount","ProductTaxAmount","ProductTotalAmount","convertEventstoTransaction","customerId","transactionFee","isManageBooking","booking","managebkngTicketsModify","refundType","additionalPayment","bookingUDFS","showTransFee","enteredAmountToPay","transactions","trans","TransactionType","NodeNo","CustomerID","Username","Products","Payments","totalAmount","merchant1Total","merchant2Total","BookingProducts","newp","MMBReturnProduct","ReturnCouponAppliedQty","BookingStatus","BookingCoupons","filter","TourProductID","couponProd","find","TimesUsed","MMBReturnUniqueCoupinNonItems","CancelBooking","newQuantity","GetMMBModifyProduct","prevTourEventID","ProductLineNo","ProductID","LinePriceExTax","LinePriceTax","LinePriceIncTax","LinePaidExTax","genfunction","IsNotFullPay","PaymentOption","ProductSelectedAmount","LinePaidTax","ProductSelectedTaxAmount","LinePaidIncTax","ProductSelectedTotalAmount","TourEventID","CostRateID","TourHoldRef","FindCouponCode","BookingID","AddBookingUDFs","BookingTypeID","FindUniqueCoupon","UpdateUniqueCouponProduct","coupon","prod","Object","assign","isUniqueCoupon","ProdQuantity","Discount","isPercentage","AddUniqueCouponItem","CouponHoldRef","ApplyDiscountTourProductID","TourProductName","ApplyDiscountTourProductName","ApplyDiscountProductID","TicketTax","tickets","ProductNotes","PriceExTax","PriceTax","PriceIncTax","Options","option","IsSelected","optionProduct","newop","donationProd","transTax","Rounded","GetTransactionFeeForPartialPayment","GetTransactionFee","transFeeProd","primaryMemberStartDate","memPack","startDate","isRenewal","isPrimaryMember","MembershipExpiryDate","Moment","format","setDate","getDate","trim","memProd","SubTotal","TotalTax","MembershipPackageID","MembershipStartDate","GetMembershipExpiryDate","MembershipDuration","toLowerCase","MemberCustomerID","userNo","IsRenewal","RenewedUniquePackageRef","UniquePackageRef","PriceAfterCoupon","TaxAfterCoupon","TotalAmountAfterCoupon","CouponDiscountExTax","CouponCodeExTax","CouponDiscountTax","CouponCodeTax","CouponDiscountIncTax","undefined","ExtraMonths","ExtraDays","isRenewPackage","LastMembershipExpiryDate","paymentLineNo","isUseAlternateMerchant","UseAlternateMerchant","merchantTotalObj","CalculateMultiMerchantTotalForMMB","CalculateMultiMerchantTotal","totalPaid","BookingPayments","PaymentAmount","amount","giftcardProd","transFeeWithTax","additionalPaymentWithoutTransactionFee","addpayment","AddCashlessAndAdditionalPayment","AddedToCart","gc","CartQty","payment","PaymentLineNo","CreditCardToken","CreditCardType","cardtype","CreditCardReference","CreditCardMaskedNumber","cardnumber","paymentAmount","item","GiftcardNumber","GiftcardNo","GiftcardHoldRef","additionalPay","GetRandomGiftCard","randomChars","result","charAt","random","eventID","c","prodID","prodQuantity","UniqueCouponCode","CouponCode","GetTotalAmount","totalInclTax","totalExclTax","totalTax","Product","GetProdsTotalAmount","UpdateEvent","ExistingEvents","NewEvent","IsEditEvent","existEevent","E","pQty","parseInt","GetUpdateClient","oldclient","newclient","FirstName","LastName","CustomerAddress","AddressID","Email","Street1","Street2","CitySuburb","State","Postcode","Country","GetEventDate","eventDate","GetEventDateReceiptFormat","AppendEndTime","GetEventDateReceiptFormatwithoutTime","GetTransactionDate","tranDate","GetShortDateAndTime","AddToDateDate","calendarDate","new_date","add","day","month","ListViewSearchDays","searchDays","date","nextDate","EventEndDateTime","max","value","paddingchar","numofcharshown","toString","padStart","input","charCode","str","output","block","charCodeAt","console","log","cartevent","newevent","isEditEvent","tourholds","tourevent","tourhold","TourHolds","newProductQuantity","p","tourproduct","Seats","toureventobj","te","tp","toureventId","tourProductID","quantity","giftcardno","totalamount","sortedcashless","sort","a","b","BalanceRemaining","lastupdateflag","giftcardtotalamount","giftCardNo","slice","couponItems","eventId","oldCashlessarray","updatedCashless","newcashless","oldCashless","old","itemValue","split","join","EventStartDateTime","eventsCollection","costrate","extraitems","DefaultCostRateID","OrganizationID","GetPriceMatrix","toureventid","costRateID","GetEvent","memberValidation","curentemail","emailMatch","phoneMatch","addressMatch","EmailMatched","EmailOnFile","PhoneMatched","AddressMatched","membershipValidation","bookingTypes","bt","tFee","itemAmount","datetime","year","membershipPackage","membershipProducts","MemPackTotals","TaxTotal","MinQuantity","iterations","memType","customerReq","customerObj","customerAddresses","customersList","cstCollection","customerList","customerRequest","objCst","customer","DateOfBirth","dob","client","firstName","lastName","GetSecondaryUserAddressID","email","phone","LinkedIndividuals","linkedMember","user","memPackID","memProdID","userID","noOfYears","setFullYear","datediff","noDiff","expiryDate","includes","transaction","customerResponse","priMember","cst","ticket","OriginalTicketAmount","OriginalTaxAmount","OriginalTotalAmount","originalitemp","OriginalPrice","originalitemtax","originalitemTAmount","memberMemberships","memberType","MembershipTypeID","propertyName","obj","val","membermemberships","memberpackageDetails","userslist","memMemberships","primaryMemberType","Memberships","IsCancelled","IsRenewed","GetPrimaryMemberMembershipType","popupTitle","GetValueIfObjectHasProperty","address1","address2","city","zipcode","country","MemberNumber","isEdit","membershipTypeID","membershipTypeName","ProductName","PreviousMembershipType","notpartofPackage","userSelectedFromDropdown","mem","linkedUser","MobilePhone","previousMembershipType","mp","membershipPackageProds","membershipCoupon","couponCode","membershipTypeDiscount","MembershipTypes","memTotalTax","memSubTotal","DollarDiscountIncTax","DollarDiscountExTax","DollarDiscountTax","PercentageDiscount","NoFinancialDis","ProductLinePriceExclTax","ProductLineTaxTax","ProductLinePriceInclTax","actualQty","remainingQty","prodLinePriceExTax","prodLineLinePriceTax","prodLineIncTax","returnRemainingnUniProds","LineExTax","LineTax","LineIncTax","ExTaxandTax","bkngID","bookingUDFs","bkngUdfs","UDFCategories","udfCategories","UserDefinedFields","toureventID","Value","UDF","UDFType","userdefine","UDFName","BookingUDFs","every","IsRequired","foodproducts","subtotal","pPriceIncTax","pOptionPriceIncTax","pPriceExTax","pOptionPriceExTax","pPriceTax","pOptionPriceTax","coupons","membershipID","MembershipPackages","membershippackage","donations","totalObj","prods","UseAlternateMerchantOnline","TransactionFee","paymentOption","amountSelected","TotalSelectedAmount","TicketSelectedAmount","TaxSelectedAmount","MinDepositPercent","remainingAmount","itemTotalAmount","bookType","IsShowPartPaymentSelection","ShowTourProductsBasedOnGroupSize","findIndex","bkngType","groupSize","isShowPartPaymentSelection","AvailableOnline","ChaperoneTourProductID","IsNotNullOrEmptyOrUndefined","AffectsCapacity","LimitDisplayOnGroupSize","GroupSize","tourEventID","chaperoneTourProductID","MinDeposit","MinimumDepositCalculation","OtherAmount","CalculateEventFlexibleAmount","bookingTickets","ProcessType","Tickets","BookingReadyToTicket","UnitPriceIncTax","TicketLineNo","UnitPriceExTax","UnitPriceTax","countryandstates","columnName","IsObjectNotNullOrEmptyOrUndefined","TransactionFeeForPartialPayment","memberpackageDetail","count","primaryMemberMembership","addressID","userAdd","AddressTypeID","primaryMemberRenewStartDate","ApplyCouponsToEvents","couponAlreadyApply","applyDisProdID","ApplyDiscountToTourProductID","tourProd","RequireUniqueCouponCode","MaxProductsLimit","CouponID","SortProductsPriceWise","couponObj","IsNullOrUndefineReturnZero","DollarDiscount","CouponManager","CalculateTicketOddQuantities","CalculateDollarTicketPrice","CalculateTaxOddQuantities","CalculateDollarTicketTax","OnePennyDifference","itemIndex","RemoveUniqueCouponNotApplied","remove","CalcuateCouponDiscounts","ExTaxAmount","DollarPercent","ApplyQty","UniqueCouponPostRequest","bookingCoupons","holdReq","eventProdsTotal","MaxProductsPerPurchase","MaxTransactionsPerCoupon","UniqueCouponHolds","UniqueCoupon","HoldsRequested","ExProductsTotal","ProdQuantities","ExTaxTotal","RemoveProductItem","newevents","productID","RemoveUnusedCoupon","newcouponTours","Accessable","UpdateMaxProductLimit","prodCoupon","eventProducts","initialerrorstate","first_name","errorstate","errortext","last_name","number","cvv","phone_number","zip","memberno","MonthSelect","YearSelect","shipping_address1","shipping_address2","shipping_phone_number","shipping_city","shipping_state","shipping_zip","shipping_country","MonthAndYear","initialfieldsstate","checkBoxMember","billingAddressSame","GetCustomersListToUpdateUDFs","membershipTypesUDFs","CustomerUDFsCollection","GenerateCustomerUDFs","memTypeID","customerUdfObj","udfCategorey","udf","udfUser","udfObj","userUDFValue","CustomerUDFs","UpdateMembershipUDFsWithCustomerUDFValue","customerUdfs","memTypeUdfs","GetMembrshipTypeUDF","customerUDF","GetCustomerUDF","GetCustomerUDFValue","usr","memTypeUDFs","customerNo","cstUdfs","cstUDFs","UDFCategoryName","UDFValue","actionGetBookingTypes","dispatch","id","isDisplay","actionResetBookingTypes","loadState","key","defaultValue","serializedState","sessionStorage","getItem","process","JSON","parse","saveState","setItem","stringify","sessionKey","bookingID","bookingType","bookingTypesError","reducerBookingTypes","RemoveUnUsedBookingTypes","payload","bkngTypes","actionStartAppLoader","actionEndAppLoader","reducerAppLoader","SHOPCART_ERROR","actionShopCartAddEventWithTourHold","organizationID","actionShopCartResetState","actionShopCartResetStateWithTourHold","CartEvent","actionRemoveCoupon","actionShopCardAddGiftCard","giftcard","actionResetCouponAlreadyApplied","actionShopCartResetStateWithUniqueCouponHold","actionShopCartApplyMembershipOnEvents","memberNo","memberEmail","memberLastName","actionShopCartRemoveGiftcards","actionShopCartResetMembership","actionShopCartResetIDME","actionShopCartResetDonation","actionShopCartAddMembershipPackage","memberPackage","isRenew","actionShopCartResetMembershipPackage","actionShopCartResetGATicket","actionShopCartSetManageMyBooking","managebooking","managebookingmodifytickets","actionShopCartSetRefundType","actionShopCartSetAdditionalBookingAmount","actionShopCartSetMmbAmountToPay","amounttopay","actionShopCartSetEnteredAmountToPay","actionShopCartApplyidmeCostratesOnEvents","actionShopCartResetError","actionDeleteOrderProduct","foodProduct","actionShopcartResetOrderProducts","actionShopCartShowTransFee","check","actionShopCartResetDonationProduct","actionShopCartSetMMBHasPaid","MMBHasPaid","sessionKey2","sessionKey5","sessionKey7","sessionKey10","sessionKey14","sessionKey15","sessionKey16","sessionKey17","tourCoupons","tourProducts","couponAlreadyApplied","removeCoupon","ismembershipApplied","membershipcostrate","membershipMembrNo","applycostRates","productName","otherAmount","popupCounts","GATickets","membershipIsRenew","managemybooking","managebookingticketsmodification","additionalbookingamount","mmbAmountToPay","IDME","isIdMeApplied","idmecostrate","showTransactionFee","reducerShopCart","eventIndex","trcoupons","trProducts","tourprduct","noproducteventid","tproduct","membershipObj","donationObj","idmeObj","tourCoupon","tourProduct","isRemoveCoupon","newtickets","couponproduct","calculategaticketamount","ApplyMembershipPricesOnEvents","othersAmount","useAlternateMerchantOnline","membershipPackagesObj","el","memberPackIndex","CalculateMembershipPackages","existticket","ApplyMembershipCoupon","managebkngticketsmodification","refundTyp","additionalbookingamt","newOrderProduct","UniqueID","newdonationProducts","newdonationproduct","EXTRAITEMS_LOADING","actionGetExtraItems","ID","checkBookingTypeObj","isDisplayArea","nextTourDate","isListView","currentView","tourEventsList","actionGetExtraItem","IsMembershipApplied","MemberCostRate","IsIDME","IsIDMECostRate","OrganizationCostRate","actionIncreaseQuantity","ItemExist","MinimumTickets","MaximumTickets","actionResetExtraItems","extramItems","extraItem","extramItemsError","isAddToCart","reducerExtraItems","newextraItems","extraItm","pmatrix","IsCouponApplied","ApplyMembershipPricesOnTourEvent","isCheckOut","newExtraItem","MEMBER_DATA_ERROR","MemberInfo","MemberInfoError","reducerMember","actionPostPaymentTransaction","recaptchaToken","actionResetPaymentTransaction","Payment","PaymentInfoError","reducerPaymentTransaction","Errors","ErrorMessage","message","GET_IP_LOADING","IpInfo","IpInfoError","reducerIP","ip","actionCalendarNavCalendarView","actionCalendarNavListView","actionCalendarNavReset","viewType","reducerCalendarView","actionResetDiscardTime","CartDiscardTime","DiscardTime","timerid","reducerCardDiscardTime","clearInterval","GET_DISPLAYAREAS_DATA_SUCCESS","actionGetDisplayAreasByType","displayAreaType","actionResetDisplayAreas","displayAreaID","displayAreas","displayArea","displayAreasError","reducerDisplayAreas","newObj","newDisplayAreas","DisplayAreaNo","COUPON_LOADING","GET_COUPON_DATA_SUCCESS","GET_COUPON_DATA_ERROR","actionGetCoupon","coupnCode","actionEndCouponLoading","actionResetCoupon","couponError","reducerCoupon","tourProductError","reducerTourProduct","GIFTCARD_HOLD_ERROR","GIFTCARD_HOLD_RESET","actionAddGiftCardHold","actionResetGiftCardHoldState","actionDeleteGiftCardHold","actionRecalculateGiftCardHold","GiftCardHold","GiftCardHoldLoading","GiftCardHoldError","reducerGiftCardHold","actionDeleteUniqueCoupon","UniqueCOuponHoldRef","actionResetUniqueCouponCardHoldState","UniqueCouponError","reducerUniqueCouponHolds","actionGetMemberValidation","street","checkDate","actionResetMemberValidation","actionEndMemberValidationLoading","actionSetErrorMemberValidation","err","membervalidation","membervalidationError","showValidateMsg","memberValidationReducer","actionResetFormErrorState","actionSetFormErrorState","errorfield","actionResetFieldValuesState","actionSetFieldValueState","field","formerrorstate","formfields","formerrorreducer","newerrorstate","newformfields","actionGetDonation","productId","productType","actionResetDonations","donationError","donationreducer","actionGetTransactionFee","actionResetTransactionFee","transactionFeeError","reducerTransactionFee","actionGetMembershipPackages","actionUpdateMembershipPackage","membershipPackageDetails","actionDeleteMembershipTypePerson","actionResetMembershipPackages","actionResetMembershipPackage","actionUpdateFamilyMemberNotPartOfPackage","isAdded","membershippackages","membershippackagesError","familymembersnotpartofPackage","reducerMembershipPackages","mempackages","memPackage","memberpackID","packID","packageIndexId","notPartOfPackage","UDFs","packageID","membersnotpartofPackage","UpdateMembershipPackageForRenew","membermerberhips","member","UpdateMembershipPackageForRenewToNewMembershipPackage","actionGetGATickets","DisplayArea","GACouponCode","GATicketsError","GADisplayAreas","reducerGaTicket","newGATickets","oldGATickets","oldticket","newticket","oldticketstate","actionResetSendEmail","emailsend","lostmemberError","reducerLostMember","lostmember","membermerberhipsError","reducerMemberMemberships","CUSTOMER_LOADING","actionGetCustomer","cstemail","actionResetCustomer","customerError","reducerCustomer","actionGetBooking","actionResetBooking","bookingError","reducerBooking","isModify","giftcardsdisplayAreas","giftcarddisplayArea","giftcardsdisplayAreasError","reducerGiftCardDisplayAreas","GITCARD_LOADING","actionGetGiftCards","displayAreaNo","actionUpdateGiftCardDropDown","actionUpdateGiftCrdQuantity","IsCheckOut","actionUpdateGiftCardCustomAmout","actionResetGiftCards","giftcardsError","reducerGiftCards","previousGiftCards","newGiftCards","Qty","CustomAmount","InvalidAmount","prevQty","ProductImageURL","isSelected","MaxPrice","COSTRATE_LOADING","actionResetCostRate","costraterror","reducerCostRate","actionResetIDMEUSERDATA","userdata","userdataerror","reducerIDMeUserData","actionGetUserDefinedFields","listOfIds","actionResetUDFs","udfIDNo","bookingUDFsError","reducerBookingUserDefinedFields","udfID","oldBookingUdfs","oldBkng","oldBooking","udfCat","UDFID","newUDF","categoryName","actionGetOrderLocationsByDisplayArea","orderLocations","orderLocation","reducerOrderLocations","ORDER_MENU_LOADING","orderMenu","reducerOrderMenu","actionResetMembershipUDFs","membershipUdfs","membershipUDFsError","updateMemberRecordsOnRenew","reducerMembershipUserDefinedFields","membershipsUdfs","membershipTypes","membershipType","previousValue","Picklist","actionResetCustomerUdfs","customerUDFs","customerUDFError","reducerCustomerUDFs","actionGetCountryAndState","actionResetCountryAndState","countryandstate","countryandstaterror","reducerCountryAndState","cs","actionResetOrganizationSection","organizationlist","organizationlisterror","reducerOrganizationSection","orglist","reducerProduct","actionValidateRecaptchaToken","sessionID","actionValidateRecaptchaReset","validToken","validTokenError","reducerRecaptcha","actionStopUserToPurchase","_0x52dc","_0x19ff0e","_0x347acd","_0x300e48","_0x300e","_0x52dc21","_0x394d2f","_0x2b7923","_0x294440","_0x5a892a","_0x3a8b8c","_0x4243c0","create_UUID","_0x32fadd","_0x4ce6d1","_0x396905","_0x266726","_0x5755c3","_0x43e114","STOP_USER","stopUserToPurchase","reducerGlobal","userIdentifyID","actionResetCustomerAddresses","customerAddressesError","reducerCustomerAddresses","rootReducer","combineReducers","reducerMemberValidation","reducerFormError","reducerDonation","apiUrl","userName","password","middlewareUrl","middlewareUserName","middlewarePassword","DataAccess","CryptoAES","decrypt","CryptoENC","apiAuthentication","fetch","then","response","json","Error","fetchAuthenticationToken","fetchAsync","func","ok","put","sagaAuthenticationToken","takeEvery","apiBooking","params","h","Headers","append","EncodeBase64","url","encodeURIComponent","req","Request","method","headers","apiBookingTypes","newID","newIsDisArea","apiCostRate","costrateObj","gpName","groupname","subGpName","subgroup","apiCustomer","_0x4be2","_0x1925","_0x5d2900","_0x3234fc","_0x7e87d6","_0x5e77ad","_0x4bf7d7","_0x15f863","_0x1757ae","_0x3dfa16","_0x101f63","_0x6e356b","_0x364d0f","_0xe0277c","_0x4ae118","_0x1ab943","arguments","_0x58c8bf","_0x24e3b0","RegExp","_0x507ad3","_0x467d63","_0x533da6","_0x303548","iv","_0x5f1197","_0x25447e","_0xc851aa","_0x3e1e8e","_0x3a7e0d","_0x5e5d75","_0x2d28fd","_0x157d91","_0x36b562","_0xef09cd","_0x81c5f0","_0x2d53f8","_0x17466e","_0x240d4d","_0x1d0b0f","_0x1cd3b3","_0x2530ef","_0x44f770","API","baseurl","username","middlewareUsernName","midwareEndPoint","inputOutputSettings","middlewareEndPoint","getData","path","getReq","postData","data","isEncrypted","putData","deleteData","getheader","encryptData","AES","encrypt","GenerateRequest","body","pass","encodeBase64","api","UpdateCustomerUdfs","GetCustomersUdfs","newpath","customerIdList","apiDonation","apiDisplayAreas","apiDisplayAreasById","apiDisplayAreasByIdAndType","apiExtraItems","Id","NextTourDate","checkFromNextTourDate","listViewSearchDays","lastDay","AddWeekDays","getCouponProducts","apiGATicket","apiGiftCards","postGiftCardHold","deleteGiftCardHold","getOrderLocationsByDisplayArea","apiGetProductsByProductTypeAndDisplayArea","apiIDMeUserData","replace","apiLostMember","getmember","postmember","apiMemberMemberships","apiMembershipPackages","apiMemberValidation","postTourHold","PaymentMethodType","EmailID","posttransaction","postdata","paymentamount","primaryAmount","paymentType1","paymentType2","customerName","recaptchav3token","alternateamount","apiTourProduct","priceDate","apiTransactionFee","uniqueCouponPost","uniqueCouponCode","deleteUniqueCouponHolds","apiUserDefinedFields","apiCountryAndState","apiOrganizationSection","costRateList","postbookingtickets","bookingtickets","apiValidateRecaptcha","GetCustomersAddress","fetchBookingTypesData","status","statusText","select","sagaBookingTypes","fetchExtraItemsData","areaNumber","bookingTy","forceListView","ForceListView","sagaExtraItems","fetchMemberInfoData","PostMemberInfoData","sagaMember","SavePaymentTransactionData","RecaptchaNumberOfCallsOnTransaction","jVal","arrayBuffer","Promise","resolve","base64String","btoa","String","fromCharCode","Uint8Array","res","addamount","customers","idmeshopreducer","idmeuserdata","membershipTypesUdfs","customerID","merchant1Amount","merchant2Amount","customerPostCall","userresponse","customerUDFsResponse","listCustomersMemberships","bookingTicketsResponse","MemberValidation","CustomerPostCall","GuestEmail","GetCustomerList","attributes","handle","ExtCustomerID","customersUdfsList","IsOrganization","PurchaserCustomerID","TabCustomerFirstName","TabCustomerLastName","TabCustomerMobile","TabLocationID","TabLocations","LeaveOrderOpen","SendToKitchen","UpdateTransactionCall","transactionresponse","Customer","Events","OrderProducts","isCancelBooking","ConvertBookingtoTickets","sagaPaymentTransaction","getip","fetchip","sagaIP","fetchDisplayAreasData","fetchDisplayAreasByIdData","fetchDisplayAreasByIdAndTypeData","param1","param2","sagaDisplayAreas","ShopcartAddEventWithTourHold","ShopcartSetTourProductQuantityTourHold","ShopcartRemoveTourProductWithTourHold","ShopcartResetStateWithTourHold","actionShopCartRemoveSingleTourWithTourHold","ShopcartResetStateWithUniqueCouponHolds","shopcartremovegiftcards","ConvertCartItemToTourHold","tourholdresponse","bktype","BookingTypeTerms","SetTourHoldRef","ConvertCartItemToTourHoldIncreaseQuantity","ConvertCartItemToTourHoldRemoveTourProduct","ConvertCartItemToTourHoldResetState","cashlessholds","ConvertCartTourToTourHoldResetState","ErrorMessagee","sagaShopCart","AddGiftCardHold","DeleteGiftCardHold","RecalculateGiftCardHold","managemybkng","isTransFeeApplicable","GetGiftCardHoldRequest","giftholdresponse","RecalculatedCashlessArray","toUpdateCashless","GetGiftCardHoldRequestForUpdate","toDeleteCashless","UpdateNewGiftCardHoldRef","sagaGiftCardHold","fetchCouponData","CouponExpiryMsg","MaxTimesCouponUsed","OneCouponAllowedForMembership","NewMembershipNotAllowed","RenewMembershipNotAllowed","code","couponData","gaTickets","couponv3Data","isCouponValid","membershippackID","apiMembershipPackage","GetMembershipPackageFromApi","AllowDiscountOnJoin","AllowDiscountOnRenewal","couponFrom","ReturnDateOnly","UseCouponFrom","couponTill","UseCouponTill","CurrentDateTimeAtLocation","couponHoldRef","uniqueCouponObj","uniqueCouponHoldsRes","sagaCoupon","DeleteUniqueCouponHolds","sagaUniqueCouponHolds","fetchMemberValidationData","param","sagaMemberValidation","fetchDontionsData","sagaDonation","fetchTransactionFeeData","sagaTransactionFee","fetchMembershipPackagesData","Message","sagaMembershipPackages","fetchGaTicketsData","displayAreasdata","sagaGaTicket","fetchLostMemberData","sagaLostMember","fetchMemberMemberships","sagaMemberMemberships","fetchCustomer","sagaCustomer","fetachBooking","bookingSaga","fetchGiftCardDisplayAreasData","sagaGiftcarddisplayAreas","fetchGiftCardsData","sagaGiftcards","fetchCostRate","sagaCostRate","fetchIDMEUserData","sagaIdMeUserData","GetUserDefinedFields","udfsresponse","sagaBookingUserDefinedFields","fetchOrderLocationsByDisplayArea","sagaOrderLocations","fetchOrderMenuByDisplayArea","sagaOrderMenu","GetMembershipsUserDefinedFields","sagaMembershipUserDefinedFields","GetCustomerUserDefinedFields","sagaCustomerUDFs","fetchCountryAndState","sagaCountryAndState","fetchOrganizationList","organizationTxt","defaultCountry","GetValueFromCountryAndState","sagaOrganizationSection","fetchProductDataByType","sagaProduct","fetchValidateRecaptchaToken","sagaRecaptcha","GetCustomerAddresses","cstAddressesResponse","sagaCustomerAddresses","rootSaga","all","Boolean","location","hostname","match","contrastTextColor","darkColor","mainColor","lightColor","backgoundColor","backgoundColorPaper","textColor","white","black","primary","contrastText","dark","main","light","secondary","colors","blue","success","green","info","warning","orange","red","text","link","background","default","paper","icon","blueGrey","divider","grey","h1","color","palette","fontWeight","fontSize","letterSpacing","lineHeight","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","button","caption","overline","textTransform","MuiButton","contained","boxShadow","MuiIconButton","root","MuiPaper","elevation1","MuiTableCell","typography","MuiTableHead","MuiTypography","gutterBottom","marginBottom","MuiCssBaseline","theme","createMuiTheme","overrides","zIndex","appBar","drawer","checked","useStyles","makeStyles","borderRadius","alignItems","padding","spacing","display","flexBasis","marginRight","flexGrow","SearchInput","props","className","onChange","style","rest","classes","Paper","clsx","Input","disableUnderline","flexShrink","sm","md","lg","neutral","danger","StatusBullet","size","defaultProps","RouteWithLayout","Layout","layout","Component","component","render","matchProps","DialogeBox","open","title","button1text","button2text","button1clickhandler","button2clickhandler","Dialog","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","DialogActions","Button","onClick","wheelChairScreenAssist","position","PinCodeDialogeBox","pinTextChange","ReactHtmlParser","replaceEscapeCharacters","TextField","autoFocus","fullWidth","label","target","variant","ErrorHandling","Alert","elevation","Snackbar","anchorOrigin","vertical","onClose","handleclose","msg","leftrightbutton","minWidth","leftbutton","borderTopLeftRadius","borderBottomLeftRadius","rightbutton","borderTopRightRadius","borderBottomRightRadius","labelstyle","flex","verticalAlign","textAlign","box","boxVisble","pointerEvents","opacity","NumberSpinner","buttonClickHandler","operation","newvalue","steps","maxValue","minValue","changeHandler","refrence","disableButton","boxVis","disabled","inputProps","isNaN","onFocus","UniqueCouponApplied","eventCoupons","NumberFormatCustom","inputRef","other","getInputRef","onValueChange","values","name","thousandSeparator","isNumericString","prefix","FormattedInputs","React","useState","amountExceed","setValues","Validated","handleOtherPrice","donaValue","keyvalue","InputProps","inputComponent","paddingBottom","UDFText","UdfDescription","required","multiline","UDFLength","maxLength","changecontrolvalue","isMembership","userV","usernumber","GetUserMemberValue","sx","InputLabelProps","UDFCheckBox","Checkbox","paddingLeft","UDFDateTime","udfValue","setUdfValue","useEffect","onChangeHandler","Name","shrink","onInput","nativeEvent","setTimeout","onChangeInput","UDFNumber","marginLeft","UDFSelect","Select","labelId","displayEmpty","picklist","UDFPicklistID","Option","card","transform","WebkitTransform","cursor","headerbox","DisplayCard","Title","Description","ButtonText","ButtonCallBack","ButtonCallBackReference","Card","CardHeader","titleTypographyProps","CardContent","CardActions","getSubTitle","subTitle","content","Header","SubTitle","SubTitle2","flexDirection","minHeight","avatar","marginTop","paddingTop","justifyContent","fontWeightMedium","active","forwardRef","ref","media","actions","breakpoints","up","margin","nav","CartDiscardPopupTitle","CartDiscardPopupMsg","CartDiscardPopupButton1Text","CartDiscardPopupButton2Text","CartDiscardPopupTime","CartDiscardTimeController","setopen","dialogetimer","setdialogetimer","carddiscard","useSelector","shopcartreducer","useDispatch","DialogeTimeout","reload","timer","clearTimeout","ShowGiftCards","SetCartTimer","timeid","setInterval","actionStartDiscardTime","NewVersionAvailableMsg","VersionCheck","setOpen","handleClose","caches","keys","names","delete","getLatestVersionUrl","currentVersion","version","js","jsonData","catch","disableEscapeKeyDown","disableBackdropClick","RedirectLogoURL","GiftCardsHeading","HeaderExtraText","TicketsHeading","MembershipsHeading","TicketLinkHeading","FoodOrderLinkHeading","DonationLinkHeading","ManageMyBookingButtonTitle","ManageMyBookingButtonShow","float","iconSize","headerText","disabledlink","menuItem","menuItemText","linkItem","logo","maxWidth","maxHeight","down","withRouter","onSidebarOpen","isMenuDrawerOpen","setIsMenuDrawerOpen","memberships","OnClickMenuLink","history","AppBar","Toolbar","Hidden","lgUp","IconButton","edge","aria-label","Drawer","PaperProps","List","ListItem","Badge","Close","ConfirmationNumber","Person","CardGiftcard","Restaurant","Icon","Edit","xsDown","Link","to","href","alt","src","smUp","mdDown","badgeContent","totalGFs","CountGiftCards","eventitemcount","AddShoppingCart","shiftContent","Main","children","useTheme","isDesktop","useMediaQuery","defaultMatches","setOpenSidebar","AccountDetails","handleChange","autoComplete","noValidate","subheader","Divider","Grid","container","xs","helperText","SelectProps","native","details","progress","uploadButton","AccountProfile","locationText","dateText","moment","Avatar","LinearProgress","Account","xl","handleCalendarViewChange","CalendarNavBar","displayAreasState","disableCalendarLink","setdisableCalendarLink","Path","urlID","ButtonGroup","OtherExtraItemHeader","tourheaderbox","hidetopheader","cardcontent","ExtraItemsProducts","errorMsg","seterrorMsg","changeQuantityHandler","reference","allowQuantityChange","cartEvents","AddChaperoneTickets","calculateChaperoneTickets","apiData","bookingtypeID","TotalTickets","noOfChaperoneTickets","NumberOfTicketsRequiredPerChaperone","RoundChaperoneTicketsUp","ceil","CalculateMaxTickets","shopCartConsumed","cartTourEvent","consumedQty","reloadQuantity","isMMB","tourEventId","ismembershipapplied","membercostrate","isIDME","isIDMECostrate","organizationCostRate","hidetopheading","ShowStartAndEndTime","ms","Tooltip","Information","enterTouchDelay","leaveTouchDelay","arrow","smDown","mdUp","time","ShowStartTime","ShowEndTime","UDFDataField","GetDataField","BookingUDFields","bookingUdfCategory","actionAddUDFToTourEvent","actionUpdateUDF","udfs","UDFDescription","ChaperoneHeading","box100per","Chaperone","productPrice","priceMatrix","CouponRemoveMsg","reverseOrder","PaymentSelection","minDeposit","setMinDeposit","setOtherAmount","calculateMinimumDeposit","DefaultToFullPayment","onChangePaymentOption","reloadPaymentSelected","useImperativeHandle","validateAmountSelected","checkIsRemoveCoupon","RadioGroup","FormControlLabel","control","Radio","AllowFlexiblePayment","whiteSpace","FormHelperText","DisplayBookingTypeInfoCharacters","OrderItemsInCartError","PurchaseAsOrganizationButton","InvalidGroupSizeMsg","arrowBtn","BookingInfoCls","paddingRight","readmoreBtn","ExtraItemDrawer","isredirectclicked","setisredirectclicked","useRef","shopCartError","tourEvents","showMoreInfo","setShowMoreInfo","readmorebtnText","setreadmorebtnText","organizationList","saveBtn","setsaveBtn","setState","callCheckout","actionSetAddToCart","ValidateQuanity","NewQty","TotalTicketCount","MinTicket","MaxTicket","SeatsAvailable","BookNowOption","ValidateGroupQuanity","groupTicket","ChaperoneQty","chaperoneTourProduct","isContinueToExtraItemDrawer","TourData","actionGetExtraItemAfterMembership","bookingInfo","ValidateBookingRequiredFields","validate","align","matchMedia","matches","toggleDrawer","EventName","BookingTypeInfo","substring","AllowedCustomerTypes","goToExtraItemOrGroupDrawer","paymentOptionSelected","paymentAmountSelected","current","filterdata","cartdata","usealternamteMerchant","redirectCall","OrganizationNameHeader","OrganizationInstructionText","OrganizationChangePopupMsg","PurchaseOrganizationBookingNotAllowedForMembership","OrganizationInfoCls","OrganizationSection","colorState","setColorState","RestrictCompanyListByCostRate","AllowedCostRateIDs","k","actionGetOrganizationSection","showOrganization","RequireCompanyName","isContinueToGroupDrawer","Autocomplete","indexOrg","autoHighlight","getOptionLabel","CustomerName","renderInput","GroupSizeHeader","GroupSizeChangePopupMsg","ClearCartEventPopupButton1Text","ClearCartEventPopupButton2Text","GroupInfoCls","GroupSizeSection","clearCartPopUp","setClearCartPopUp","toggleIsEdit","GroupSizeMessage","GroupSizeOptions","NoExtraItemFoundMsg","section","GroupReservationDrawer","setShowOrganization","disableBeforeLoading","setDisableBeforeLoading","tourEvent","validateGroupSize","validateOrganization","onChangeOrganization","onChangeGroupSize","continueHandler","DefaultColor","EventNotAvailable","CalendarHeight","CalendarWidth","CalendarScreenDatTimeAlreadyBuyMsg","CalendarStartingHour","UnableToBuyTicketShowBookNowEnabled","UnableToBuyTicketShowBookNowDisabled","CalendarScreenMessage1","CalendarScreenMessage2","localizer","BigCalendar","momentLocalizer","list","fontFamily","list2","errExtraItem","currentview","setcurrentview","nextWeekDate","setnextWeekDate","GetMonthlyRecords","propsEvent","EventDate","GetCostRate","GetDefaultDate","dt","today","getMonth","constredirect","j","TourDisplayDays","lastdisplaydate","allDay","start","end","StartAndEndTime","GetWebDisplayName","DisplayColor","level","DisplayColorLevel","isExtraItem","bookingTypeID","isSaleable","isSingleTour","notavailableReason","ShowAvailability","AvailabilityText","startEvent","ShowOnCalendar","ConvertTourEventsToEvents","bookingunsoldReson","reloadEventForGroups","side","selectedDate","setIsEditEvent","headerValue","document","getElementsByClassName","textContent","newMonth","BackgroundColor","minTime","setHours","constredirecttofindmybpooking","pathname","actionResetErrorMessage","AllowDateTimeChanges","NoChangesMessage","overflow","defaultView","popup","onSelectEvent","redirecttoconfirmbookingchanges","reloadEvent","checkIsReloadEvent","onView","view","onNavigate","defaultDate","FetchNewMonthDataHandler","views","eventPropGetter","border","components","dateCellWrapper","cloneElement","Children","only","formats","dayRangeHeaderFormat","monthHeaderFormat","anchor","role","bType","showGroupDrawer","cstrate","flexWrap","textField","searchBtn","DateSearch","textFieldValue","test","SearchDates","SearchRecordInfo","pagination","pagedEvents","navigatedToDate","disablePreviousButton","calendarNavState","enableDisablePreviousButton","GetSearchDays","onNavigation","disable","onFilter","GetDefaultCostRate","webName","availableSeats","CheckShowAvailability","RemoveSevenDays","getElementById","AddNextSevenDays","HybridViewDefaultLargeImage","HybridViewDefaultSmallImage","NoEventMessage","image","objectFit","objectPosition","TimeSlotSelect","badgeDot","staticcal","hidden","visibility","visible","TourEventTimeSlot","displayarea","BookingInfoFilter","underscore","BookingInfo","BookingInfoGroup","getFirstEventDate","hideSelectButtonOnSingleBooking","GetBookingInfoLargeImageURL","LargeImageURL","GetBookingInfoBookingInfoDetails","BookingInfoDetails","IsEventAvailableToSale","showTourList","getTourEvent","btypes","hasEvent","getEventPrice","hasMultipleBookingType","BookingTypeGroup","StaticCalenderView","LocalizationProvider","dateAdapter","AdapterDateFns","StaticDatePicker","displayStaticWrapperAs","disablePast","openTo","showDaysOutsideCurrentMonth","newValue","onMonthChange","newdate","renderDay","_value","DayComponentProps","overlap","invisible","anchorOriginBottomRight","PickersDay","GetTourEventsGroup","items","SmallImageURL","BookingInfoText","BookingInfoClickHandler","FormControl","InputLabel","GetAvailabilityText","alignContent","CalendarScreenHeading","Calendar","paymenttranstate","ReceiptNo","bookingListOfIds","substr","adjustView","DefaultHybridView","bkngTyp","CheckIsDefaultHybridView","CheckIsForceListView","innerWidth","actionCalendarHyridView","extramItemsstate","GetFilterDates","fromDate","showDisplay","difference","differenceIcon","differenceValue","Budget","justify","uuid","createdAt","inner","statusContainer","statusColors","delivered","pending","refunded","LatestOrders","mockData","orders","Table","TableHead","TableRow","TableCell","sortDirection","enterDelay","TableSortLabel","direction","TableBody","order","hover","imageUrl","updatedAt","subtract","LatestProducts","subtitle","ListItemAvatar","ListItemText","fromNow","labels","datasets","responsive","maintainAspectRatio","animation","legend","tooltips","enabled","mode","intersect","titleFontColor","bodyFontColor","footerFontColor","scales","xAxes","barThickness","maxBarThickness","barPercentage","categoryPercentage","ticks","fontColor","gridLines","drawBorder","yAxes","beginAtZero","borderDash","borderDashOffset","zeroLineBorderDash","zeroLineBorderDashOffset","zeroLineColor","chartContainer","LatestSales","TasksProgress","TotalProfit","TotalUsers","stats","device","deviceIcon","UsersByDevice","hoverBorderColor","cutoutPercentage","devices","Dashboard","iframe","Icons","NotFound","TourDisplayAreaDefaultImage","ProductCard","area","AreaName","ImageURL","DisplayText","callCalender","displaynone","ProductList","useHistory","UniqueBookingTypeID","ShowOnline","AdjustContext","goBack","Notifications","wrap","defaultChecked","Password","confirm","Settings","variants","Typography","nameContainer","UsersTable","users","selectedUsers","setSelectedUsers","rowsPerPage","setRowsPerPage","page","setPage","indeterminate","tableRow","selected","selectedIndex","newSelectedUsers","concat","handleSelectOne","avatarUrl","v","toUpperCase","getInitials","address","TablePagination","onChangePage","onChangeRowsPerPage","rowsPerPageOptions","row","spacer","importButton","exportButton","searchInput","UsersToolbar","placeholder","UserList","tourheadertext","labelbold","tablecell","fproduct","removeclickhandler","TourEventId","coupItem","DeleteCouponsHolds","TourCouponID","CheckBeforeRemove","errorcancelhandle","changedqty","selectedTPQty","VisibleStartAndEndTime","starttime","ShowWebDisplayName","tourbox","table","colSpan","editClickHandler","couponAmount","eventid","productid","couponID","couponRefHold","getDonationProductAmount","memoizer","getGATicketCoupon","groupby","actionShopCartRemoveGATicketCoupons","couponcode","getGATicketDiscount","paybutton","center","diplaynone","textaligncenter","cashlessvalue","PayableCard","hasitems","pack","memberTypeID","actionShopCartRemoveCouponFromMembershiptype","GetMembershipTypeDiscount","objcashless","maskGiftCardNo","ProcessingBox","isshow","text1","text2","CircularProgress","CustomMessageforconfirmpage","BookingTypeBarcodeHeader","PaymentCompleteTitle","ConfirmationReceiptMessage","DisableMemberPassBarcode","RedirectWaiverSigner","WaiverSignMessage","ShowReadableBarcode","footerbox","headertext","PaymentCompletebox","ALLGATickets","ShowTicketDisplayName","t","getEvent","getGATickets","GetGiftCards","Giftcards","groupbyTourEvent","itemobj","GetMembershipPackage","packagename","PackageName","expiry","primaryMemberNo","MemberNo","amounts","CheckCircleOutlineOutlined","TabID","TabLocationName","productText","productWithOptions","opproduct","getProductOptions","disableSpacing","hasBarcodes","hasAnyBarcodesToShow","gaticket","Barcode","WaiverRequired","ShowWaiverLinks","onClickHandler","FreeBookingMessage1","FreeBookingMessage2","FreeTicketForm","spreedlyEnvironment","RecaptchaV3Client","BillingAddressTypeID","UseStreetAddressForAVS","iframebox","iconforiframe","iframeinputstyle","Spreedly","TransactionCall","requiredFields","tokenizeCreditCard","ZeroDollarTransactionCall","GetClient","executeRecaptcha","paymentTokenHandler","CardOnFileTransaction","cardonfileToken","PaymentToken","ReloadSpreedly","PaymentLoaded","environmentKey","useGoogleReCaptcha","script","createElement","async","appendChild","onload","scriptLoaded","street1","stree2","postCode","mobilePhone","setStyle","on","setFieldType","setNumberFormat","errors","attribute","transferFocus","pmData","card_type","init","activeEl","inputProperties","numberLength","cvvLength","validCvv","fieldhandleChange","currentTarget","InputAdornment","CreditCard","VpnKey","IconComponent","DateRange","Merchant1","Merchant2","MultiPayments","merchantTotals","manageMyBooking","GPCardNumberErrorMsg","GPCVVErrorMsg","GPExpiryErrorMsg","GlobalPaymentsApiKey","GlobalPaymentsEnvironment","GlobalPaymentsBaseURL","GlobalPaymentsEnableAutocomplete","TermsnConditionCheckMsg","TermsnConditionCheckBoxText","primarycolor","heading","mmbfakedisableButton","errorTxt","errorInput","FullWidth","PayBtnDisable","PayBtnUnDisable","GlobalPayments","refPayByCardOnFile","PayByCardOnFile","refReload","Reload","shopcartamounttoPay","showPayBtn","setShowPayBtn","tncchecked","settncChecked","opentnc","setopentnc","cardDetails","setCardDetails","cardNumberRef","cvvRef","expiryDateRef","submitRef","tnccheckeHandle","AdditionBooking","toggleButtonState","innerHTML","configure","enableAutocomplete","ui","form","fields","submit","styles","cardForm","isCallInititaed","timeout","ResetCreditCard","resp","showFreeTicket","updatetsates","detail","data_path","description","valid","isEnabled","addStylesheet","cardMaskedNum","cardType","PaymentDescription","PurchaseItems","cvv_present","ValidatePaymentFields","mmbPayBy","temporary_token","masked_card_number","managemyBooking","TransactionFeeByDefault","showTFBox","TransactionFeeOptional","transFeeCheckBox","amoutToPay","optionalTxt","TransactionFeeOptionalText","GetTransOptionalText","showFreeTkt","spreedlyRef","globalPaymentsRef","SpreedlyTransactionCall","SpreedlyZeroDollarTransactionCall","SpreedlyCardOnFileTransaction","GPReload","RedirectAfterCheckout","Titleforloadingpayment","Subtitle1forloadingpayment","Subtitle2forloadingpayment","EmailRegex","MembershipCostRateMatches","CouponAndGiftcardAlreadyApplied","Membershipsuccess","HideMemberValidation","UserMembershipValidatedEmailAndLastName","RemoveMembershipCouponAndGiftcard","RemoveMembershipsuccess","IamMember","LastNameAndEmailORPhoneORAddressForMembership","RequiredEmailORPhoneORAddressForMembership","PaymentFormHeading","ShowFullAddressOnCheckout","CheckForIDmeValidProducts","IDmeAPIurl","IDmeClientID","IDmeRedirectURI","IDmeResponseType","IDmeScope","IDmeHeading","IDmeSuccessMsg","IDmeInvalidGroup","IDmeResponseTypeError","IDmeInvalidClient","IDmeInvalidRedirectUri","IDmeAccessDenied","AddPersonZipCodeLength","AddPersonCityLength","AddPersonAddress1Length","AddPersonAddress2Length","AddPersonEmailLength","AddPersonFirstNameLength","AddPersonLastNameLength","PhoneNumberMandatory","ValidMemberMsg","PhoneNumberMessage","btnAlign","imMember","clearButton","TextMaskCustom","inputElement","mask","PaymentForm","paymentsRef","formstates","initialpaystate","pfstate","setpfstate","ReloadGateways","ReloadGateway","recaptacha","removeMembershipState","setremoveMembershipState","removemembershipcouponandgifts","setremovemembershipcouponandgifts","inputreferences","haspaid","paymentinfo","errormsg","scrollTo","handleReCaptchaVerify","useCallback","disablepay","btnStatus","filterOptions","createFilterOptions","checkfieldvalidation","prop","focus","scrollBy","isvalid","isShowCountryFields","isShowShippingCountryFields","validateEmail","validatePhoneNum","BindRequiredFields","onClickPayBtn","useDebouncedCallback","leading","phoneNum","cusNumber","onChangeState","onChangeShippingState","handleCloseDialog","newEmail","actionShopCartUpdateMembershipEmail","ValidateMemberValidate","AlertMessage","RemoveCouponsAndGiftCards","GetTourEvents","actionShopCartValidMember","RemoveMembership","CalculateAmountSelectedForMembers","eventslist","GetTourEventsList","indexOfAccessToken","idmeAccessToken","actionGetIDMEUSERDATA","group","subgroups","actionGetCostRate","displayclass","memberemailonFile","GetEmailOnFileVal","membershipInCart","requiredFields1","latestDate","GetLatestTourEvent","show","VerifyGroupMembership","ShowIDME","inputMode","pattern","renderOption","ISOCode","srcSet","o","isPending","HighestCouponAlreadyApplied","HideCoupons","HideGiftCards","GiftCardEnterPinTitle","GiftCardEnterPinSubTitle1","UseGiftcardPIN","CouponNotApplicableOnOtherPaymentMsg","CouponGiftCard","giftCardno","setgiftCardno","Pin","setPin","showPinPopUp","setShowPinPopUp","seterrormsg","ValidateAndAddGiftCard","RecalculationGiftCard","giftcardholdresponse","uniqueCouponHolds","actionResetCouponRemoveReset","CheckUniqueCouponAlreadyApplied","exist","pin","GiftCardsOnly","giftcardNo","CartDiscardMsg","CartDiscardTimeInfo","MarginTop","milli","seconds","PaddingString","millisecondsToTime","DonationHeading","DonationDetails","InvalidDOnationAmount","errorFont","DonationPopUp","showOthers","setshowOthers","donationPrice","setdonationPrice","setproductName","showDialog","actionShopCartUpdatePopupCounts","CloseDonationPopUp","dona","keyVal","ApplyDonation","ShowDonationsSections","itemsmarginR","donateBtn","Donations","checkexist","setcheckexist","validateMsg","setvalidateMsg","AddHoverOnIcons","removeUserFromMembershipType","memProdType","membership","removemembershipType","getTotalAmount","ticketamount","MaxQuantity","UpdateCustomAmout","CustomGiftCardVal","actionRemoveGiftCard","alignSelf","foodAmount","ShowDonationPopUp","closebutton","DialogeHeader","DialogeHeaderText","paymentbox","linkbutton","Checkout","gatewayRef","opendonationPopup","setopendonationPopup","OthersAmount","useAltMerchant","actionShopCartApplyDonation","Container","tabLocationID","actionShopCartResetDonations","actionShopCartRemoveTourWithTourHold","actionShopCartAddProductQuanityWithTourHold","ProductId","actionShopCartRemoveGATicket","actionShopCartGATicketUpdateQuanity","actionShopCartDeleteDonationProduct","firstname","lastname","initialDialogstate","dialogetitle","dialogemessage","initialerrorhandler","MembershipPackageDefaultImage","img","highlightActiveMembershipPackage","ribbon","ribbonSpan","textShadow","MembershipCard","activePackageID","JoinOrRenewMembershipPage","MembershipPackagesDisplayAreaNo","PurchaseMembershipNotAllowedForOrganizationBooking","MembershipLandingRenewHeading","MembershipLandingRetrieveButton","SuccessRenewMsg","RenewMembershipNotAllowedForNonPrimarMemberMsg","RenewMembershipIfUserHaveNoMembership","MembershipList","isSmScreen","membermerberships","seterror","ismemberValid","emailaddress","IsFamilyHead","linkUserIDs","Ids","linkUser","GetCustomerLinkIndividualsIDs","actionGetCustomerAddresses","actionGetMemberMemberships","actionGetCustomerUdfs","ids","GetCustomersIDList","actionUpdatePackageForRenew","actionUpdatePackageForRenewNewMembershipPackage","GetMemberActiveMembership","membershipPackageID","MembershipDetails","mainHeading","SuccessMsg","MembershipHeader","MembershipUDFsHeading","largetourheaderbox","removeFontSize","MembershipUDF","actionUpdateMemberUDF","AddPersonDOBLength","DOBRegex","ValidateMembershipMinQuantity","TryDeletePrimaryRecordOnMembership","ConfirmMsgRemovePersonFromMemberPackage","DisplayMemPackageDiscriptionCharacters","PackageDiscriptionHeading","ValidateMembershipMaxQuantity","PackageMaxQtyMsg","PackageMinQtyMsg","MembershipAddOnsHeading","dialogTitleHeader","smalltourheaderbox","hr","errorColor","defaultColor","udfWidth","NoPersonAssignedTxt","UserNameDisplay","usersnotpartofpackage","membershippackagesreducer","shopcartMembershipPackage","age","seterrorstate","pushState","onbeforeunload","shopcartmember","handleClickOpen","primaryMemType","AssignPrimaryMembershipTypeInDropDownToPimaryMember","membershipTypeIDs","actionGetMembershipUserDefinedFields","CountTotalMembers","actionUpdateMembershipUdfsWithCustomerUdfsValues","ValidateCustomerUdfs","dialogBox","useNo","deletemsg","confirmopen","setconfirmOpen","memID","memTypeName","createNewProfile","setCreateNewProfile","reason","SetPrimaryMemberRecordOnCheckout","actionUpdateUdfsOnEditCancel","GetUserDOB","userDOB","ValidateMemberPackageQuantities","validRequest","saveDialog","ValidateMembershipType","resultRegex","isBetween","validateDOB","ageDiff","birthday","ageDifMs","now","ageDate","getUTCFullYear","calculateAge","AgeBasedMembership","MinAge","MaxAge","PersonNamesDuplicateCheck","actionUpdateMemberTypeUDfsOnSave","dataset","userid","actionUpdateMembershipAddonsQuantity","ConfirmMembershipPackage","ValidateMembersUDFs","priUser","ValidatePrimaryMemberRecord","MaximumMembersInPackage","MinimumMembersInPackage","constnextredirect","totalMembers","discription","GetMembershipTypeQty","memTypeProd","availQty","udfCate","memberusers","GetMembershipTypeUserCount","GetMembershipTypeName","memberTypeName","membershipProduct","Number","EditPerson","addonMembership","CalculateMembershipPackageTotal","orientation","flexItem","dividers","memtypename","GetDefaultMembershipName","GetDefaultMemberName","child","data-userID","deleteConfirmState","Membershipheadernewmsg","Membershipheaderrenewmsg","GetMemberShip","actionGetMembershipPackage","displayMsg","membershipTypesID","GetMembershipTypes","TitleforloadingSendLostMemberemail","Subtitle1forloadingSendLostMemberemail","Subtitle2forloadingSendLostMemberemail","PhoneOrAddress1ForMemberValidate","showMainValidate","setshowMainBalidate","showProgBox","setshowProgBox","showMainValidateAllFields","setshowMainValidateAllFields","validationfields","setvalidationfields","member_no","ValidateMember","valFields","initialerrstate","ShowEmailView","underline","request","actionSendEmail","DisplayGATicketExpiryValidity","header","GAGroupItem","getShopcartTicketQty","GroupHeader","GroupItems","InfoClickHandler","GATicketExpiryDate","ChangeQuantityHandler","DefaultGATicketDisplayAreaNo","TicketPageHeader","footertablecell","tncOpen","tncMessage","tnc","settnc","setDisplayArea","URLSearchParams","useLocation","search","get","areaNo","settnchandler","TermsConditions","actionUpdateQuantityToProduct","DA","da","getDisplayAreaText","SellTickets","getTime","ProductSellStartDate","ProductSellEndDate","sortticket","GATicketDepartments","DepartmentSortOrder","DepartmentName","getGroupedGATickets","minQtytickets","actionShopCartAddGATicket","FindMyBookingTitle","InvalidFindMyBookingFieldsErrorMsg","FindBookingIDNumberNumbericOnly","boxBorder","itemPadding","searchButton","FindMyBooking","FindBooking","BookingSearchName","BookingEmailAddress","actionShopCartApplyMemberCostrate","CustomerCostRateID","useQuery","paramBookingid","paramName","paramEmail","findBookingObj","searchBooking","onKeyDown","keyCode","preventDefault","warningMsg","hideBtn","ManageMyBooking","openPaymentmethod","setOpenPaymentMethod","handleClosePaymentMethod","displayareaNo","BookingTypeDisplayArea","AllowDateTimeChangesWithinArea","startFilterDate","ConstRedirectCHangeDateTime","ConstRedirectModifyTickets","totalpayments","applyrefund","reditecttocheckout","BalanceOwe","BalanceOwing","addTransFeeWithBalance","balanceOwe","totalpaid","eligibletxtReturnClass","eligibleTxt","AllowRefunds","AllowRefundToGiftcardOnly","totalbookingcost","CancelGCRefund","BookingName","AllowTicketChanges","ChangeDateTimeHeading","RefundCreditCardButton","RefundGiftCardButton","ConfimBookingChanges","bookingreducer","amountaftercoupon","couponNo","setcouponNo","CouponsTotal","AmountToPay","previouspaid","actionShopCartRemoveCoupons","addeventstotourholdaction","constredirecttomanagecheckout","CheckCouponNo","ShowCurrentBookingStartAndEndTime","removeUniqueCouponHolds","box95per","hideVisiblity","cancelbtnconfig","cancelbtnconfig10per","CreditCardPayment","mmbHasPaid","CreditCardValue","setCreditCardValue","transFeeCheckHandler","cstID","BookingContactID","ZeroDollaroRGiftCardOnlyTransCall","ProcessAndConfigurePaymentsWithoutCard","billingAddressSameAsAbover","reseterrorfield","onClickGPPayBtn","CancelChanges","formControl","PayableCardMMB","bookingName","AmountToPayLength","tourheaderboxMobView","hideGrid","currentDateEvent","amounttopayTxtBox","setamounttopayTxtBox","CheckGiftCard","AmountToPayCalCulation","actualTotal","newTotal","eventTotal","totalbookingpaid","totalcst","totalpd","txtBoxValue","BookingCancelMsg","BookingSuccessfullyUpdate","TransactionCompleteTitle","receiptfileds","ReceiptTableCell","PaymentCompletePage","TotalPaid","GetBookingPrevPaid","bookingPaid","TransactionDate","tourname","GetTourName","tourdetails","GetTourDetails","TotalBalance","ManageCheckout","onClickPaymentHandler","actionShopCartResetGiftcards","ModifyTicketsHeading","ModifyTicketsAddons","changeQuantityCurrentBooking","actionUpdateQuantity","tourevntID","memcstRate","amountToPay","returnproducts","amounttop","PreviousQtyChanges","IsRefundable","GiftCardAreaCard","gcImg","gcImgSmall","MainGiftCards","SelectedGiftCardValue","SelectedGiftCardProdID","SelectedGiftCardQty","AddToCard","ValidateCustomGCs","actionAddToCartGiftCards","filteredGCs","sellStart","SellStart","sellEnd","SellEnd","GetGroupedGiftCards","cstGiftCard","CustomGiftCard","GiftCardsAreasList","actionGetGiftCardDisplayAreas","giftcardAreaNumbers","actionResetGiftCardDisplayAreas","titleText","subTitleText","OrderLocationItem","Location","getDayOfWeek","dayOfWeek","getDay","isStoreOpenNow","isOpen","OpeningTimes","Day","storeOpenTime","Open","storeCloseTime","OrderLocation","openDaysTime","getStoreOpenTimes","AverageWaitMinutes","OrderLocationScreen","orderLocationsLoading","OrderLocationPageTabTitle","radioGroup","OrderLocationTab","setOrderLocation","tabLocation","setTabLocation","orderLocationOrignal","tl","MenuImage","MenuBox","MenuItem","Menu","MenuName","menuName","MenuImageURL","OrderMenu","orderMenuloading","actionSetOrderLocation","actionGetOrderMenuByDisplayArea","textDecoration","aligh","menu","OrderSubMenuPageOrderProductNoteText","OrderProduct","onCancel","onConfirm","SetProduct","objProduct","onChangeSubOptionHandler","optionProductID","OptionName","getOptionProductID","ProductDescription","optionproduct","getOrderProductPrice","Accordion","AccordionSummary","expandIcon","aria-controls","AccordionDetails","FormGroup","onChangeDeleteSubOptionHandler","GetProductNotes","rows","onChangeProductNoteHanlder","optionPrice","getTotalPrice","IsRequiredOptionsSelectedForOrderItem","badge","badgebox","SubMenuItem","Department","onClickAddProduct","onClickProductInfo","getProductQuantity","dep","OrderItemsInCartError2","RightButtonlIcon","OrderSubMenu","infoProduct","setInfoProduct","productPopUp","setProductPopUp","onClickProductHandler","department","Departments","ProductB","ProductA","PAOption","PBOption","PAProduct","PBProduct","AProduct","actionUpdateOrderProduct","uuidv4","actionAddOrderProduct","canceButtonlIcon","OrderItemsReview","productDeletePopUp","setProductDeletePopUp","getAllTotal","objSelectedProducts","foodProducts","actionUpdateOrderProducts","amountBtn","StyledToggleButtonGroup","withStyles","grouped","shape","ToggleButtonGroup","DonationProduct","onChangeAmount","cartDonationProducts","selectedToogleButton","setSelectedToogleButton","validationInfo","setValidationInfo","hasImage","DisplayAmount","onChangeToogleButtonHandler","getNewProductObj","displayAmount","onValidationChangeOtherAmount","onChangeOtherAmount","exclusive","DisplayAmounts","SortOrder","ToggleButton","OtherValue","MinAmount","MaxAmount","getDisplayAmountButtons","DonationProducts","selectedProducts","setSelectedProducts","viewProducts","setViewProducts","note","setNote","displayAreasLoading","isDisplayAreaExists","actionGetProductsByTypeAndDisplayAreas","setItemIntoView","actionGetDisplayAreasByIdAndType","onChangeDonationProductSelection","AddProductToList","IsValidProduct","cartItem","existItem","selectedItem","minRows","newselectedProducts","actionShopCartUpdateDonationProduct","DonationAreas","onClickDonateHandler","Routes","exact","from","CalendarView","MainLayout","FoodOrderLocationScreen","OrderLocationTabScreen","OrderMenuScreen","OrderSubMenuScreen","OrderItemsReviewScreen","DashboardView","UserListView","ProductListView","GiftCardsAreasListView","MainGiftCardsView","MembershipsView","MembershipsMemberValidateView","MembershipListView","FindMyBookingView","ManageBookingView","ConfimBookingChangesView","ModifyTicketsAddonsView","ManageCheckoutView","DonationAreasView","DonationProductsView","TypographyView","IconsView","AccountView","SettingsView","NotFoundView","CheckoutView","backdrop","BorderLinearProgress","bar","Apploader","Backdrop","ExpiryTimeCacheInMins","ResetLimitOfCallsTimer","browserHistory","createBrowserHistory","basename","App","actionGenerateUserSessionID","actionResetStopUserToPurchase","reCaptchaKey","ThemeProvider","CssBaseline","Chart","helpers","extend","elements","Rectangle","prototype","chartjs","validators","sagaMiddleware","createSagaMiddleware","store","createStore","applyMiddleware","run","ReactDOM","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.70700d2d.chunk.js","sourcesContent":["import { LOAD_AUTHENTICATIONTOKEN_ERROR, LOAD_AUTHENTICATIONTOKEN_LOADING, LOAD_AUTHENTICATIONTOKEN_SUCCESS } from \"../actions/actionAuthentication\";\nconst initialState = {\n    token: [],\n    loading: false,\n    authenticationError: ''\n};\n\nfunction reducerAuthenticationToken(state = initialState, action) {\n    switch (action.type) {\n        case LOAD_AUTHENTICATIONTOKEN_LOADING: {\n            return {\n                ...state,\n                loading: true,\n                authenticationError: ''\n            };\n        }\n        case LOAD_AUTHENTICATIONTOKEN_SUCCESS: {\n            return {\n                ...state,\n                token: action.token,\n                loading: false\n            }\n        }\n        case LOAD_AUTHENTICATIONTOKEN_ERROR: {\n            return {\n                ...state,\n                loading: false,\n                authenticationError: action.error\n            };\n        }\n        default: {\n            return state;\n        }\n    }\n}\n\nexport default reducerAuthenticationToken;\n","export const LOAD_AUTHENTICATIONTOKEN_LOADING = 'REDUX_SAGA_LOAD_AUTHENTICATIONTOKEN_LOADING';\nexport const LOAD_AUTHENTICATIONTOKEN_SUCCESS = 'REDUX_SAGA_LOAD_AUTHENTICATIONTOKEN_SUCCESS';\nexport const LOAD_AUTHENTICATIONTOKEN_ERROR = 'REDUX_SAGA_LOAD_AUTHENTICATIONTOKEN_ERROR';\n\nexport const actionLoadAuthenticationToken = (dispatch) => {\n  dispatch({ type: LOAD_AUTHENTICATIONTOKEN_LOADING });\n};\n","// ChartJS extension rounded bar chart\n// https://codepen.io/jedtrow/full/ygRYgo\nfunction draw() {\n  const { ctx } = this._chart;\n  const vm = this._view;\n  let { borderWidth } = vm;\n\n  let left;\n  let right;\n  let top;\n  let bottom;\n  let signX;\n  let signY;\n  let borderSkipped;\n  let radius;\n\n  // If radius is less than 0 or is large enough to cause drawing errors a max\n  //      radius is imposed. If cornerRadius is not defined set it to 0.\n  let { cornerRadius } = this._chart.config.options;\n  if (cornerRadius < 0) {\n    cornerRadius = 0;\n  }\n\n  if (typeof cornerRadius === 'undefined') {\n    cornerRadius = 0;\n  }\n\n  if (!vm.horizontal) {\n    // bar\n    left = vm.x - vm.width / 2;\n    right = vm.x + vm.width / 2;\n    top = vm.y;\n    bottom = vm.base;\n    signX = 1;\n    signY = bottom > top ? 1 : -1;\n    borderSkipped = vm.borderSkipped || 'bottom';\n  } else {\n    // horizontal bar\n    left = vm.base;\n    right = vm.x;\n    top = vm.y - vm.height / 2;\n    bottom = vm.y + vm.height / 2;\n    signX = right > left ? 1 : -1;\n    signY = 1;\n    borderSkipped = vm.borderSkipped || 'left';\n  }\n\n  // Canvas doesn't allow us to stroke inside the width so we can\n  // adjust the sizes to fit if we're setting a stroke on the line\n  if (borderWidth) {\n    // borderWidth shold be less than bar width and bar height.\n    const barSize = Math.min(Math.abs(left - right), Math.abs(top - bottom));\n    borderWidth = borderWidth > barSize ? barSize : borderWidth;\n    const halfStroke = borderWidth / 2;\n    // Adjust borderWidth when bar top position is near vm.base(zero).\n    const borderLeft =\n      left + (borderSkipped !== 'left' ? halfStroke * signX : 0);\n    const borderRight =\n      right + (borderSkipped !== 'right' ? -halfStroke * signX : 0);\n    const borderTop = top + (borderSkipped !== 'top' ? halfStroke * signY : 0);\n    const borderBottom =\n      bottom + (borderSkipped !== 'bottom' ? -halfStroke * signY : 0);\n    // not become a vertical line?\n    if (borderLeft !== borderRight) {\n      top = borderTop;\n      bottom = borderBottom;\n    }\n    // not become a horizontal line?\n    if (borderTop !== borderBottom) {\n      left = borderLeft;\n      right = borderRight;\n    }\n  }\n\n  ctx.beginPath();\n  ctx.fillStyle = vm.backgroundColor;\n  ctx.strokeStyle = vm.borderColor;\n  ctx.lineWidth = borderWidth;\n\n  // Corner points, from bottom-left to bottom-right clockwise\n  // | 1 2 |\n  // | 0 3 |\n  const corners = [[left, bottom], [left, top], [right, top], [right, bottom]];\n\n  // Find first (starting) corner with fallback to 'bottom'\n  const borders = ['bottom', 'left', 'top', 'right'];\n  let startCorner = borders.indexOf(borderSkipped, 0);\n  if (startCorner === -1) {\n    startCorner = 0;\n  }\n\n  function cornerAt(index) {\n    return corners[(startCorner + index) % 4];\n  }\n\n  // Draw rectangle from 'startCorner'\n  let corner = cornerAt(0);\n  ctx.moveTo(corner[0], corner[1]);\n\n  for (let i = 1; i < 4; i += 1) {\n    corner = cornerAt(i);\n    let nextCornerId = i + 1;\n    if (nextCornerId === 4) {\n      nextCornerId = 0;\n    }\n\n    const width = corners[2][0] - corners[1][0];\n    const height = corners[0][1] - corners[1][1];\n    const x = corners[1][0];\n    const y = corners[1][1];\n\n    radius = cornerRadius;\n    // Fix radius being too large\n    if (radius > Math.abs(height) / 2) {\n      radius = Math.floor(Math.abs(height) / 2);\n    }\n    if (radius > Math.abs(width) / 2) {\n      radius = Math.floor(Math.abs(width) / 2);\n    }\n\n    if (height < 0) {\n      // Negative values in a standard bar chart\n      const xTl = x;\n      const xTr = x + width;\n      const yTl = y + height;\n      const yTr = y + height;\n\n      const xBl = x;\n      const xBr = x + width;\n      const yBl = y;\n      const yBr = y;\n\n      // Draw\n      ctx.moveTo(xBl + radius, yBl);\n      ctx.lineTo(xBr - radius, yBr);\n      ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n      ctx.lineTo(xTr, yTr + radius);\n      ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n      ctx.lineTo(xTl + radius, yTl);\n      ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n      ctx.lineTo(xBl, yBl - radius);\n      ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n    } else if (width < 0) {\n      // Negative values in a horizontal bar chart\n      const xTl = x + width;\n      const xTr = x;\n      const yTl = y;\n      const yTr = y;\n\n      const xBl = x + width;\n      const xBr = x;\n      const yBl = y + height;\n      const yBr = y + height;\n\n      // Draw\n      ctx.moveTo(xBl + radius, yBl);\n      ctx.lineTo(xBr - radius, yBr);\n      ctx.quadraticCurveTo(xBr, yBr, xBr, yBr - radius);\n      ctx.lineTo(xTr, yTr + radius);\n      ctx.quadraticCurveTo(xTr, yTr, xTr - radius, yTr);\n      ctx.lineTo(xTl + radius, yTl);\n      ctx.quadraticCurveTo(xTl, yTl, xTl, yTl + radius);\n      ctx.lineTo(xBl, yBl - radius);\n      ctx.quadraticCurveTo(xBl, yBl, xBl + radius, yBl);\n    } else {\n      // Positive Value\n      ctx.moveTo(x + radius, y);\n      ctx.lineTo(x + width - radius, y);\n      ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n      ctx.lineTo(x + width, y + height - radius);\n      ctx.quadraticCurveTo(\n        x + width,\n        y + height,\n        x + width - radius,\n        y + height\n      );\n      ctx.lineTo(x + radius, y + height);\n      ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n      ctx.lineTo(x, y + radius);\n      ctx.quadraticCurveTo(x, y, x + radius, y);\n    }\n  }\n\n  ctx.fill();\n  if (borderWidth) {\n    ctx.stroke();\n  }\n}\n\nexport default {\n  draw\n};\n","import Moment from 'moment';\r\nimport { genfunction } from 'helpers';\r\n\r\nconst { nodeNo, PaymentTypeID, CashlessTypeID, GiftCardTypeID, TransactionUserName,\r\n    DonationProductID, TransactionFeeProductID, ApplyTransactionFee, Currency,\r\n    ShowOrderItemPriceAs, EnableAlternateMerchantOnline, Merchant2TypeID, StreetAddressTypeID, UseFamilyJoinDateOnMembershipPackageEarlyRenewal } = window['runConfig'];\r\n\r\nexport default {\r\n    GetMonths() {\r\n        var monthNames = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\r\n        return monthNames;\r\n    },\r\n\r\n    GetYears(numberofyears) {\r\n        var years = [];\r\n        var currentyear = new Date().getFullYear();\r\n        for (let index = 0; index < numberofyears; index++) {\r\n            years.push(currentyear + index)\r\n        }\r\n        return years;\r\n    },\r\n\r\n    ccyFormat(num) {\r\n        return Currency + num.toFixed(2);\r\n    },\r\n\r\n    priceRow(qty, unit) {\r\n        return qty * unit;\r\n    },\r\n\r\n    subproducttotal(products, cashless, donation, transactionfee, membershipPackages, gatickets, giftcards, orderProducts, donationProducts) {\r\n\r\n        let totalDiscount = 0;\r\n        let transFee = 0;\r\n        let membershipPackTotal = 0;\r\n        products.map(product => (\r\n            product.CouponItems.map(e =>\r\n                totalDiscount += e.TotalAmount\r\n            )\r\n        ));\r\n\r\n        let producttotal = this.GetProductsTotalPrice(products).total;\r\n        let gaticketstotal = gatickets ? gatickets.map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        let cashlesstotal = cashless ? cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        let giftcardstotal = giftcards ? giftcards.map(({ CartTotalAmount }) => CartTotalAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        let orderProductsTotal = this.getOrderProductsTotalPrice(orderProducts).total;\r\n        let donationProductsTotal = donationProducts ? donationProducts.map(({ Amount }) => Amount).reduce((sum, i) => sum + i, 0) : 0;\r\n\r\n        if (giftcardstotal > 0) {\r\n            producttotal = producttotal + giftcardstotal;\r\n        }\r\n\r\n        producttotal = donation && donation.isdonationApplied ? producttotal + parseFloat(donation.price) : producttotal;\r\n\r\n        if (membershipPackages && membershipPackages.length > 0) {\r\n            membershipPackTotal = membershipPackages.map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0);\r\n\r\n            membershipPackages[0].MembershipProducts && membershipPackages[0].MembershipProducts.map(m => {\r\n\r\n                if (m.CouponCodeApplied && m.CouponCodeApplied.length > 0) {\r\n\r\n                    if (m.MembershipType == \"AddOn\" && m.Quantity > 0) {\r\n                        totalDiscount += m.CouponCodeIncTax;\r\n                    }\r\n                    else if (m.MembershipType == \"Membership\" && m.Users.length > 0) {\r\n\r\n                        m.Users.map(u => {\r\n                            totalDiscount += m.CouponCodeIncTax;\r\n                        })\r\n                    }\r\n                }\r\n\r\n            });\r\n\r\n        }\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID'))//&& producttotal > cashlesstotal\r\n        {\r\n            if (transactionfee.Price > 0) {\r\n                if (!transactionfee.PriceIsAPercentage) {\r\n                    if ((producttotal + membershipPackTotal + gaticketstotal + orderProductsTotal + donationProductsTotal) - totalDiscount > 0)\r\n                        transFee = parseFloat(transactionfee.Price);\r\n                }\r\n                else {\r\n                    transFee = Math.round(parseFloat((((producttotal + membershipPackTotal + gaticketstotal + orderProductsTotal + donationProductsTotal) - totalDiscount) - cashlesstotal).toFixed(2) * transactionfee.Price)) / 100;\r\n                }\r\n\r\n                if (transFee > 0 && transactionfee.Taxes[0] && !transactionfee.Taxes[0].TaxIncluded) {\r\n                    transFee += this.ApplyTransactionFeeTax(transactionfee, transFee);\r\n                }\r\n            }\r\n        }\r\n\r\n        return parseFloat(((producttotal + membershipPackTotal + gaticketstotal + orderProductsTotal + donationProductsTotal + + transFee - totalDiscount) - cashlesstotal).toFixed(2));\r\n    },\r\n\r\n    calculateeventsamount(events) {\r\n        events.forEach(event => {\r\n            event.TicketAmount = 0;\r\n            event.TaxAmount = 0;\r\n            event.TotalAmount = 0;\r\n            event.TourProducts.forEach(product => {\r\n                if (product.PriceMatrix && product.PriceMatrix.length > 0) {\r\n                    var itemp = (product.PriceMatrix[0].Price * product.Quantity);\r\n                    var itemtax = 0;\r\n                    var itemTAmount = 0;\r\n                    product.PriceMatrix[0].Taxes.forEach(tax => {\r\n                        if (tax.TaxIncluded == true) {\r\n                            itemTAmount = Math.round((itemp / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                            itemtax = Math.round((itemp - itemTAmount) * 100) / 100;\r\n                        }\r\n                        else {\r\n                            itemTAmount = itemp;\r\n                            if (tax.TaxPercentage > 0) {\r\n                                itemtax += Math.round((itemTAmount * (tax.TaxPercentage / 100)) * 100) / 100;\r\n                            }\r\n                        }\r\n                    });\r\n\r\n                    product.IndividualPrice = product.PriceMatrix[0].Price;\r\n                    product.ProductAmount = itemTAmount;\r\n                    product.ProductTaxAmount = itemtax;\r\n                    product.ProductTotalAmount = product.ProductAmount + product.ProductTaxAmount;\r\n                    event.TicketAmount += itemTAmount;\r\n                    event.TaxAmount += itemtax;\r\n                    event.TotalAmount = Math.round((event.TicketAmount + event.TaxAmount) * 100) / 100;\r\n                }\r\n\r\n            });\r\n        });\r\n\r\n        return events;\r\n    },\r\n    convertEventstoTransaction(events, cashless, customerId, token, donation, transactionFee, membershipPackages, gatickets, isManageBooking, booking, managebkngTicketsModify, refundType, additionalPayment, giftcards, bookingUDFS, orderProducts, showTransFee, donationProducts, enteredAmountToPay) {\r\n        let transactions = [];\r\n        let trans = {};\r\n\r\n        if (refundType === \"AdditionalPayment\" && isManageBooking && booking) {\r\n            trans.TransactionType = \"Booking Payment\";\r\n        }\r\n\r\n        trans.NodeNo = nodeNo;\r\n        trans.CustomerID = customerId;\r\n        trans.Username = TransactionUserName;\r\n        trans.Products = [];\r\n        trans.Payments = [];\r\n        let index = 0;\r\n        let totalAmount = 0;\r\n        let merchant1Total = 0;\r\n        let merchant2Total = 0;\r\n\r\n\r\n        if (isManageBooking && booking && refundType !== \"AdditionalPayment\") {\r\n\r\n            if (managebkngTicketsModify === false || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\") {\r\n                booking.BookingProducts.forEach((product) => {\r\n                    if (product.Quantity > 0) {\r\n\r\n                        let newp = this.MMBReturnProduct(++index, product, booking);\r\n\r\n                        let ReturnCouponAppliedQty = 0;\r\n                        if (managebkngTicketsModify === false && refundType !== \"CancelBooking\" && refundType !== \"CancelGiftCardRefund\") {\r\n                            newp.BookingStatus = \"Change Date / Time\";\r\n\r\n                            if (booking.BookingCoupons && booking.BookingCoupons.length > 0 && booking.BookingCoupons.filter(x => x.TourProductID === product.TourProductID).length > 0) {\r\n\r\n                                let couponProd = booking.BookingCoupons.find(x => x.TourProductID === product.TourProductID);\r\n\r\n                                if (couponProd) {\r\n\r\n                                    if (couponProd.TimesUsed < Math.abs(product.Quantity)) {\r\n                                        ReturnCouponAppliedQty = Math.abs(product.Quantity) - couponProd.TimesUsed;\r\n                                        newp.Quantity = -Math.abs(couponProd.TimesUsed);\r\n                                    }\r\n\r\n                                    newp.CouponCodeApplied = couponProd.CouponCodeApplied;\r\n\r\n                                    if (ReturnCouponAppliedQty > 0) {\r\n                                        //index = this.MMBReturnUniqueCoupinNonItems(ReturnCouponAppliedQty, newp, product, couponProd, index+1, trans);\r\n                                        this.MMBReturnUniqueCoupinNonItems(ReturnCouponAppliedQty, newp, product, couponProd, ++index, trans);\r\n                                        return;\r\n                                    }\r\n                                }\r\n                            }\r\n                        }\r\n\r\n                        if (refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\") {\r\n                            newp.CancelBooking = true;\r\n                        }\r\n\r\n                        trans.Products.push(newp);\r\n                    }\r\n                });\r\n            }\r\n\r\n            if (managebkngTicketsModify) {\r\n                booking.BookingProducts.forEach((product) => {\r\n                    if (product.Quantity > 0 && product.hasOwnProperty('newQuantity') && product.Quantity !== product.newQuantity) {\r\n\r\n                        let newp = this.GetMMBModifyProduct(++index, product, booking);\r\n                        trans.Products.push(newp);\r\n                    }\r\n                });\r\n            }\r\n        }\r\n        \r\n        events.forEach(event => {\r\n            let prevTourEventID = 0;\r\n\r\n            event.TourProducts.forEach((product) => {\r\n                if (product.Quantity > 0) {\r\n\r\n                    let newp = {\r\n                        ProductLineNo:++index,\r\n                        ProductID: product.PriceMatrix[0].ProductID,\r\n                        Quantity: product.Quantity,\r\n                        LinePriceExTax: product.ProductAmount,\r\n                        LinePriceTax: product.ProductTaxAmount,\r\n                        LinePriceIncTax: product.ProductTotalAmount,\r\n                        LinePaidExTax: genfunction.IsNotFullPay(event.PaymentOption) ? product.ProductSelectedAmount : product.ProductAmount,\r\n                        LinePaidTax: genfunction.IsNotFullPay(event.PaymentOption) ? product.ProductSelectedTaxAmount : product.ProductTaxAmount,\r\n                        LinePaidIncTax: genfunction.IsNotFullPay(event.PaymentOption) ? product.ProductSelectedTotalAmount : product.ProductTotalAmount,\r\n                        TourEventID: event.TourEventID,\r\n                        TourProductID: product.TourProductID,\r\n                        CostRateID: product.PriceMatrix[0].CostRateID,\r\n                        TourHoldRef: event.TourHoldRef,\r\n                        CouponCodeApplied: this.FindCouponCode(event, event.TourEventID, product.TourProductID, product.Quantity)\r\n                    };\r\n\r\n                    if (isManageBooking && booking && managebkngTicketsModify) {\r\n                        newp.TourEventID = booking.TourEventID;\r\n                        newp.BookingID = booking.BookingID;\r\n                        newp.BookingStatus = \"Modify Tickets\";\r\n                    }\r\n\r\n                    if (isManageBooking && booking && managebkngTicketsModify === false && refundType !== \"CancelBooking\") {\r\n                        newp.BookingID = booking.BookingID;\r\n                    }\r\n\r\n                    //Add Booking UDF's\r\n                    if (isManageBooking == false && prevTourEventID === 0 && newp.Quantity > 0 && newp.TourEventID > 0 && newp.LinePriceIncTax >= 0) {\r\n                        this.AddBookingUDFs(bookingUDFS, trans, newp, event.BookingTypeID);\r\n                        prevTourEventID++;\r\n                    }\r\n\r\n                    if (this.FindUniqueCoupon(event, event.TourEventID, product.TourProductID) && newp.Quantity > 1) {\r\n                        newp = this.UpdateUniqueCouponProduct(event, newp.TourEventID, newp);\r\n                    }\r\n\r\n                    totalAmount += newp.LinePriceIncTax;\r\n                    trans.Products.push(newp);\r\n                }\r\n            });\r\n\r\n            if (event.CouponItems.length > 0) {\r\n\r\n                event.CouponItems.forEach((coupon) => {\r\n\r\n                    let prod = Object.assign({}, trans.Products.filter(x => x.TourEventID == coupon.TourEventID\r\n                        && x.TourProductID == coupon.TourProductID)[0]);\r\n\r\n                    prod.ProductLineNo = ++index;\r\n\r\n                    if (coupon.isUniqueCoupon) {\r\n\r\n                        if (coupon.ProdQuantity - coupon.Quantity != 0 && coupon.Discount > 0) //coupon.Discount == 100\r\n                        {\r\n                            if (coupon.isPercentage) {\r\n                                trans.Products.push(genfunction.AddUniqueCouponItem(prod, coupon));\r\n                                prod.ProductLineNo = ++index;\r\n                            }\r\n                        }\r\n\r\n                        prod.CouponHoldRef = coupon.CouponHoldRef;\r\n                    }\r\n\r\n                    if ((coupon.isUniqueCoupon && coupon.Discount > 0) || coupon.isUniqueCoupon == false) //coupon.Discount == 100\r\n                    {\r\n                        prod.Quantity = coupon.Quantity;\r\n                    }\r\n\r\n                    prod.TourProductID = coupon.ApplyDiscountTourProductID;\r\n                    prod.TourProductName = coupon.ApplyDiscountTourProductName;\r\n                    prod.ProductID = coupon.ApplyDiscountProductID;\r\n                    prod.LinePriceExTax = -coupon.TicketAmount;\r\n                    prod.LinePriceTax = -coupon.TicketTax;\r\n                    prod.LinePriceIncTax = -coupon.TotalAmount;\r\n                    prod.LinePaidExTax = -coupon.TicketAmount;\r\n                    prod.LinePaidTax = -coupon.TicketTax;\r\n                    prod.LinePaidIncTax = -coupon.TotalAmount;\r\n                    prod.CouponCodeApplied = null;\r\n\r\n                    totalAmount -= coupon.TotalAmount;\r\n                    trans.Products.push(prod);\r\n                });\r\n            }\r\n        });\r\n\r\n        gatickets.forEach(tickets => {\r\n            if (tickets.Quantity > 0) {\r\n                let newp = {\r\n                    ProductLineNo: ++index,\r\n                    ProductID: tickets.ProductID,\r\n                    Quantity: tickets.Quantity,\r\n                    LinePriceExTax: tickets.TicketAmount,\r\n                    LinePriceTax: tickets.TaxAmount,\r\n                    LinePriceIncTax: tickets.TotalAmount,\r\n                    LinePaidExTax: tickets.TicketAmount,\r\n                    LinePaidTax: tickets.TaxAmount,\r\n                    LinePaidIncTax: tickets.TotalAmount,\r\n                    CouponCodeApplied: tickets.CouponCodeApplied\r\n                };\r\n\r\n                totalAmount += newp.LinePriceIncTax;\r\n                trans.Products.push(newp);\r\n            }\r\n        });\r\n\r\n        if (donationProducts && donationProducts.length > 0) {\r\n            donationProducts.forEach(product => {\r\n                let newp = {\r\n                    ProductLineNo: ++index,\r\n                    ProductID: product.ProductID,\r\n                    Quantity: 1,\r\n                    LinePriceExTax: product.Amount,\r\n                    LinePriceTax: 0,\r\n                    LinePriceIncTax: product.Amount,\r\n                    LinePaidExTax: product.Amount,\r\n                    LinePaidTax: 0,\r\n                    LinePaidIncTax: product.Amount,\r\n                    ProductNotes: product.ProductNotes ? product.ProductNotes : \"\"\r\n                }\r\n                trans.Products.push(newp);\r\n            })\r\n        }\r\n\r\n        orderProducts.forEach((product) => {\r\n            let newp = {\r\n                ProductLineNo: ++index,\r\n                ProductID: product.ProductID,\r\n                Quantity: product.Quantity,\r\n                LinePriceExTax: (product.PriceExTax * product.Quantity),\r\n                LinePriceTax: (product.PriceTax * product.Quantity),\r\n                LinePriceIncTax: (product.PriceIncTax * product.Quantity),\r\n                LinePaidExTax: (product.PriceExTax * product.Quantity),\r\n                LinePaidTax: (product.PriceTax * product.Quantity),\r\n                LinePaidIncTax: (product.PriceIncTax * product.Quantity),\r\n                ProductNotes: product.ProductNotes,\r\n            };\r\n\r\n            if (product.Options && product.Options.length > 0) {\r\n                newp.Options = [];\r\n                product.Options.forEach(option => {\r\n                    let optionProducts = option.Products.filter(x => x.IsSelected);\r\n                    optionProducts.forEach(optionProduct => {\r\n                        let newop = {\r\n                            ProductLineNo: ++index,\r\n                            ProductID: optionProduct.ProductID,\r\n                            Quantity: product.Quantity,\r\n                            LinePriceExTax: optionProduct.PriceExTax * product.Quantity,\r\n                            LinePriceTax: optionProduct.PriceTax * product.Quantity,\r\n                            LinePriceIncTax: optionProduct.PriceIncTax * product.Quantity,\r\n                            LinePaidExTax: optionProduct.PriceExTax * product.Quantity,\r\n                            LinePaidTax: optionProduct.PriceTax * product.Quantity,\r\n                            LinePaidIncTax: optionProduct.PriceIncTax * product.Quantity\r\n                        }\r\n                        newp.Options.push(newop);\r\n                    });\r\n                });\r\n            }\r\n            trans.Products.push(newp);\r\n        });\r\n\r\n\r\n        if (donation && donation.isdonationApplied) {\r\n            let donationProd = {\r\n                ProductLineNo: ++index,\r\n                ProductID: DonationProductID,\r\n                Quantity: 1,\r\n                LinePriceExTax: parseFloat(donation.price),\r\n                LinePriceTax: 0,\r\n                LinePriceIncTax: parseFloat(donation.price),\r\n                LinePaidExTax: parseFloat(donation.price),\r\n                LinePaidTax: 0,\r\n                LinePaidIncTax: parseFloat(donation.price)\r\n            }\r\n\r\n            trans.Products.push(donationProd);\r\n        }\r\n\r\n        var transFee = 0;\r\n        var transTax = 0;\r\n\r\n        if (ApplyTransactionFee && showTransFee && transactionFee && transactionFee.hasOwnProperty('ProductID')) {\r\n\r\n            let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n\r\n            transFee = (refundType === \"AdditionalPayment\" || (refundType === \"\" && enteredAmountToPay > 0) ?\r\n                this.Rounded(this.GetTransactionFeeForPartialPayment(transactionFee, enteredAmountToPay, cashlesstotal))\r\n                : this.Rounded(this.GetTransactionFee(transactionFee, events, donation, cashless, membershipPackages, gatickets, giftcards, orderProducts, donationProducts)))\r\n\r\n            transTax = this.ApplyTransactionFeeTax(transactionFee, transFee);\r\n\r\n            if (transactionFee.Taxes) {\r\n                if (transactionFee.Taxes[0].TaxIncluded) {\r\n                    transFee -= transTax;\r\n                }\r\n            }\r\n\r\n            if ((transFee + transTax) > 0) {\r\n                let transFeeProd = {\r\n                    ProductLineNo: ++index,\r\n                    ProductID: TransactionFeeProductID,\r\n                    Quantity: 1,\r\n                    LinePriceExTax: this.Rounded(transFee),\r\n                    LinePriceTax: transTax,\r\n                    LinePriceIncTax: this.Rounded(transFee + transTax),\r\n                    LinePaidExTax: this.Rounded(transFee),\r\n                    LinePaidTax: transTax,\r\n                    LinePaidIncTax: this.Rounded(transFee + transTax)\r\n                }\r\n\r\n                trans.Products.push(transFeeProd);\r\n            }\r\n        }\r\n\r\n        if (membershipPackages && membershipPackages.length > 0) {\r\n\r\n            let primaryMemberStartDate = \"\";\r\n\r\n            membershipPackages.forEach(memPack => {\r\n\r\n                memPack.MembershipProducts.forEach(m => {\r\n\r\n                    if ((m.MembershipType === \"AddOn\" && m.Quantity > 0) || (m.MembershipType === \"Membership\" && m.Users && m.Users.length > 0)) {\r\n\r\n                        if (m.MembershipType === \"Membership\" && m.Users && m.Users.length > 0) {\r\n                            m.Users.forEach(u => {\r\n\r\n                                let startDate = \"\";\r\n\r\n                                if (UseFamilyJoinDateOnMembershipPackageEarlyRenewal) {\r\n\r\n                                    if (u.isRenewal && u.isPrimaryMember) {\r\n\r\n                                        if (u.MembershipExpiryDate == \"\" || (Moment(u.MembershipExpiryDate).format('YYYY-MM-DDT00:00:00') < Moment(new Date()).format('YYYY-MM-DDT00:00:00'))) {\r\n                                            startDate = Moment(new Date()).format('YYYY-MM-DDT00:00:00');\r\n                                        }\r\n                                        else {\r\n                                            startDate = new Date(u.MembershipExpiryDate);\r\n                                            startDate.setDate(startDate.getDate() + 1);\r\n                                            startDate = Moment(startDate).format('YYYY-MM-DDT00:00:00');\r\n                                        }\r\n\r\n                                        primaryMemberStartDate = startDate;\r\n                                    }\r\n                                    else {\r\n\r\n                                        if (primaryMemberStartDate === \"\" || primaryMemberStartDate.trim().length < 1) {\r\n                                            startDate = Moment(new Date()).format('YYYY-MM-DDT00:00:00');\r\n                                        }\r\n                                        else {\r\n                                            startDate = primaryMemberStartDate;\r\n                                        }\r\n                                    }\r\n                                }\r\n                                else {\r\n\r\n                                    startDate = Moment(new Date()).format('YYYY-MM-DDT00:00:00');\r\n\r\n                                    if (u.isRenewal) {\r\n                                        if (u.MembershipExpiryDate == \"\" || (Moment(u.MembershipExpiryDate).format('YYYY-MM-DDT00:00:00') < Moment(new Date()).format('YYYY-MM-DDT00:00:00'))) {\r\n                                            startDate = Moment(new Date()).format('YYYY-MM-DDT00:00:00');\r\n                                        }\r\n                                        else {\r\n                                            startDate = new Date(u.MembershipExpiryDate);\r\n                                            startDate.setDate(startDate.getDate() + 1);\r\n                                            startDate = Moment(startDate).format('YYYY-MM-DDT00:00:00');\r\n                                        }\r\n                                    }\r\n                                }\r\n\r\n                                let memProd = {\r\n                                    ProductID: m.ProductID,\r\n                                    ProductLineNo: ++index,\r\n                                    Quantity: 1,\r\n                                    LinePriceExTax: m.SubTotal,\r\n                                    LinePriceTax: m.TotalTax,\r\n                                    LinePriceIncTax: m.TotalAmount,\r\n                                    LinePaidExTax: m.SubTotal,\r\n                                    LinePaidTax: m.TotalTax,\r\n                                    LinePaidIncTax: m.TotalAmount,\r\n                                    MembershipPackageID: memPack.MembershipPackageID,\r\n                                    MembershipStartDate: startDate,\r\n                                    MembershipExpiryDate: this.GetMembershipExpiryDate(new Date(startDate), m.MembershipDuration ? m.MembershipDuration.toLowerCase() : \"\"),\r\n                                    MemberCustomerID: u.isRenewal ? u.userNo : u.isPrimaryMember ? -1 : 0,\r\n                                    IsRenewal: u.isRenewal,\r\n                                    RenewedUniquePackageRef: u.UniquePackageRef\r\n                                }\r\n\r\n                                if (m.hasOwnProperty('CouponCodeApplied') && m.CouponCodeApplied.length > 0) {\r\n                                    memProd.LinePriceExTax = m.PriceAfterCoupon;\r\n                                    memProd.LinePriceTax = m.TaxAfterCoupon;\r\n                                    memProd.LinePriceIncTax = m.TotalAmountAfterCoupon;\r\n                                    memProd.LinePaidExTax = m.PriceAfterCoupon;\r\n                                    memProd.LinePaidTax = m.TaxAfterCoupon;\r\n                                    memProd.LinePaidIncTax = m.TotalAmountAfterCoupon;\r\n                                    memProd.CouponCodeApplied = m.CouponCodeApplied;\r\n                                    memProd.CouponDiscountExTax = m.CouponCodeExTax;\r\n                                    memProd.CouponDiscountTax = m.CouponCodeTax;\r\n                                    memProd.CouponDiscountIncTax = m.CouponCodeIncTax;\r\n\r\n                                    if (m.hasOwnProperty('ExtraMonths') && m.ExtraMonths !== undefined && m.ExtraMonths > 0) {\r\n                                        memProd.MembershipExpiryDate = this.GetMembershipExpiryDate(new Date(memProd.MembershipExpiryDate), m.ExtraMonths + \" months\");\r\n                                    }\r\n\r\n                                    if (m.hasOwnProperty('ExtraDays') && m.ExtraDays !== undefined && m.ExtraDays > 0) {\r\n                                        memProd.MembershipExpiryDate = this.GetMembershipExpiryDate(new Date(memProd.MembershipExpiryDate), (m.ExtraDays + 1) + \" days\");\r\n                                    }\r\n\r\n                                }\r\n\r\n                                trans.Products.push(memProd);\r\n                            });\r\n                        }\r\n                        else {\r\n\r\n\r\n                            let startDate = \"\";\r\n\r\n                            if (m.isRenewPackage) {\r\n                                startDate = new Date(m.LastMembershipExpiryDate);\r\n                                startDate.setDate(startDate.getDate() + 1);\r\n                                startDate = Moment(startDate).format('YYYY-MM-DDT00:00:00');\r\n                            }\r\n                            else {\r\n                                startDate = Moment(new Date()).format('YYYY-MM-DDT00:00:00');\r\n                            }\r\n\r\n                            let memProd = {\r\n                                ProductID: m.ProductID,\r\n                                ProductLineNo: ++index,\r\n                                Quantity: 1,\r\n                                LinePriceExTax: m.SubTotal,\r\n                                LinePriceTax: m.TotalTax,\r\n                                LinePriceIncTax: m.TotalAmount,\r\n                                MembershipPackageID: memPack.MembershipPackageID,\r\n                                MembershipStartDate: startDate,\r\n                                MembershipExpiryDate: this.GetMembershipExpiryDate(new Date(startDate), m.MembershipDuration ? m.MembershipDuration.toLowerCase() : \"\"),\r\n                                MemberCustomerID: m.isRenewPackage ? -2 : -1,\r\n                                IsRenewal: false,\r\n                                RenewedUniquePackageRef: ''\r\n                            }\r\n\r\n                            if (m.hasOwnProperty('CouponCodeApplied') && m.CouponCodeApplied.length > 0) {\r\n                                memProd.LinePriceExTax = m.PriceAfterCoupon;\r\n                                memProd.LinePriceTax = m.TaxAfterCoupon;\r\n                                memProd.LinePriceIncTax = m.TotalAmountAfterCoupon;\r\n                                memProd.LinePaidExTax = m.PriceAfterCoupon;\r\n                                memProd.LinePaidTax = m.TaxAfterCoupon;\r\n                                memProd.LinePaidIncTax = m.TotalAmountAfterCoupon;\r\n                                memProd.CouponCodeApplied = m.CouponCodeApplied;\r\n                                memProd.CouponDiscountExTax = m.CouponCodeExTax;\r\n                                memProd.CouponDiscountTax = m.CouponCodeTax;\r\n                                memProd.CouponDiscountIncTax = m.CouponCodeIncTax;\r\n\r\n                                if (m.hasOwnProperty('ExtraMonths') && m.ExtraMonths !== undefined && m.ExtraMonths > 0) {\r\n\r\n                                    memProd.MembershipExpiryDate = this.GetMembershipExpiryDate(new Date(memProd.MembershipExpiryDate), m.ExtraMonths + \" months\");\r\n                                }\r\n\r\n                                if (m.hasOwnProperty('ExtraDays') && m.ExtraDays !== undefined && m.ExtraDays > 0) {\r\n                                    memProd.MembershipExpiryDate = this.GetMembershipExpiryDate(new Date(memProd.MembershipExpiryDate), (m.ExtraDays + 1) + \" days\");\r\n                                }\r\n                            }\r\n\r\n                            trans.Products.push(memProd);\r\n                        }\r\n\r\n                    }\r\n\r\n                });\r\n\r\n            });\r\n\r\n        }\r\n\r\n        let paymentLineNo = 1;\r\n        totalAmount = this.subproducttotal(events, cashless, donation, (showTransFee ? transactionFee : null), membershipPackages, gatickets, giftcards, orderProducts, donationProducts);\r\n\r\n        let isUseAlternateMerchant = booking && booking.hasOwnProperty('BookingID') ? booking.UseAlternateMerchant : null;\r\n        //!isManageBooking &&\r\n\r\n        if (EnableAlternateMerchantOnline && (orderProducts && orderProducts.length < 1)) {\r\n\r\n            let merchantTotalObj = isManageBooking ? genfunction.CalculateMultiMerchantTotalForMMB(events, cashless, (showTransFee ? transactionFee : null), enteredAmountToPay, booking) :\r\n                this.CalculateMultiMerchantTotal(events, gatickets, membershipPackages, giftcards, donation, (showTransFee ? transactionFee : null), cashless, donationProducts);\r\n\r\n            if (merchantTotalObj) {\r\n                merchant1Total = merchantTotalObj.merchant1Total;\r\n                merchant2Total = merchantTotalObj.merchant2Total;\r\n            }\r\n\r\n            totalAmount = 0;\r\n        }\r\n\r\n        if (isManageBooking && booking) {\r\n            if (managebkngTicketsModify === false && refundType !== \"AdditionalPayment\" && !EnableAlternateMerchantOnline) {\r\n\r\n                let totalPaid = 0;\r\n                if (booking.BookingPayments && booking.BookingPayments.length > 0) {\r\n                    booking.BookingPayments.forEach(x => {\r\n                        totalPaid += x.PaymentAmount;\r\n                    })\r\n                }\r\n\r\n                totalAmount = parseFloat((totalAmount - totalPaid).toFixed(2));\r\n            }\r\n\r\n            if (managebkngTicketsModify && refundType !== \"AdditionalPayment\" && !EnableAlternateMerchantOnline) {\r\n\r\n                let totalPaid = 0;\r\n\r\n                if (trans.Products.filter(x => x.Quantity < 0 && x.BookingID > 0).length > 0) {\r\n                    totalPaid = trans.Products.filter(x => x.Quantity < 0 && x.BookingID > 0).map(({ LinePriceIncTax }) => LinePriceIncTax).reduce((sum, i) => sum + i, 0);\r\n                }\r\n\r\n                totalAmount -= Math.abs(totalPaid);\r\n            }\r\n\r\n            if ((refundType === \"GiftCardRefund\" || refundType === \"CancelGiftCardRefund\") && ((!EnableAlternateMerchantOnline && totalAmount < 0) || (EnableAlternateMerchantOnline && (merchant1Total < 0 || merchant2Total < 0)))) {\r\n\r\n                let amount = EnableAlternateMerchantOnline ? (isUseAlternateMerchant === false ? merchant1Total : merchant2Total) : totalAmount;\r\n\r\n                let giftcardProd = {\r\n                    ProductLineNo: trans.Products.length + 1,\r\n                    ProductID: GiftCardTypeID,\r\n                    Quantity: 1,\r\n                    LinePriceExTax: Math.abs(amount),\r\n                    LinePriceTax: 0,\r\n                    LinePriceIncTax: Math.abs(amount),\r\n                    LinePaidExTax: Math.abs(amount),\r\n                    LinePaidTax: 0,\r\n                    LinePaidIncTax: Math.abs(amount)\r\n                }\r\n\r\n                trans.Products.push(giftcardProd);\r\n            }\r\n\r\n            if (refundType === \"AdditionalPayment\") {\r\n\r\n                let transFeeWithTax = transFee + transTax;\r\n                let additionalPaymentWithoutTransactionFee = transFeeWithTax > 0 ? this.Rounded(additionalPayment - transFeeWithTax) :\r\n                    additionalPayment;\r\n\r\n                let addpayment = {\r\n                    ProductLineNo: trans.Products.length + 1,\r\n                    BookingID: booking.BookingID,\r\n                    LinePaidIncTax: this.AddCashlessAndAdditionalPayment(cashless, additionalPaymentWithoutTransactionFee)\r\n                }\r\n\r\n                trans.Products.push(addpayment);\r\n            }\r\n        }\r\n\r\n\r\n        if (giftcards && giftcards.length > 0) {\r\n\r\n            giftcards.filter(x => x.AddedToCart && x.CartTotalAmount > 0).map(gc => {\r\n\r\n                let giftcardProd = {\r\n                    ProductLineNo: trans.Products.length + 1,\r\n                    ProductID: gc.ProductID,\r\n                    Quantity: gc.CartQty,\r\n                    LinePriceExTax: gc.CartTotalAmount,\r\n                    LinePriceTax: 0,\r\n                    LinePriceIncTax: gc.CartTotalAmount,\r\n                    LinePaidExTax: gc.CartTotalAmount,\r\n                    LinePaidTax: 0,\r\n                    LinePaidIncTax: gc.CartTotalAmount\r\n                }\r\n\r\n                trans.Products.push(giftcardProd);\r\n            });\r\n        }\r\n\r\n        if (refundType === \"\" && enteredAmountToPay > 0 && showTransFee && managebkngTicketsModify === false) {\r\n            totalAmount = additionalPayment;\r\n        }\r\n\r\n        if (EnableAlternateMerchantOnline === false || (orderProducts && orderProducts.length > 0)) {\r\n\r\n            if ((totalAmount > 0 && !isManageBooking) ||\r\n                (isManageBooking && booking && totalAmount !== 0 && !(refundType === \"GiftCardRefund\" || refundType === \"CancelGiftCardRefund\" || refundType === \"AdditionalPayment\"))) {\r\n                let payment = {\r\n                    PaymentLineNo: paymentLineNo,\r\n                    PaymentTypeID: PaymentTypeID,\r\n                    PaymentAmount: totalAmount,\r\n                    CreditCardToken: token.token,\r\n                    CreditCardType: token.cardtype,\r\n                    CreditCardReference: token.token,\r\n                    CreditCardMaskedNumber: token.cardnumber\r\n                };\r\n\r\n                trans.Payments.push(payment);\r\n                paymentLineNo++;\r\n            }\r\n        }\r\n\r\n        if (EnableAlternateMerchantOnline && (orderProducts && orderProducts.length < 1)) {\r\n\r\n            let paymentAmount = this.Rounded(merchant2Total + merchant1Total);\r\n\r\n            if (!isManageBooking || (isManageBooking && (paymentAmount > 0 || ((refundType === 'CreditCardRefund' || refundType === 'CancelBooking') && paymentAmount < 0)\r\n                || (refundType === \"AdditionalPayment\" && additionalPayment !== 0) && (refundType !== \"GiftCardRefund\" && refundType !== \"CancelGiftCardRefund\")))) {\r\n\r\n                if (merchant1Total > 0 || merchant1Total < 0) {\r\n                    let payment = {\r\n                        PaymentLineNo: paymentLineNo,\r\n                        PaymentTypeID: PaymentTypeID,\r\n                        PaymentAmount: merchant1Total,\r\n                        CreditCardToken: token.token,\r\n                        CreditCardType: token.cardtype,\r\n                        CreditCardReference: token.token,\r\n                        CreditCardMaskedNumber: token.cardnumber\r\n                    };\r\n\r\n                    trans.Payments.push(payment);\r\n                    paymentLineNo++;\r\n                }\r\n\r\n                if (merchant2Total > 0 || merchant2Total < 0) {\r\n                    let payment = {\r\n                        PaymentLineNo: paymentLineNo,\r\n                        PaymentTypeID: Merchant2TypeID,\r\n                        PaymentAmount: merchant2Total,\r\n                        CreditCardToken: token.token,\r\n                        CreditCardType: token.cardtype,\r\n                        CreditCardReference: token.token,\r\n                        CreditCardMaskedNumber: token.cardnumber\r\n                    };\r\n\r\n                    trans.Payments.push(payment);\r\n                    paymentLineNo++;\r\n                }\r\n            }\r\n        }\r\n\r\n        cashless.forEach(item => {\r\n            let payment = {\r\n                PaymentLineNo: paymentLineNo,\r\n                PaymentTypeID: CashlessTypeID,\r\n                PaymentAmount: item.HoldAmount,\r\n                GiftcardNumber: item.GiftcardNo,\r\n                GiftcardHoldRef: item.GiftcardHoldRef\r\n            };\r\n            trans.Payments.push(payment);\r\n            paymentLineNo++\r\n        });\r\n\r\n        if (!EnableAlternateMerchantOnline && refundType === \"AdditionalPayment\" && additionalPayment > 0) {\r\n\r\n            if (token.token.length > 0) {\r\n                let additionalPay = {\r\n                    PaymentLineNo: paymentLineNo,\r\n                    PaymentTypeID: PaymentTypeID,\r\n                    PaymentAmount: additionalPayment,\r\n                    CreditCardToken: token.token,\r\n                    CreditCardType: token.cardtype,\r\n                    CreditCardReference: token.token,\r\n                    CreditCardMaskedNumber: token.cardnumber && token.cardnumber.length > 0 ? token.cardnumber : ''\r\n                };\r\n\r\n                trans.Payments.push(additionalPay);\r\n                paymentLineNo++\r\n            }\r\n        }\r\n\r\n        transactions.push(trans);\r\n\r\n        return transactions;\r\n    },\r\n\r\n    GetRandomGiftCard(length) {\r\n        var randomChars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\r\n        var result = '';\r\n        for (var i = 0; i < length; i++) {\r\n            result += randomChars.charAt(Math.floor(Math.random() * randomChars.length));\r\n        }\r\n        return result;\r\n    },\r\n    UpdateUniqueCouponProduct(event, eventID, product) {\r\n\r\n        let prod = Object.assign({}, product);\r\n\r\n        if (event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == product.TourProductID).length > 0) {\r\n            let c = event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == product.TourProductID)[0];\r\n\r\n            if (prod && c.isPercentage && c.Discount > 0 && c.ProdQuantity - c.Quantity != 0) //c.Discount == 100\r\n            {\r\n                prod.Quantity = c.isPercentage && c.Discount > 0 ? prod.Quantity - c.Quantity : prod.Quantity; //c.Discount == 100\r\n                prod.LinePriceExTax = product.LinePriceExTax - c.TicketAmount;\r\n                prod.LinePriceTax = product.LinePriceTax - c.TicketTax;\r\n                prod.LinePriceIncTax = product.LinePriceIncTax - c.TotalAmount;\r\n                prod.LinePaidExTax = prod.LinePriceExTax;\r\n                prod.LinePaidTax = prod.LinePriceTax;\r\n                prod.LinePaidIncTax = prod.LinePriceIncTax;\r\n                prod.CouponCodeApplied = null;\r\n            }\r\n        }\r\n\r\n        return prod;\r\n    },\r\n    FindCouponCode(event, eventID, prodID, prodQuantity) {\r\n\r\n        if (event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID\r\n            && x.isUniqueCoupon == true && x.ProdQuantity == x.Quantity).length > 0) {\r\n            return event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID)[0].UniqueCouponCode;\r\n        }\r\n\r\n        if (event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID\r\n            && x.isUniqueCoupon == true && x.Discount != 100 && x.ProdQuantity > x.Quantity).length > 0) {\r\n            return event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID)[0].UniqueCouponCode;\r\n        }\r\n\r\n        if (event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID\r\n            && x.isUniqueCoupon == false).length > 0) {\r\n            return event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID)[0].CouponCode;\r\n        }\r\n\r\n        return null;\r\n    },\r\n    FindUniqueCoupon(event, eventID, prodID) {\r\n        if (event.CouponItems.filter(x => x.TourEventID == eventID && x.TourProductID == prodID\r\n            && x.isUniqueCoupon == true).length > 0) {\r\n            return true;\r\n        }\r\n\r\n        return false;\r\n    },\r\n    AddUniqueCouponItem(product, coupon) {\r\n\r\n        let prod = Object.assign({}, product);\r\n\r\n        prod.Quantity = coupon.Quantity;\r\n        prod.TourProductID = coupon.TourProductID;\r\n        prod.TourProductName = coupon.TourProductName;\r\n        prod.LinePriceExTax = coupon.TicketAmount;\r\n        prod.LinePriceTax = coupon.TicketTax;\r\n        prod.LinePriceIncTax = coupon.TotalAmount;\r\n        prod.LinePaidExTax = coupon.TicketAmount;\r\n        prod.LinePaidTax = coupon.TicketTax;\r\n        prod.LinePaidIncTax = coupon.TotalAmount;\r\n        prod.CouponCodeApplied = coupon.UniqueCouponCode;\r\n        prod.CouponHoldRef = null;\r\n\r\n        return prod;\r\n    },\r\n\r\n    GetTotalAmount(Products) {\r\n        let totalInclTax = 0;\r\n        let totalExclTax = 0;\r\n        let totalTax = 0;\r\n\r\n        Products.forEach(Product => {\r\n            totalInclTax += Product.LinePaidIncTax;\r\n            totalExclTax += Product.LinePaidExTax;\r\n            totalTax += Product.LinePaidTax;\r\n            if (Product.Options) {\r\n                Product.Options.forEach(option => {\r\n                    totalInclTax += option.LinePaidIncTax;\r\n                    totalExclTax += option.LinePaidExTax;\r\n                    totalTax += option.LinePaidTax;\r\n                });\r\n            }\r\n        });\r\n\r\n        return {\r\n            totalInclTax: totalInclTax,\r\n            totalExclTax: totalExclTax,\r\n            totalTax: totalTax\r\n        };\r\n    },\r\n    GetProdsTotalAmount(Products) {\r\n        let totalInclTax = 0;\r\n        let totalExclTax = 0;\r\n        let totalTax = 0;\r\n\r\n        Products && Products.forEach(Product => {\r\n            totalInclTax += Product.LinePaidIncTax;\r\n            totalExclTax += Product.LinePaidExTax;\r\n            totalTax += Product.LinePaidTax;\r\n        });\r\n\r\n        let prodsTotal = Products && Products.map(({ LinePaidIncTax }) => LinePaidIncTax).reduce((sum, i) => sum + i, 0);\r\n\r\n        if (prodsTotal === 0) {\r\n            return {\r\n                totalInclTax: 0,\r\n                totalExclTax: 0,\r\n                totalTax: 0\r\n            };\r\n        }\r\n\r\n\r\n        return {\r\n            totalInclTax: totalInclTax,\r\n            totalExclTax: totalExclTax,\r\n            totalTax: totalTax\r\n        };\r\n    },\r\n\r\n    UpdateEvent(ExistingEvents, NewEvent, IsEditEvent) {\r\n        let existEevent = ExistingEvents.filter(x => x.TourEventID == NewEvent.TourEventID)[0];\r\n\r\n        var E = NewEvent.TourProducts.map(product => {\r\n\r\n            if (existEevent.TourProducts.filter(x => x.TourProductID == product.TourProductID).length > 0) {\r\n                let pQty = IsEditEvent ? parseInt(product.Quantity)\r\n                    : parseInt(product.Quantity) + parseInt(existEevent.TourProducts.filter(x => x.TourProductID == product.TourProductID)[0].Quantity)\r\n\r\n                product.Quantity = '';\r\n                product.Quantity = pQty;\r\n\r\n            }\r\n\r\n            return product\r\n        });\r\n\r\n        existEevent.TourProducts.filter(e => e.Quantity > 0).map(prod => {\r\n\r\n            if (!E.filter(x => x.TourProductID == prod.TourProductID).length > 0) {\r\n                E.push(prod);\r\n            }\r\n        });\r\n\r\n        NewEvent.TourProducts = [];\r\n        NewEvent.TourProducts = E;\r\n\r\n        //Update Coupons\r\n        NewEvent.CouponItems = IsEditEvent ? [] : existEevent.CouponItems;\r\n\r\n        return NewEvent;\r\n    },\r\n\r\n    GetUpdateClient(oldclient, newclient) {\r\n        let objclient = {\r\n            CustomerID: oldclient.CustomerID,\r\n            FirstName: newclient.FirstName,\r\n            LastName: newclient.LastName,\r\n            CustomerAddress: [\r\n                {\r\n                    AddressID: oldclient.CustomerAddress.filter(x => x.Email && x.Email.toLowerCase() == newclient.CustomerAddress[0].Email.toLowerCase())[0].AddressID,\r\n                    \"IsPrimaryAddress\": true,\r\n                    \"Email\": newclient.CustomerAddress[0].Email,\r\n                    \"Street1\": newclient.CustomerAddress[0].Street1,\r\n                    \"Street2\": newclient.CustomerAddress[0].Street2,\r\n                    \"CitySuburb\": newclient.CustomerAddress[0].CitySuburb,\r\n                    \"State\": newclient.CustomerAddress[0].State,\r\n                    \"Postcode\": newclient.CustomerAddress[0].Postcode,\r\n                    \"Country\": newclient.CustomerAddress[0].Country\r\n                }\r\n            ]\r\n        }\r\n        return objclient;\r\n    },\r\n\r\n    GetEventDate(eventDate) {\r\n        return Moment(eventDate).format('ddd MMMM DD YYYY')\r\n    },\r\n    GetEventDateReceiptFormat(eventDate) {\r\n        return Moment(eventDate).format('dddd, MMMM Do YYYY, h:mm a')\r\n    },\r\n    AppendEndTime(eventDate) {\r\n        return Moment(eventDate).format('h:mm a')\r\n    },\r\n    GetEventDateReceiptFormatwithoutTime(eventDate) {\r\n        return Moment(eventDate).format('dddd, MMMM Do YYYY')\r\n    },\r\n    GetTransactionDate(tranDate) {\r\n        return Moment(tranDate).format('ddd Do MMMM YYYY HH:mm A')\r\n    },\r\n    GetShortDateAndTime(tranDate) {\r\n        return Moment(tranDate).format('DD MMMM YYYY HH:mm A')\r\n    },\r\n    AddToDateDate(calendarDate) {\r\n        var new_date = Moment(calendarDate, \"YYYY-MM-DD\").add(6, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    AddToDateDate(calendarDate, ListViewSearchDays) {\r\n        var new_date = Moment(calendarDate, \"YYYY-MM-DD\").add(ListViewSearchDays - 1, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    AddSevenDays(calendarDate) {\r\n        var new_date = Moment(calendarDate, \"YYYY-MM-DD\").add(6, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    AddWeekDays(calendarDate) {\r\n        var new_date = Moment(calendarDate, \"YYYY-MM-DD\").add(8, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    RemoveSevenDays(events, searchDays, date) {\r\n\r\n        let nextDate = null;\r\n\r\n        if (events && events.length > 0 && events != \"no-content\" && events != \"nocontent\") {\r\n            nextDate = new Date(Math.min(...events.map(e => new Date(e.EventEndDateTime))));\r\n        }\r\n\r\n        var new_date = events === \"no-content\" || events === \"nocontent\" ? Moment(date, \"YYYY-MM-DD\").add(-searchDays, 'days') : Moment(nextDate, \"YYYY-MM-DD\").add(-searchDays, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    AddNextSevenDays(events) {\r\n\r\n        let nextDate = null;\r\n\r\n        if (events && events.length > 0 && events != \"no-content\" && events != \"nocontent\") {\r\n            nextDate = new Date(Math.max(...events.map(e => new Date(e.EventEndDateTime))));\r\n        }\r\n\r\n        var new_date = Moment(nextDate, \"YYYY-MM-DD\").add(1, 'days');\r\n        var day = new_date.format('DD');\r\n        var month = new_date.format('MM');\r\n        var year = new_date.format('YYYY');\r\n\r\n        return year + '-' + month + '-' + day;\r\n    },\r\n    PaddingString(value, paddingchar, numofcharshown) {\r\n        return value.toString().padStart(numofcharshown, paddingchar);\r\n    },\r\n    EncodeBase64(input) {\r\n        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n        let str = input;\r\n        let output = '';\r\n\r\n        for (let block = 0, charCode, i = 0, map = chars;\r\n            str.charAt(i | 0) || (map = '=', i % 1);\r\n            output += map.charAt(63 & block >> 8 - i % 1 * 8)) {\r\n            charCode = str.charCodeAt(i += 3 / 4);\r\n            if (charCode > 0xFF) {\r\n                console.log(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\r\n            }\r\n            block = block << 8 | charCode;\r\n        }\r\n        return output;\r\n    },\r\n\r\n    ConvertCartItemToTourHold(cartevent, newevent, isEditEvent) {\r\n\r\n        let tourholds = [];\r\n        if (cartevent && cartevent.length > 0) {\r\n            cartevent.forEach(tourevent => {\r\n\r\n                let tourhold = {\r\n                    TourEventID: tourevent.TourEventID,\r\n                    TourHoldRef: tourevent.TourHoldRef,\r\n                    TourHolds: []\r\n                }\r\n\r\n                tourevent.TourProducts.forEach(product => {\r\n\r\n                    let newProductQuantity = 0;\r\n                    if (newevent.TourProducts.filter(p => p.TourProductID === product.TourProductID).length > 0) {\r\n                        newProductQuantity = newevent.TourProducts.filter(p => p.TourProductID === product.TourProductID)[0].Quantity;\r\n                    }\r\n\r\n                    if (newProductQuantity > 0) {\r\n\r\n                        let tourproduct = {\r\n                            TourProductID: product.TourProductID,\r\n                            Seats: product.Quantity\r\n                        }\r\n                        tourhold.TourHolds.push(tourproduct);\r\n                    }\r\n                });\r\n                tourholds.push(tourhold);\r\n            });\r\n        }\r\n\r\n        let toureventobj = tourholds.find(te => te.TourEventID == newevent.TourEventID);\r\n        if (toureventobj) {\r\n            newevent.TourProducts.forEach(product => {\r\n                let tourproduct = toureventobj.TourHolds.find(tp => tp.TourProductID == product.TourProductID);\r\n                if (tourproduct) {\r\n                    isEditEvent ? tourproduct.Seats = product.Quantity : tourproduct.Seats += product.Quantity;\r\n                }\r\n                else {\r\n                    let tourproduct = {\r\n                        TourProductID: product.TourProductID,\r\n                        Seats: product.Quantity\r\n                    }\r\n                    toureventobj.TourHolds.push(tourproduct);\r\n                }\r\n            })\r\n        }\r\n        else {\r\n            let tourhold = {\r\n                TourEventID: newevent.TourEventID,\r\n                TourHolds: []\r\n            }\r\n\r\n            newevent.TourProducts.forEach(product => {\r\n                let tourproduct = {\r\n                    TourProductID: product.TourProductID,\r\n                    Seats: product.Quantity\r\n                }\r\n                tourhold.TourHolds.push(tourproduct);\r\n\r\n            });\r\n            tourholds.push(tourhold);\r\n        }\r\n        return tourholds;\r\n    },\r\n    ConvertCartItemToTourHoldRemoveTourProduct(cartevent, toureventId, tourProductID) {\r\n        let tourholds = [];\r\n        if (cartevent && cartevent.length > 0) {\r\n            cartevent.forEach(tourevent => {\r\n\r\n                let tourhold = {\r\n                    TourEventID: tourevent.TourEventID,\r\n                    TourHoldRef: tourevent.TourHoldRef,\r\n                    TourHolds: []\r\n                }\r\n\r\n                tourevent.TourProducts.forEach(product => {\r\n\r\n                    if (tourevent.TourEventID == toureventId && product.TourProductID == tourProductID) {\r\n\r\n                    }\r\n                    else {\r\n                        let tourproduct = {\r\n                            TourProductID: product.TourProductID,\r\n                            Seats: product.Quantity\r\n                        }\r\n                        tourhold.TourHolds.push(tourproduct);\r\n                    }\r\n                });\r\n\r\n                tourholds.push(tourhold);\r\n            });\r\n        }\r\n        return tourholds;\r\n    },\r\n\r\n    ConvertCartItemToTourHoldResetState(cartevent) {\r\n        let tourholds = [];\r\n        if (cartevent && cartevent.length > 0) {\r\n            cartevent.forEach(tourevent => {\r\n\r\n                let tourhold = {\r\n                    TourEventID: tourevent.TourEventID,\r\n                    TourHoldRef: tourevent.TourHoldRef,\r\n                    TourHolds: []\r\n                }\r\n\r\n                tourholds.push(tourhold);\r\n            });\r\n        }\r\n        return tourholds;\r\n    },\r\n\r\n    ConvertCartTourToTourHoldResetState(cartevent, TourEventID) {\r\n        let tourholds = [];\r\n        if (cartevent && cartevent.length > 0) {\r\n            cartevent.filter(x => x.TourEventID == TourEventID).forEach(tourevent => {\r\n\r\n                let tourhold = {\r\n                    TourEventID: tourevent.TourEventID,\r\n                    TourHoldRef: tourevent.TourHoldRef,\r\n                    TourHolds: []\r\n                }\r\n\r\n                tourholds.push(tourhold);\r\n            });\r\n        }\r\n        return tourholds;\r\n    },\r\n    ConvertCartItemToTourHoldIncreaseQuantity(cartevent, toureventId, tourProductID, quantity) {\r\n        let tourholds = [];\r\n        if (cartevent && cartevent.length > 0) {\r\n            cartevent.forEach(tourevent => {\r\n\r\n                let tourhold = {\r\n                    TourEventID: tourevent.TourEventID,\r\n                    TourHoldRef: tourevent.TourHoldRef,\r\n                    TourHolds: []\r\n                }\r\n\r\n                tourevent.TourProducts.forEach(product => {\r\n                    let qty = product.Quantity;\r\n                    if (tourevent.TourEventID == toureventId && product.TourProductID == tourProductID) {\r\n                        qty = quantity;\r\n                    }\r\n                    let tourproduct = {\r\n                        TourProductID: product.TourProductID,\r\n                        Seats: qty\r\n                    }\r\n                    tourhold.TourHolds.push(tourproduct);\r\n\r\n                });\r\n                tourholds.push(tourhold);\r\n            });\r\n        }\r\n        return tourholds;\r\n    },\r\n    SetTourHoldRef(tourholds, newevent) {\r\n        let toureventobj = tourholds.find(te => te.TourEventID == newevent.TourEventID);\r\n        newevent.TourHoldRef = toureventobj.TourHoldRef;\r\n        return newevent;\r\n    },\r\n    IsCouponExpiry(coupon) {\r\n        return false;\r\n    },\r\n    GetGiftCardHoldRequest(giftcardno, amount) {\r\n        return [\r\n            {\r\n                \"GiftcardNo\": giftcardno,\r\n                \"HoldAmount\": amount,\r\n                \"AllowPartial\": true\r\n            }\r\n        ]\r\n    },\r\n    GetGiftCardHoldRequestForUpdate(cashless) {\r\n        let newcashless = cashless.map(item => {\r\n            return {\r\n                \"GiftcardNo\": item.GiftcardNo,\r\n                \"GiftcardHoldRef\": item.GiftcardHoldRef,\r\n                \"HoldAmount\": item.HoldAmount,\r\n                \"AllowPartial\": true\r\n            }\r\n        })\r\n        return newcashless;\r\n    },\r\n    RecalculatedCashlessArray(cashless, totalamount) {\r\n        let sortedcashless = cashless.sort((a, b) => { return (a.HoldAmount + a.BalanceRemaining) - (b.HoldAmount + b.BalanceRemaining); });\r\n\r\n        let amount = 0;\r\n        let lastupdateflag = false;\r\n        let newcashless = sortedcashless.map(item => {\r\n            let giftcardtotalamount = item.HoldAmount + item.BalanceRemaining;\r\n            if (item.BalanceRemaining == 0 && (amount + giftcardtotalamount) <= totalamount)\r\n                item.state = 'Remain';\r\n            else if (lastupdateflag == false && amount != totalamount) {\r\n                item.state = 'Update';\r\n                item.BalanceRemaining = giftcardtotalamount\r\n                if (item.BalanceRemaining < totalamount - amount)\r\n                    item.HoldAmount = item.BalanceRemaining;\r\n                else\r\n                    item.HoldAmount = totalamount - amount;\r\n                item.BalanceRemaining -= item.HoldAmount;\r\n                lastupdateflag = true;\r\n            }\r\n            else {\r\n                item.state = 'Delete';\r\n            }\r\n\r\n            amount += item.HoldAmount + item.BalanceRemaining;\r\n            return { ...item };\r\n        });\r\n        return newcashless;\r\n    },\r\n    maskGiftCardNo(giftCardNo) {\r\n        const lastDigits = giftCardNo.slice(-6);\r\n        const maskedNumber = lastDigits.padStart(giftCardNo.length, '*').slice(-10);\r\n        return maskedNumber;\r\n    },\r\n    UniqueCouponApplied(couponItems, tourProductID, eventId) {\r\n\r\n        if (couponItems && couponItems.length > 0) {\r\n            if (couponItems.filter(x => x.TourProductID == tourProductID\r\n                && x.TourEventID == eventId && x.isUniqueCoupon).length > 0) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    },\r\n    UpdateNewGiftCardHoldRef(oldCashlessarray, updatedCashless) {\r\n        updatedCashless.forEach(newcashless => {\r\n            let oldCashless = oldCashlessarray.find(old => old.GiftcardNo == newcashless.GiftcardNo)\r\n            if (oldCashless)\r\n                oldCashless.GiftcardHoldRef = newcashless.GiftcardHoldRef;\r\n        })\r\n        return oldCashlessarray;\r\n    },\r\n    replaceEscapeCharacters(item) {\r\n        var itemValue = \"\";\r\n        if (item && item.length > 0) {\r\n            itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n            itemValue = itemValue.split(\"\\\\n\").join(\"<br />\");\r\n            itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n        }\r\n        return itemValue;\r\n    },\r\n    GetLatestTourEvent(events) {\r\n        if (events.length == 1) {\r\n            return events[0].EventStartDateTime;\r\n        }\r\n        else if (events.length > 1) {\r\n            return events.reduce(function (a, b) { return a.EventStartDateTime > b.EventStartDateTime ? a.EventStartDateTime : b.EventStartDateTime; });\r\n        }\r\n\r\n        return new Date();\r\n    },\r\n    GetTourEventsList(events) {\r\n        let eventsCollection = [];\r\n\r\n        events.forEach(e => {\r\n            eventsCollection.push(e.TourEventID);\r\n        });\r\n\r\n        return eventsCollection.toString();\r\n    },\r\n    ApplyMembershipPricesOnEvents(events, costrate, extraitems, DefaultCostRateID) {\r\n        events.filter(e => e.OrganizationID === \"\").forEach(event => {\r\n            event.TourProducts.map(product => {\r\n                product.PriceMatrix = [];\r\n                product.PriceMatrix.push(this.GetPriceMatrix(event.TourEventID, product.TourProductID, costrate, extraitems, DefaultCostRateID))\r\n                return product;\r\n            })\r\n        });\r\n\r\n        return this.calculateeventsamount(events);\r\n    },\r\n    ApplyMembershipPricesOnTourEvent(event, costrate, extraitems, DefaultCostRateID) {\r\n        event.TourProducts.map(product => {\r\n            product.PriceMatrix = [];\r\n            product.PriceMatrix.push(this.GetPriceMatrix(event.TourEventID, product.TourProductID, costrate, extraitems, DefaultCostRateID))\r\n            return product;\r\n        });\r\n\r\n        return event;\r\n    },\r\n    GetEvent(extraitems, toureventid) {\r\n        return extraitems.find(x => x.TourEventID == toureventid)\r\n    },\r\n    GetPriceMatrix(eventID, prodID, costRateID, extraitems, DefaultCostRateID) {\r\n        if (extraitems && extraitems.length > 0) {\r\n            let extraItem = this.GetEvent(extraitems, eventID);\r\n            let product = extraItem.TourProducts.filter(x => x.TourProductID == prodID);\r\n            let pMatrix = [];\r\n            if (product && product.length > 0) {\r\n                if (product[0].PriceMatrix && product[0].PriceMatrix.find(x => x.CostRateID == costRateID)) {\r\n                    return product[0].PriceMatrix.find(x => x.CostRateID == costRateID);\r\n                }\r\n                else if (product[0].PriceMatrix && product[0].PriceMatrix.find(x => x.CostRateID == DefaultCostRateID)) {\r\n                    return product[0].PriceMatrix.find(x => x.CostRateID == DefaultCostRateID);\r\n                }\r\n            }\r\n        }\r\n    },\r\n    CustomerPostCall(memberValidation, curentemail) {\r\n        let emailMatch = false;\r\n        let phoneMatch = false;\r\n        let addressMatch = false;\r\n\r\n        if (memberValidation.hasOwnProperty('EmailMatched')) {\r\n            emailMatch = memberValidation.EmailMatched;\r\n        }\r\n\r\n        if (memberValidation.hasOwnProperty('EmailOnFile')) {\r\n            if (emailMatch == false && memberValidation.EmailOnFile === curentemail) {\r\n                emailMatch = true;\r\n            }\r\n\r\n            if (emailMatch == false && memberValidation.EmailOnFile !== curentemail) {\r\n                emailMatch = false;\r\n            }\r\n        }\r\n\r\n        if (memberValidation.hasOwnProperty('PhoneMatched')) {\r\n            phoneMatch = memberValidation.PhoneMatched;\r\n        }\r\n\r\n        if (memberValidation.hasOwnProperty('AddressMatched')) {\r\n            addressMatch = memberValidation.AddressMatched;\r\n        }\r\n\r\n        if (emailMatch && phoneMatch && addressMatch) {\r\n            return false;\r\n        }\r\n\r\n        return true;\r\n    },\r\n    ValidateMemberValidate(membershipValidation) {\r\n\r\n        if (membershipValidation) {\r\n\r\n            let emailMatch = false;\r\n            let phoneMatch = false;\r\n            let addressMatch = false;\r\n\r\n            if (membershipValidation.hasOwnProperty(\"EmailMatched\")) {\r\n                emailMatch = membershipValidation.EmailMatched;\r\n            }\r\n\r\n            if (membershipValidation.hasOwnProperty(\"PhoneMatched\")) {\r\n                phoneMatch = membershipValidation.PhoneMatched;\r\n            }\r\n\r\n            if (membershipValidation.hasOwnProperty(\"AddressMatched\")) {\r\n                addressMatch = membershipValidation.AddressMatched;\r\n            }\r\n\r\n            if (emailMatch || phoneMatch || addressMatch) {\r\n                return true;\r\n            }\r\n        }\r\n\r\n        return false;\r\n    },\r\n    RemoveUnUsedBookingTypes(bookingTypes, events) {\r\n\r\n        bookingTypes.forEach(bt => {\r\n            if (events.find(x => x.BookingTypeID === bt.BookingTypeID) === undefined) {\r\n                bookingTypes = bookingTypes.filter(x => x.BookingTypeID !== bt.BookingTypeID);\r\n            }\r\n        });\r\n\r\n        return bookingTypes;\r\n    },\r\n    TransactionFee(products, donation, transactionfee, cashless, membershipPackages, gatickets, giftcards, orderProducts, donationProducts) {\r\n\r\n        let tFee = this.GetTransactionFee(transactionfee, products, donation, cashless, membershipPackages, gatickets, giftcards, orderProducts, donationProducts);\r\n\r\n        if (tFee > 0 && (!transactionfee.Taxes[0].TaxIncluded)) {\r\n            tFee += this.ApplyTransactionFeeTax(transactionfee, tFee);\r\n        }\r\n\r\n        return tFee;\r\n    },\r\n    GetTransactionFee(transactionfee, products, donation, cashless, membershipPackages, gatickets, giftcards, orderProducts, donationProducts) {\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID')) {\r\n\r\n            if (transactionfee.Price > 0) {\r\n\r\n                if (!transactionfee.PriceIsAPercentage) {\r\n                    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n                    let transFee = (this.subproducttotal(products, cashless, donation, transactionfee, membershipPackages, gatickets, giftcards, orderProducts, donationProducts) * transactionfee.Price) / 100;\r\n                    return cashlesstotal > 0 || transFee > 0 ? transactionfee.Price : 0;\r\n                }\r\n\r\n                return ((this.subproducttotal(products, cashless, donation, undefined, membershipPackages, gatickets, giftcards, orderProducts, donationProducts)) * transactionfee.Price) / 100;\r\n            }\r\n        }\r\n\r\n        return 0;\r\n    },\r\n    ApplyTransactionFeeTax(transactionfee, tFee) {\r\n        if (transactionfee.Price > 0) {\r\n            if (transactionfee.Taxes) {\r\n\r\n                if (transactionfee.Taxes[0].TaxIncluded) {\r\n                    let itemAmount = Math.round((tFee / ((transactionfee.Taxes[0].TaxPercentage / 100) + 1)) * 100) / 100;\r\n                    return Math.round((tFee - itemAmount) * 100) / 100;\r\n                }\r\n\r\n                return Math.round((tFee * (transactionfee.Taxes[0].TaxPercentage / 100)) * 100) / 100;\r\n            }\r\n            return tFee;\r\n        }\r\n\r\n        return 0;\r\n    },\r\n    ReturnDateOnly(datetime) {\r\n        let year = Moment(datetime).format('YYYY');\r\n        let month = parseInt(Moment(datetime).format('M'));\r\n        let date = Moment(datetime).format('DD');\r\n\r\n        return new Date(year, month > 1 ? month - 1 : 0, date);\r\n    },\r\n    CalculateMembershipPackageTotal(membershipPackage) {\r\n        let membershipProducts = membershipPackage.MembershipProducts;\r\n        let MemPackTotals = {\r\n            TaxTotal: 0,\r\n            SubTotal: 0,\r\n            TotalAmount: 0\r\n        }\r\n\r\n        if (membershipProducts) {\r\n            membershipProducts.map(e => {\r\n\r\n                if ((e.MembershipType === \"AddOn\" && (e.hasOwnProperty('Quantity') || e.hasOwnProperty('MinQuantity')) && (e.Quantity > 0 || e.MinQuantity > 0)) || (e.MembershipType === \"Membership\" && (e.Users !== undefined ? e.Users.length > 0 : false))) {\r\n\r\n                    if (e.MinQuantity > 0 && e.Quantity == 0) {\r\n                        e.Quantity = 1;\r\n                    }\r\n\r\n                    var itemp = e.MembershipType === \"Membership\" ? e.Price : (e.Price * e.Quantity);\r\n                    var itemtax = 0;\r\n                    var itemTAmount = 0;\r\n                    var iterations = e.MembershipType === \"Membership\" ? e.Users.length : 1;\r\n                    var i;\r\n\r\n                    for (i = 0; i < iterations; i++) {\r\n\r\n                        if (e.Taxes && e.Taxes.length > 0) {\r\n                            e.Taxes.forEach(tax => {\r\n                                if (tax.TaxIncluded == true) {\r\n                                    itemTAmount = Math.round((itemp / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                                    itemtax = Math.round((itemp - itemTAmount) * 100) / 100;\r\n                                }\r\n                                else if (tax.TaxIncluded == false) {\r\n                                    itemTAmount = itemp;\r\n                                    if (tax.TaxPercentage > 0) {\r\n                                        itemtax = Math.round((itemTAmount * (tax.TaxPercentage / 100)) * 100) / 100;\r\n                                    }\r\n                                }\r\n                                else {\r\n                                    itemtax = 0;\r\n                                    itemTAmount = itemp;\r\n                                }\r\n                            })\r\n                        }\r\n                        else {\r\n                            itemtax = 0;\r\n                            itemTAmount = itemp;\r\n                        };\r\n\r\n                        MemPackTotals.TaxTotal += itemtax;\r\n                        MemPackTotals.SubTotal += itemTAmount;\r\n\r\n                        MemPackTotals.TotalAmount = MemPackTotals.TaxTotal + MemPackTotals.SubTotal;\r\n                    }\r\n\r\n                }\r\n\r\n            });\r\n        }\r\n\r\n\r\n        return MemPackTotals;\r\n    },\r\n    CalculateMembershipPackages(membershipPackages) {\r\n        membershipPackages.forEach(memPack => {\r\n            memPack.TotalTax = 0;\r\n            memPack.SubTotal = 0;\r\n            memPack.TotalAmount = 0;\r\n            memPack.MembershipProducts.forEach(memType => {\r\n                var itemp = memType.Price;\r\n                var itemtax = 0;\r\n                var itemTAmount = 0;\r\n                var iterations = memType.MembershipType === \"Membership\" ? (memType.Users ? memType.Users.length : 0) : (memType.Quantity ? memType.Quantity : 0);\r\n                var i;\r\n                for (i = 0; i < iterations; i++) {\r\n\r\n                    if (memType.Taxes && memType.Taxes.length > 0) {\r\n                        memType.Taxes && memType.Taxes.forEach(tax => {\r\n                            if (tax.TaxIncluded == true) {\r\n                                itemTAmount = Math.round((itemp / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                                itemtax = Math.round((itemp - itemTAmount) * 100) / 100;\r\n                            }\r\n                            else if (tax.TaxIncluded == false) {\r\n                                itemTAmount = itemp;\r\n                                if (tax.TaxPercentage > 0) {\r\n                                    itemtax = Math.round((itemTAmount * (tax.TaxPercentage / 100)) * 100) / 100;\r\n                                }\r\n                            }\r\n                            else {\r\n                                itemtax = 0;\r\n                                itemTAmount = itemp;\r\n                            }\r\n                        });\r\n                    }\r\n                    else {\r\n                        itemtax = 0;\r\n                        itemTAmount = itemp;\r\n                    }\r\n\r\n                    if (memType.MembershipType === \"AddOn\" && memType.hasOwnProperty('Quantity') && memType.Quantity == 0) {\r\n                        itemtax = 0;\r\n                        itemtax = 0;\r\n\r\n                    }\r\n                    memType.TotalTax = itemtax;\r\n                    memType.SubTotal = itemTAmount;\r\n                    memType.TotalAmount = memType.TotalTax + memType.SubTotal;\r\n\r\n                    memPack.TotalTax += itemtax;\r\n                    memPack.SubTotal += itemTAmount;\r\n                    memPack.TotalAmount = memPack.TotalTax + memPack.SubTotal;\r\n                }\r\n            })\r\n        })\r\n\r\n        return membershipPackages;\r\n    },\r\n    GetCustomerList(membershipPackages, customerReq, customerObj, customerAddresses) {\r\n\r\n        let customersList = [];\r\n        let cstCollection = { customerList: [], customerRequest: {} }\r\n        let objCst = customerObj.customer && customerObj.customer.length > 0 ? customerObj.customer[0] : null;\r\n\r\n        membershipPackages.forEach(memPack => {\r\n\r\n            memPack.MembershipProducts.forEach(memType => {\r\n\r\n                if (memType.MembershipType === \"Membership\" && memType.Users && memType.Users.length > 0) {\r\n\r\n                    memType.Users.forEach(u => {\r\n\r\n                        if (u.isPrimaryMember === true) {\r\n                            customerReq[0].DateOfBirth = (u.dob === \"DOB\" || u.dob === \"\" || u.dob === undefined || u.dob === null) ? null : u.dob;\r\n                        }\r\n\r\n                        else {\r\n                            var client =\r\n                            {\r\n                                \"FirstName\": u.firstName,\r\n                                \"LastName\": u.lastName,\r\n                                \"DateOfBirth\": (u.dob === \"DOB\" || u.dob === \"\" || u.dob === undefined || u.dob === null) ? null : u.dob,\r\n                                \"Relationship\": \"\",\r\n                                \"TransactionRight\": null,\r\n                                \"AdministrationRight\": null,\r\n                                \"CustomerAddress\": [\r\n                                    {\r\n                                        \"AddressID\": this.GetSecondaryUserAddressID(u, customerAddresses),\r\n                                        \"Email\": u.email,\r\n                                        \"MobilePhone\": u.phone\r\n                                    }\r\n                                ]\r\n                            };\r\n\r\n                            if (objCst && objCst.hasOwnProperty('LinkedIndividuals') && objCst.LinkedIndividuals && objCst.LinkedIndividuals.length > 0) {\r\n                                if (objCst.LinkedIndividuals.filter(x => x.CustomerID === u.userNo).length > 0) {\r\n\r\n                                    let linkedMember = objCst.LinkedIndividuals.filter(x => x.CustomerID === u.userNo)[0];\r\n                                    if (linkedMember) {\r\n                                        client.CustomerID = linkedMember.CustomerID;\r\n                                    }\r\n                                }\r\n                            }\r\n\r\n                            customerReq[0].LinkedIndividuals.push(client);\r\n\r\n                            var customer = {\r\n                                user: client,\r\n                                memPackID: memPack.MembershipPackageID,\r\n                                memProdID: memType.ProductID,\r\n                                userID: u.userNo\r\n                            }\r\n\r\n                            customersList.push(customer);\r\n                        }\r\n                    });\r\n\r\n                }\r\n            })\r\n        })\r\n\r\n        cstCollection.customerList = customersList;\r\n        cstCollection.customerRequest = customerReq;\r\n\r\n        return cstCollection;\r\n    },\r\n    AddYearsToDate(date, noOfYears) {\r\n        return new Date(date.setFullYear(date.getFullYear() + noOfYears));\r\n    },\r\n    GetMembershipExpiryDate(date, datediff) {\r\n        let noDiff = 0;\r\n        let expiryDate = \"\";\r\n        if (datediff && datediff.length > 0) {\r\n\r\n            if (datediff.includes(\"years\")) {\r\n                noDiff = parseInt(datediff);\r\n                expiryDate = Moment(date).add(noDiff, 'year');\r\n            }\r\n            else if (datediff.includes(\"months\")) {\r\n                noDiff = parseInt(datediff);\r\n                expiryDate = Moment(date).add(noDiff, 'months');\r\n            }\r\n            else if (datediff.includes(\"days\")) {\r\n                noDiff = parseInt(datediff);\r\n                expiryDate = Moment(date).add(noDiff, 'days');\r\n            }\r\n            else {\r\n                expiryDate = Moment(new Date(datediff));\r\n            }\r\n        }\r\n\r\n        return expiryDate.format('YYYY-MM-DDT00:00:00');\r\n    },\r\n    DaysInYear(year) {\r\n        return ((year % 4 === 0 && year % 100 > 0) || year % 400 == 0) ? 366 : 365;\r\n    },\r\n    UpdateTransactionCall(customersList, transaction, customerResponse) {\r\n\r\n        if (transaction && transaction[0].Products && transaction[0].Products.length > 0) {\r\n\r\n            let priMember = transaction[0].Products.filter(x => x.MemberCustomerID == transaction[0].CustomerID && x.IsRenewal == true)[0];\r\n\r\n\r\n            transaction[0].Products.forEach(p => {\r\n\r\n                if (p.hasOwnProperty(\"MembershipPackageID\") && p.hasOwnProperty(\"MemberCustomerID\")) {\r\n\r\n                    if (p.MemberCustomerID == -1 || p.MemberCustomerID == transaction[0].CustomerID) {\r\n                        p.MemberCustomerID = transaction[0].CustomerID;\r\n                    }\r\n                    else if (priMember && priMember.IsRenewal && p.MemberCustomerID == -2) {\r\n                        p.MemberCustomerID = transaction[0].CustomerID;\r\n                        p.RenewedUniquePackageRef = priMember.RenewedUniquePackageRef;\r\n                        p.IsRenewal = priMember.IsRenewal;\r\n                    }\r\n                    else {\r\n                        var customer = customersList.filter(x => x.memPackID == p.MembershipPackageID && x.memProdID == p.ProductID)[0];\r\n\r\n                        if (customer && customerResponse[0].LinkedIndividuals) {\r\n                            var cst = customerResponse[0].LinkedIndividuals.filter(x => x.FirstName == customer.user.FirstName && x.LastName == customer.user.LastName)[0];\r\n\r\n                            if (cst) {\r\n                                p.MemberCustomerID = cst.CustomerID;\r\n                                customersList = customersList.filter(x => x.userID != customer.userID);\r\n                            }\r\n                        } else {\r\n                            p.MemberCustomerID = transaction[0].CustomerID;\r\n                        }\r\n                    }\r\n                }\r\n\r\n            })\r\n        }\r\n\r\n        return transaction;\r\n    },\r\n    calculategaticketamount(tickets) {\r\n        tickets.forEach(ticket => {\r\n            ticket.TicketAmount = 0;\r\n            ticket.TaxAmount = 0;\r\n            ticket.TotalAmount = 0;\r\n            ticket.OriginalTicketAmount = 0;\r\n            ticket.OriginalTaxAmount = 0;\r\n            ticket.OriginalTotalAmount = 0;\r\n\r\n            var itemp = (ticket.Price * ticket.Quantity);\r\n            var itemtax = 0;\r\n            var itemTAmount = 0;\r\n            ticket.Taxes.forEach(tax => {\r\n                if (tax.TaxIncluded == true) {\r\n                    itemTAmount = Math.round((itemp / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                    itemtax = Math.round((itemp - itemTAmount) * 100) / 100;\r\n                }\r\n                else {\r\n                    itemTAmount = itemp;\r\n                    if (tax.TaxPercentage > 0) {\r\n                        itemtax += Math.round((itemTAmount * (tax.TaxPercentage / 100)) * 100) / 100;\r\n                    }\r\n                }\r\n            });\r\n\r\n            var originalitemp = (ticket.OriginalPrice * ticket.Quantity);\r\n            var originalitemtax = 0;\r\n            var originalitemTAmount = 0;\r\n            ticket.Taxes.forEach(tax => {\r\n                if (tax.TaxIncluded == true) {\r\n                    originalitemTAmount = Math.round((originalitemp / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                    originalitemtax = Math.round((originalitemp - originalitemTAmount) * 100) / 100;\r\n                }\r\n                else {\r\n                    originalitemTAmount = originalitemp;\r\n                    if (tax.TaxPercentage > 0) {\r\n                        originalitemtax += Math.round((originalitemTAmount * (tax.TaxPercentage / 100)) * 100) / 100;\r\n                    }\r\n                }\r\n            });\r\n            ticket.TicketAmount += itemTAmount;\r\n            ticket.TaxAmount += itemtax;\r\n            ticket.TotalAmount = ticket.TicketAmount + ticket.TaxAmount;\r\n\r\n            ticket.OriginalTicketAmount += originalitemTAmount;\r\n            ticket.OriginalTaxAmount += originalitemtax;\r\n            ticket.OriginalTotalAmount = ticket.OriginalTicketAmount + ticket.OriginalTaxAmount;\r\n        });\r\n\r\n        return tickets;\r\n    },\r\n    GetPrimaryMemberMembershipType(membershipPackage, memberMemberships) {\r\n        let memberType = null;\r\n\r\n        membershipPackage.MembershipProducts.map(memType => {\r\n\r\n            if (memType.MembershipType === \"Membership\") {\r\n\r\n                if (memberMemberships.filter(x => x.MembershipTypeID == memType.MembershipTypeID).length > 0) {\r\n                    memberType = memberMemberships.filter(x => x.MembershipTypeID == memType.MembershipTypeID)[0];\r\n                }\r\n            }\r\n        });\r\n\r\n        return memberType;\r\n    },\r\n    GetValueIfObjectHasProperty(propertyName, obj) {\r\n        let val = \"\";\r\n\r\n        if (obj.hasOwnProperty(propertyName)) {\r\n            val = obj[propertyName];\r\n        }\r\n\r\n        return val;\r\n    },\r\n    UpdateMembershipPackageForRenew(membershipPackage, membermemberships, customer) {\r\n\r\n        let memberpackageDetails = {\r\n            membershipPackage: {},\r\n            userslist: []\r\n        }\r\n\r\n        let memMemberships = [];\r\n        let primaryMemberType = {};\r\n\r\n\r\n\r\n        if (customer && customer.length > 0 && membermemberships && membermemberships.Memberships.length > 0 && membermemberships.Memberships.filter(x => x.MembershipPackageID == membershipPackage.MembershipPackageID && x.IsCancelled == false && x.IsRenewed == false).length > 0) {\r\n\r\n            memMemberships = membermemberships.Memberships.filter(x => x.MembershipPackageID == membershipPackage.MembershipPackageID && x.IsCancelled == false && x.IsRenewed == false); //[0]; //reverse()\r\n\r\n            if (memMemberships && memMemberships.length > 0) {\r\n                primaryMemberType = this.GetPrimaryMemberMembershipType(membershipPackage, memMemberships);\r\n            }\r\n\r\n            if (memMemberships && memMemberships.length > 0) {\r\n                var user = {\r\n                    isPrimaryMember: true,\r\n                    popupTitle: 'Primary Member',\r\n                    firstName: membermemberships.FirstName,\r\n                    lastName: membermemberships.LastName,\r\n                    email: membermemberships.Email,\r\n                    dob: this.GetValueIfObjectHasProperty('DateOfBirth', customer[0]),\r\n                    phone: this.GetValueIfObjectHasProperty('MobilePhone', customer[0].CustomerAddress[0]),\r\n                    address1: this.GetValueIfObjectHasProperty('Street1', customer[0].CustomerAddress[0]),\r\n                    address2: this.GetValueIfObjectHasProperty('Street2', customer[0].CustomerAddress[0]),\r\n                    city: this.GetValueIfObjectHasProperty('CitySuburb', customer[0].CustomerAddress[0]),\r\n                    state: this.GetValueIfObjectHasProperty('State', customer[0].CustomerAddress[0]),\r\n                    zipcode: this.GetValueIfObjectHasProperty('Postcode', customer[0].CustomerAddress[0]),\r\n                    country: this.GetValueIfObjectHasProperty('Country', customer[0].CustomerAddress[0]),\r\n                    userNo: membermemberships.MemberNumber,\r\n                    isRenewal: true,\r\n                    isEdit: false,\r\n                    membershipTypeID: primaryMemberType.MembershipTypeID,\r\n                    membershipTypeName: primaryMemberType.ProductName,\r\n                    PreviousMembershipType: primaryMemberType.ProductName,\r\n                    notpartofPackage: false,\r\n                    UniquePackageRef: primaryMemberType.UniquePackageRef,\r\n                    MembershipExpiryDate: primaryMemberType.MembershipExpiryDate,\r\n                    userSelectedFromDropdown: true\r\n                }\r\n\r\n                if (user.dob === '') {\r\n                    user.dob = null;\r\n                }\r\n\r\n                memberpackageDetails.userslist.push(user);\r\n            }\r\n\r\n\r\n            if (membermemberships && membermemberships.LinkedIndividuals && membermemberships.LinkedIndividuals.length > 0) {\r\n\r\n                membermemberships.LinkedIndividuals.map(mem => {\r\n\r\n                    var linkedUser = customer[0].LinkedIndividuals.filter(x => x.CustomerID == mem.MemberNumber);\r\n\r\n                    var user = {\r\n                        isPrimaryMember: false,\r\n                        firstName: mem.FirstName,\r\n                        lastName: mem.LastName,\r\n                        email: linkedUser && linkedUser.length > 0 && linkedUser[0].hasOwnProperty('Email') ? linkedUser[0].Email : '',\r\n                        dob: mem.DateOfBirth === undefined || mem.DateOfBirth === '' ? null : mem.DateOfBirth,\r\n                        phone: linkedUser && linkedUser.length > 0 && linkedUser[0].hasOwnProperty('MobilePhone') ? linkedUser[0].MobilePhone : '',\r\n                        address1: '',\r\n                        address2: '',\r\n                        city: '',\r\n                        state: '',\r\n                        zipcode: '',\r\n                        country: '',\r\n                        userNo: mem.MemberNumber,\r\n                        membershipTypeID: 0,\r\n                        membershipTypeName: '',\r\n                        previousMembershipType: '',\r\n                        notpartofPackage: false,\r\n                        isRenewal: true,\r\n                        isEdit: false,\r\n                        UniquePackageRef: '',\r\n                        MembershipExpiryDate: '',\r\n                        userSelectedFromDropdown: false\r\n                    }\r\n\r\n                    if (mem.Memberships && mem.Memberships.length > 0 && mem.Memberships.filter(x => x.MembershipPackageID == membershipPackage.MembershipPackageID && x.IsCancelled == false && x.IsRenewed == false && x.UniquePackageRef == primaryMemberType.UniquePackageRef).length > 0) {\r\n                        mem.Memberships.filter(x => x.MembershipPackageID == membershipPackage.MembershipPackageID && x.IsCancelled == false && x.IsRenewed == false && x.UniquePackageRef == primaryMemberType.UniquePackageRef).map(m => {\r\n\r\n                            user.membershipTypeID = m.MembershipTypeID;\r\n                            user.UniquePackageRef = m.UniquePackageRef;\r\n                            user.MembershipExpiryDate = m.MembershipExpiryDate;\r\n                            user.PreviousMembershipType = m.ProductName;\r\n                            user.membershipTypeName = m.ProductName;\r\n                            memberpackageDetails.userslist.push(user);\r\n\r\n                        });\r\n                    } else {\r\n\r\n\r\n                        if (memberpackageDetails.userslist.length > 0 && memberpackageDetails.userslist.filter(x => x.firstName == user.firstName && x.lastName == user.lastName).length == 0) {\r\n                            user.notpartofPackage = true;\r\n\r\n                            //Update Member with previous active membership details.\r\n\r\n                            if (mem.Memberships && mem.Memberships.length > 0 && mem.Memberships.filter(x => x.IsCancelled == false && x.IsRenewed == false).length > 0) {\r\n\r\n                                var mp = mem.Memberships.length > 0 && mem.Memberships.filter(x => x.IsCancelled == false && x.IsRenewed == false)[0];\r\n\r\n                                if (mp) {\r\n                                    user.membershipTypeID = mp.MembershipTypeID;\r\n                                    user.UniquePackageRef = mp.UniquePackageRef;\r\n                                    user.MembershipExpiryDate = mp.MembershipExpiryDate;\r\n                                    user.PreviousMembershipType = mp.ProductName;\r\n                                    user.membershipTypeName = mp.ProductName;\r\n                                }\r\n                            }\r\n\r\n                            memberpackageDetails.userslist.push(user);\r\n                        }\r\n\r\n                    }\r\n\r\n                });\r\n            }\r\n        }\r\n        else {\r\n\r\n            memberpackageDetails.membershipPackage = membershipPackage;\r\n            return memberpackageDetails;\r\n        }\r\n        //Find List of users..\r\n        membershipPackage.MembershipProducts = membershipPackage.MembershipProducts.map(memType => {\r\n\r\n            if (memType.MembershipType === \"Membership\") {\r\n                memType.Users = [];\r\n\r\n                memberpackageDetails.userslist.filter(x => x.membershipTypeID == memType.MembershipTypeID && x.notpartofPackage === false).map(u => {\r\n                    memType.Users.push(u);\r\n                })\r\n            }\r\n\r\n            //Handle AddOns\r\n            if (memType.MembershipType === \"AddOn\") {\r\n\r\n                if (memMemberships.filter(x => x.MembershipTypeID == memType.MembershipTypeID).length > 0) {\r\n                    memType.Quantity = 1;\r\n                    memType.isRenewPackage = true;\r\n                    memType.LastMembershipExpiryDate = memMemberships.filter(x => x.MembershipTypeID == memType.MembershipTypeID)[0].MembershipExpiryDate;\r\n                }\r\n                else {\r\n                    memType.Quantity = 0;\r\n                    memType.isRenewPackage = false;\r\n                }\r\n            }\r\n\r\n            return memType;\r\n        })\r\n\r\n        memberpackageDetails.membershipPackage = membershipPackage;\r\n        return memberpackageDetails;\r\n\r\n    },\r\n    ApplyMembershipCoupon(membershipPackageProds, membershipCoupon, couponCode) {\r\n\r\n        membershipPackageProds = membershipPackageProds.map(m => {\r\n\r\n            if (!(m.MembershipType == \"AddOn\" && m.Quantity == 0) && !(m.MembershipType == \"Membership\" && m.Users.length == 0)) {\r\n\r\n                let membershipTypeDiscount = membershipCoupon.MembershipTypes.find(x => x.MembershipTypeID == m.MembershipTypeID);\r\n\r\n\r\n                var itemtax = 0;\r\n                var itemTAmount = 0;\r\n                var memTotalTax = m.TotalTax ? m.TotalTax : 0;\r\n                var memSubTotal = m.SubTotal ? m.SubTotal : 0;\r\n\r\n                if (membershipTypeDiscount) {\r\n\r\n                    m.CouponCodeExTax = 0;\r\n                    m.CouponCodeTax = 0;\r\n                    m.CouponCodeIncTax = 0;\r\n\r\n                    if (membershipTypeDiscount.hasOwnProperty('DollarDiscountExTax')) {\r\n\r\n                        if (m.TotalAmount >= membershipTypeDiscount.DollarDiscountIncTax && membershipTypeDiscount.DollarDiscountIncTax > 0) {\r\n\r\n                            m.CouponCodeExTax = membershipTypeDiscount.DollarDiscountExTax;\r\n                            m.CouponCodeTax = membershipTypeDiscount.DollarDiscountTax;\r\n                            m.CouponCodeIncTax = membershipTypeDiscount.DollarDiscountIncTax;\r\n\r\n                            itemTAmount = Math.round((memSubTotal - membershipTypeDiscount.DollarDiscountExTax) * 100) / 100;\r\n                            itemtax = Math.round((memTotalTax - m.CouponCodeTax) * 100) / 100;\r\n                        }\r\n                        else {\r\n\r\n                            itemTAmount = memSubTotal;\r\n                            itemtax = memTotalTax;\r\n                        }\r\n                    }\r\n                    else if (membershipTypeDiscount.hasOwnProperty('PercentageDiscount')) {\r\n\r\n                        if (membershipTypeDiscount.PercentageDiscount > 0) {\r\n\r\n                            m.CouponCodeExTax = parseFloat((Math.round((memSubTotal * ((membershipTypeDiscount.PercentageDiscount / 100))) * 100) / 100).toFixed(2));\r\n                            m.CouponCodeTax = Math.round((memTotalTax * (membershipTypeDiscount.PercentageDiscount / 100)) * 100) / 100;\r\n                            m.CouponCodeIncTax = Math.round((m.CouponCodeExTax + m.CouponCodeTax) * 100) / 100;\r\n\r\n                            itemTAmount = Math.round((memSubTotal - m.CouponCodeExTax) * 100) / 100;\r\n                            itemtax = Math.round((memTotalTax - m.CouponCodeTax) * 100) / 100;\r\n                        }\r\n                        else {\r\n\r\n                            itemTAmount = memSubTotal;\r\n                            itemtax = memTotalTax;\r\n                        }\r\n                    }\r\n\r\n                    m.ExtraDays = membershipTypeDiscount.ExtraDays ? membershipTypeDiscount.ExtraDays : 0;\r\n                    m.ExtraMonths = membershipTypeDiscount.ExtraMonths ? membershipTypeDiscount.ExtraMonths : 0;\r\n                    m.CouponCodeApplied = couponCode;\r\n\r\n                    if (!membershipTypeDiscount.hasOwnProperty('DollarDiscountExTax') && !membershipTypeDiscount.hasOwnProperty('PercentageDiscount')) {\r\n                        m.PriceAfterCoupon = m.SubTotal;\r\n                        m.TaxAfterCoupon = m.TotalTax;\r\n                        m.TotalAmountAfterCoupon = m.TotalAmount;\r\n                    }\r\n                    else {\r\n                        m.PriceAfterCoupon = itemTAmount;\r\n                        m.TaxAfterCoupon = itemtax;\r\n                        m.TotalAmountAfterCoupon = Math.round((itemTAmount + itemtax) * 100) / 100;\r\n                    }\r\n\r\n                    if (m.CouponCodeIncTax == 0 && (m.ExtraMonths != 0 || m.ExtraDays != 0)) {\r\n                        m.NoFinancialDis = true;\r\n                    }\r\n                }\r\n            }\r\n\r\n            return m;\r\n        })\r\n\r\n        return membershipPackageProds;\r\n    },\r\n    MMBReturnProduct(index, product, booking) {\r\n        return {\r\n            ProductLineNo: index,\r\n            ProductID: product.ProductID,\r\n            Quantity: product.Quantity > 0 ? -Math.abs(product.Quantity) : Math.abs(product.Quantity),\r\n            LinePriceExTax: product.ProductLinePriceExclTax > 0 ? -Math.abs(product.ProductLinePriceExclTax) : Math.abs(product.ProductLinePriceExclTax),\r\n            LinePriceTax: product.ProductLineTaxTax > 0 ? -Math.abs(product.ProductLineTaxTax) : Math.abs(product.ProductLineTaxTax),\r\n            LinePriceIncTax: product.ProductLinePriceInclTax > 0 ? -Math.abs(product.ProductLinePriceInclTax) : Math.abs(product.ProductLinePriceInclTax),\r\n            LinePaidExTax: product.ProductLinePriceExclTax > 0 ? -Math.abs(product.ProductLinePriceExclTax) : Math.abs(product.ProductLinePriceExclTax),\r\n            LinePaidTax: product.ProductLineTaxTax > 0 ? -Math.abs(product.ProductLineTaxTax) : Math.abs(product.ProductLineTaxTax),\r\n            LinePaidIncTax: product.ProductLinePriceInclTax > 0 ? -Math.abs(product.ProductLinePriceInclTax) : Math.abs(product.ProductLinePriceInclTax),\r\n            TourEventID: booking.TourEventID,\r\n            TourProductID: product.TourProductID,\r\n            CostRateID: product.CostRateID,\r\n            BookingID: booking.BookingID\r\n        };\r\n    },\r\n    MMBReturnUniqueProduct(index, product, booking, actualQty, remainingQty) {\r\n\r\n        let prodLinePriceExTax = (Math.abs(product.ProductLinePriceExclTax / actualQty) * remainingQty);\r\n        let prodLineLinePriceTax = (Math.abs(product.ProductLineTaxTax / actualQty) * remainingQty);\r\n        let prodLineIncTax = (Math.abs(product.ProductLinePriceInclTax / actualQty) * remainingQty);\r\n\r\n        return {\r\n            ProductLineNo: index + 1,\r\n            ProductID: product.ProductID,\r\n            Quantity: -Math.abs(remainingQty),\r\n            LinePriceExTax: -Math.abs(prodLinePriceExTax),\r\n            LinePriceTax: -Math.abs(prodLineLinePriceTax),\r\n            LinePriceIncTax: -Math.abs(prodLineIncTax),\r\n            LinePaidExTax: -Math.abs(prodLinePriceExTax),\r\n            LinePaidTax: -Math.abs(prodLineLinePriceTax),\r\n            LinePaidIncTax: -Math.abs(prodLineIncTax),\r\n            TourEventID: booking.TourEventID,\r\n            TourProductID: product.TourProductID,\r\n            CostRateID: product.CostRateID,\r\n            BookingID: booking.BookingID\r\n        };\r\n    },\r\n    MMBReturnUniqueCoupinNonItems(ReturnCouponAppliedQty, newp, product, couponProd, index, trans) {\r\n\r\n        if (ReturnCouponAppliedQty > 0) {\r\n\r\n            newp.LinePriceExTax = -(Math.abs(product.ProductLinePriceExclTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            newp.LinePriceTax = -(Math.abs(product.ProductLineTaxTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            newp.LinePriceIncTax = -(Math.abs(product.ProductLinePriceInclTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            newp.LinePaidExTax = -(Math.abs(product.ProductLinePriceExclTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            newp.LinePaidTax = -(Math.abs(product.ProductLineTaxTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            newp.LinePaidIncTax = -(Math.abs(product.ProductLinePriceInclTax / Math.abs(product.Quantity)) * couponProd.TimesUsed);\r\n            trans.Products.push(newp);\r\n\r\n            if (ReturnCouponAppliedQty > 0) {\r\n\r\n                let returnRemainingnUniProds = Object.assign({}, newp);\r\n\r\n                returnRemainingnUniProds.LinePriceExTax = -(Math.abs(product.ProductLinePriceExclTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.LinePriceTax = -(Math.abs(product.ProductLineTaxTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.LinePriceIncTax = -(Math.abs(product.ProductLinePriceInclTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.LinePaidExTax = -(Math.abs(product.ProductLinePriceExclTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.LinePaidTax = -(Math.abs(product.ProductLineTaxTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.LinePaidIncTax = -(Math.abs(product.ProductLinePriceInclTax / Math.abs(product.Quantity)) * ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.ProductLineNo = index;\r\n                returnRemainingnUniProds.Quantity = -Math.abs(ReturnCouponAppliedQty);\r\n                returnRemainingnUniProds.CouponCodeApplied = null;\r\n                trans.Products.push(returnRemainingnUniProds);\r\n            }\r\n\r\n        }\r\n    },\r\n    GetMMBModifyProduct(index, product, booking) {\r\n\r\n        let LineExTax = Math.round((Math.abs((product.ProductLinePriceExclTax / (product.Quantity)) * (product.Quantity - product.newQuantity))) * 100) / 100;\r\n        let LineTax = Math.round((Math.abs((product.ProductLineTaxTax / (product.Quantity)) * (product.Quantity - product.newQuantity))) * 100) / 100;\r\n        let LineIncTax = Math.round((Math.abs((product.ProductLinePriceInclTax / (product.Quantity)) * (product.Quantity - product.newQuantity))) * 100) / 100;\r\n        let ExTaxandTax = LineExTax + LineTax;\r\n\r\n        if (ExTaxandTax !== LineIncTax && ((LineIncTax - ExTaxandTax) < 0)) {\r\n            LineTax = LineTax - 0.01;\r\n        }\r\n\r\n        if (ExTaxandTax !== LineIncTax && ((LineIncTax - ExTaxandTax) > 0)) {\r\n            LineTax = LineTax + 0.01;\r\n        }\r\n\r\n        return {\r\n            ProductLineNo: index,\r\n            ProductID: product.ProductID,\r\n            Quantity: -Math.abs(product.Quantity - product.newQuantity),\r\n            LinePriceExTax: -LineExTax,\r\n            LinePriceTax: -LineTax,\r\n            LinePriceIncTax: -LineIncTax,\r\n            LinePaidExTax: -LineExTax,\r\n            LinePaidTax: -LineTax,\r\n            LinePaidIncTax: -LineIncTax,\r\n            TourEventID: booking.TourEventID,\r\n            TourProductID: product.TourProductID,\r\n            CostRateID: product.CostRateID,\r\n            BookingID: booking.BookingID,\r\n            BookingStatus: \"Modify Tickets\"\r\n        };\r\n    },\r\n    AddBookingUDFs(bookingUDFS, trans, newp, bkngID) {\r\n\r\n        if (bookingUDFS && bookingUDFS.bookingUDFs.filter(x => x.BookingTypeID === bkngID).length > 0 && trans.Products.length >= 0) {\r\n            let bkngUdfs = [];\r\n\r\n            bookingUDFS.bookingUDFs.filter(x => x.BookingTypeID === bkngID).map(booking => {\r\n\r\n                if (booking.UDFCategories && booking.UDFCategories.length > 0) {\r\n                    booking.UDFCategories.map(udfCategories => {\r\n\r\n                        if (udfCategories.UserDefinedFields && udfCategories.UserDefinedFields.length > 0) {\r\n                            udfCategories.UserDefinedFields.filter(x => x.toureventID === newp.TourEventID && (x.Value.length > 0 || x.Value === true)).map(UDF => {\r\n\r\n                                let val = UDF.UDFType !== \"Bit\" ? UDF.Value : UDF.Value === true ? 1 : 0;\r\n                                let userdefine = { \"UDFName\": UDF.UDFName, \"UDFValue\": val };\r\n                                bkngUdfs.push(userdefine);\r\n                            });\r\n                        }\r\n\r\n                    });\r\n                }\r\n\r\n\r\n            });\r\n\r\n            if (bkngUdfs && bkngUdfs.length > 0) {\r\n                newp.BookingUDFs = bkngUdfs;\r\n            }\r\n        }\r\n    },\r\n    getOrderProductPrice(product) {\r\n        return ShowOrderItemPriceAs.toLowerCase() == \"inctax\" ? product.PriceIncTax : product.PriceExTax\r\n    },\r\n    IsRequiredOptionsSelectedForOrderItem(Product) {\r\n        if (Product.Options && Product.Options.length > 0) {\r\n            return Product.Options.every(option => {\r\n                if (option.IsRequired == false || option.Products.find(x => x.IsSelected) != undefined) {\r\n                    return true;\r\n                }\r\n                else {\r\n                    return false;\r\n                }\r\n            })\r\n        } else {\r\n            return true;\r\n        }\r\n    },\r\n    getOrderProductsTotalPrice(foodproducts) {\r\n        let amount = {\r\n            price: 0,\r\n            subtotal: 0,\r\n            tax: 0,\r\n            total: 0\r\n        }\r\n        if (foodproducts && foodproducts.length > 0) {\r\n            foodproducts.forEach(p => {\r\n                let pPriceIncTax = p.PriceIncTax;\r\n                let pOptionPriceIncTax = 0;\r\n                let pPriceExTax = p.PriceExTax;\r\n                let pOptionPriceExTax = 0;\r\n                let pPriceTax = p.PriceTax;\r\n                let pOptionPriceTax = 0;\r\n\r\n                if (p.Options && p.Options.length > 0) {\r\n                    p.Options.forEach(option => {\r\n                        if (option.Products && option.Products.length > 0) {\r\n                            option.Products.filter(p => p.IsSelected).forEach(p => {\r\n                                pOptionPriceIncTax += p.PriceIncTax;\r\n                                pOptionPriceExTax += p.PriceExTax;\r\n                                pOptionPriceTax += p.PriceTax;\r\n                            });\r\n                        }\r\n                    });\r\n                }\r\n                amount.price += (pPriceExTax + pOptionPriceExTax);\r\n                amount.subtotal += (pPriceExTax + pOptionPriceExTax) * p.Quantity;\r\n                amount.tax += (pPriceTax + pOptionPriceTax) * p.Quantity;\r\n                amount.total += (pPriceIncTax + pOptionPriceIncTax) * p.Quantity;\r\n            });\r\n        }\r\n        return amount;\r\n    },\r\n    GetMembershipPackageFromApi(coupons, membershipID) {\r\n\r\n        let membershipPackage = null;\r\n        if (coupons && coupons.length > 0) {\r\n\r\n            membershipPackage === null && coupons.map(coupon => {\r\n\r\n                if (membershipPackage === null && coupon.MembershipPackages.filter(x => x.MembershipPackageID === membershipID).length > 0) {\r\n                    membershipPackage = coupon.MembershipPackages.filter(x => x.MembershipPackageID === membershipID)[0];\r\n                }\r\n            });\r\n\r\n            return membershipPackage;\r\n        }\r\n    },\r\n    CalculateMultiMerchantTotal(events, gatickets, membershippackage, giftcards, donations, transactionfee, cashless, donationProducts) {\r\n\r\n        let totalObj = {\r\n            merchant1Total: 0,\r\n            merchant2Total: 0\r\n        };\r\n\r\n        ///////////////////////// Merchant 1 Calculation /////////////////////////////////////\r\n\r\n        if (events && events.length > 0) {\r\n\r\n            events.filter(x => x.UseAlternateMerchant === false).map(e => {\r\n\r\n                e.TourProducts.map(prods => {\r\n                    totalObj.merchant1Total += this.IsNotFullPay(e.PaymentOption) ? prods.ProductSelectedTotalAmount : prods.ProductTotalAmount;\r\n                })\r\n\r\n                e.CouponItems.map(coupon => {\r\n                    totalObj.merchant1Total -= coupon.TotalAmount;\r\n                })\r\n            });\r\n        }\r\n\r\n        if (gatickets && gatickets.length > 0) {\r\n            totalObj.merchant1Total += gatickets.filter(x => x.UseAlternateMerchantOnline === false).map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        if (membershippackage && membershippackage.length > 0 && membershippackage[0].UseAlternateMerchant === false) {\r\n\r\n            membershippackage[0].MembershipProducts.map(m => {\r\n\r\n                if (m.hasOwnProperty('CouponCodeApplied') && m.CouponCodeApplied.length > 0) {\r\n                    totalObj.merchant1Total += m.TotalAmountAfterCoupon ? m.TotalAmountAfterCoupon : 0;\r\n                }\r\n                else {\r\n                    if ((m.Users && m.Users.length > 0) || (m.MembershipType === 'AddOn')) {\r\n                        if (m.MembershipType === 'AddOn') {\r\n                            totalObj.merchant1Total += m.TotalAmount !== undefined ? m.TotalAmount : 0;\r\n                        }\r\n                        else {\r\n                            totalObj.merchant1Total += m.TotalAmount !== undefined ? (m.TotalAmount * m.Users.length) : 0;\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        if (giftcards && giftcards.length > 0) {\r\n            totalObj.merchant1Total += giftcards.filter(x => x.UseAlternateMerchantOnline === false).map(({ CartTotalAmount }) => CartTotalAmount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        if (donations && donations.hasOwnProperty('isdonationApplied') && donations.isdonationApplied && !donations.UseAlternateMerchantOnline) {\r\n            totalObj.merchant1Total += parseFloat(donations.price);\r\n        }\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID') && transactionfee.UseAlternateMerchantOnline === false) {\r\n            let transactionFee = genfunction.TransactionFee(events, donations, transactionfee, cashless, membershippackage, gatickets, giftcards, null, donationProducts)\r\n            if (transactionFee) {\r\n                totalObj.merchant1Total += Math.round(parseFloat(transactionFee) * 100) / 100;\r\n            }\r\n        }\r\n\r\n        if (donationProducts && donationProducts.length > 0) {\r\n            totalObj.merchant1Total += donationProducts.filter(x => x.UseAlternateMerchantOnline === false).map(({ Amount }) => Amount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n\r\n        ///////////////////////// Merchant 1 Calculation End ////////////////////////////////////\r\n\r\n\r\n        ///////////////////////// Merchant 2 Calculation //////////////////////////////////////\r\n        if (events && events.length > 0) {\r\n\r\n            events.filter(x => x.UseAlternateMerchant === true).map(e => {\r\n\r\n                e.TourProducts.map(prods => {\r\n                    totalObj.merchant2Total += this.IsNotFullPay(e.PaymentOption) ? prods.ProductSelectedTotalAmount : prods.ProductTotalAmount;\r\n                })\r\n\r\n                e.CouponItems.map(coupon => {\r\n                    totalObj.merchant2Total -= coupon.TotalAmount;\r\n                })\r\n            });\r\n\r\n        }\r\n\r\n        if (gatickets && gatickets.length > 0) {\r\n            totalObj.merchant2Total += gatickets.filter(x => x.UseAlternateMerchantOnline === true).map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        if (membershippackage && membershippackage.length > 0 && membershippackage[0].UseAlternateMerchant === true) {\r\n\r\n            membershippackage[0].MembershipProducts.map(m => {\r\n\r\n                if (m.hasOwnProperty('CouponCodeApplied') && m.CouponCodeApplied.length > 0) {\r\n                    totalObj.merchant2Total += m.TotalAmountAfterCoupon ? m.TotalAmountAfterCoupon : 0;\r\n                }\r\n                else {\r\n                    if ((m.Users && m.Users.length > 0) || (m.MembershipType === 'AddOn')) {\r\n\r\n                        if (m.MembershipType === 'AddOn') {\r\n                            totalObj.merchant2Total += m.TotalAmount !== undefined ? m.TotalAmount : 0;\r\n                        }\r\n                        else {\r\n                            totalObj.merchant2Total += m.TotalAmount !== undefined ? (m.TotalAmount * m.Users.length) : 0;\r\n                        }\r\n                    }\r\n                }\r\n\r\n            });\r\n        }\r\n\r\n        if (giftcards && giftcards.length > 0) {\r\n            totalObj.merchant2Total += giftcards.filter(x => x.UseAlternateMerchantOnline === true).map(({ CartTotalAmount }) => CartTotalAmount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        if (donations && donations.hasOwnProperty('isdonationApplied') && donations.isdonationApplied && donations.UseAlternateMerchantOnline) {\r\n            totalObj.merchant2Total += parseFloat(donations.price);\r\n        }\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID') && transactionfee.UseAlternateMerchantOnline === true) {\r\n\r\n            let transactionFee = genfunction.TransactionFee(events, donations, transactionfee, cashless, membershippackage, gatickets, giftcards, null, donationProducts)\r\n            if (transactionFee) {\r\n                totalObj.merchant2Total += Math.round(parseFloat(transactionFee) * 100) / 100;\r\n            }\r\n        }\r\n\r\n        if (donationProducts && donationProducts.length > 0) {\r\n            totalObj.merchant2Total += donationProducts.filter(x => x.UseAlternateMerchantOnline === true).map(({ Amount }) => Amount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        ///////////////////////// Merchant 2 Calculation End ////////////////////////////////////\r\n\r\n        ///////////////////////// Redeemed Giftcard Amount ////////////////////////////////////\r\n        totalObj.merchant1Total = this.Rounded(totalObj.merchant1Total);\r\n        totalObj.merchant2Total = this.Rounded(totalObj.merchant2Total);\r\n\r\n        if (cashless && cashless.length > 0) {\r\n\r\n            if (totalObj.merchant1Total > 0) {\r\n                totalObj.merchant1Total -= cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n            }\r\n            else if (totalObj.merchant2Total > 0) {\r\n                totalObj.merchant2Total -= cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n            }\r\n\r\n\r\n\r\n            if (totalObj.merchant1Total < 0) {\r\n\r\n                totalObj.merchant2Total = totalObj.merchant2Total - Math.abs(totalObj.merchant1Total);\r\n                totalObj.merchant1Total = 0;\r\n\r\n                if (totalObj.merchant2Total < 0) {\r\n                    totalObj.merchant2Total = 0;\r\n                }\r\n            }\r\n        }\r\n\r\n        ///////////////////////// Redeemed Giftcard End ////////////////////////////////////\r\n\r\n        return totalObj;\r\n    },\r\n    CalculateEventFlexibleAmount(event, paymentOption, amountSelected) {\r\n\r\n        event.PaymentOption = paymentOption;\r\n        event.TotalSelectedAmount = amountSelected;\r\n\r\n        event.TicketSelectedAmount = 0;\r\n        event.TaxSelectedAmount = 0;\r\n\r\n        if (event.PaymentOption === \"FullPay\") {\r\n            event.TourProducts.forEach(product => {\r\n\r\n                var itemp = product.ProductAmount;\r\n                var itemtax = product.ProductTaxAmount;\r\n\r\n                product.ProductSelectedAmount = itemp;\r\n                product.ProductSelectedTaxAmount = itemtax;\r\n                product.ProductSelectedTotalAmount = product.ProductSelectedAmount + product.ProductSelectedTaxAmount;\r\n\r\n                event.TicketSelectedAmount += itemp;\r\n                event.TaxSelectedAmount += itemtax;\r\n\r\n\r\n            });\r\n        }\r\n        else if (event.PaymentOption === \"MinimumPay\") {\r\n            event.TourProducts.forEach(product => {\r\n\r\n                var itemp = (product.ProductAmount * product.MinDepositPercent) / 100;\r\n                var itemtax = (product.ProductTaxAmount * product.MinDepositPercent) / 100;\r\n\r\n                // itemp = Math.round(itemp * 100) / 100;\r\n                // itemtax = Math.round(itemtax * 100) / 100;\r\n\r\n                product.ProductSelectedAmount = Math.round(itemp * 100) / 100;\r\n                product.ProductSelectedTaxAmount = Math.round(itemtax * 100) / 100;\r\n                product.ProductSelectedTotalAmount = Math.round((itemp + itemtax) * 100) / 100;\r\n\r\n                event.TicketSelectedAmount += Math.round(itemp * 100) / 100;;\r\n                event.TaxSelectedAmount += Math.round(itemtax * 100) / 100;\r\n\r\n            });\r\n        }\r\n        else if (event.PaymentOption === \"OtherPay\") {\r\n            let remainingAmount = event.TotalSelectedAmount;\r\n            event.TourProducts.forEach(product => {\r\n                if (product.PriceMatrix && product.PriceMatrix.length > 0) {\r\n\r\n                    var itemp = 0;\r\n                    var itemtax = 0;\r\n                    var itemTotalAmount = 0;\r\n\r\n                    if (remainingAmount > product.ProductTotalAmount) {\r\n                        itemTotalAmount = Math.round(product.ProductTotalAmount * 100) / 100;\r\n                        remainingAmount -= itemTotalAmount;\r\n                    }\r\n                    else {\r\n                        itemTotalAmount = Math.round(remainingAmount * 100) / 100;;\r\n                        remainingAmount = 0;\r\n\r\n                    }\r\n\r\n\r\n                    product.PriceMatrix[0].Taxes.forEach(tax => {\r\n\r\n                        itemp = Math.round((itemTotalAmount / ((tax.TaxPercentage / 100) + 1)) * 100) / 100;\r\n                        itemtax = Math.round((itemTotalAmount - itemp) * 100) / 100;\r\n\r\n\r\n                    });\r\n\r\n                    product.ProductSelectedAmount = itemp;\r\n                    product.ProductSelectedTaxAmount = itemtax;\r\n                    product.ProductSelectedTotalAmount = itemTotalAmount;\r\n\r\n                    event.TicketSelectedAmount += itemp;\r\n                    event.TaxSelectedAmount += itemtax;\r\n\r\n                }\r\n\r\n            });\r\n        }\r\n        return event;\r\n    },\r\n\r\n    GetProductsTotalPrice(products) {\r\n        let amount = {\r\n            subtotal: 0,\r\n            tax: 0,\r\n            total: 0\r\n        }\r\n        if (products && products.length > 0) {\r\n            products.forEach(p => {\r\n\r\n                amount.subtotal += this.IsNotFullPay(p.PaymentOption) ? p.TicketSelectedAmount : p.TicketAmount;\r\n                amount.tax += this.IsNotFullPay(p.PaymentOption) ? p.TaxSelectedAmount : p.TaxAmount;\r\n                amount.total += this.IsNotFullPay(p.PaymentOption) ? p.TotalSelectedAmount : p.TotalAmount;\r\n            });\r\n        }\r\n        return amount;\r\n    },\r\n\r\n    IsNotNullOrEmptyOrUndefined(item) {\r\n        return (item && item.toString().trim().length > 0 ? true : false);\r\n    },\r\n\r\n    IsEditEvent(bookingTypes, event) {\r\n\r\n        const bookType = bookingTypes.filter(x => x.BookingTypeID === event.BookingTypeID)[0];\r\n\r\n        if (bookType && (this.IsShowPartPaymentSelection(event, bookType) || bookType.ShowTourProductsBasedOnGroupSize)) {\r\n            return true\r\n        }\r\n        return false;\r\n\r\n    },\r\n\r\n    IsOrganization(events) {\r\n\r\n        if (events && events.length > 0) {\r\n            let eventIndex = events.findIndex(x => x.OrganizationID && x.OrganizationID.toString().trim().length > 0);\r\n\r\n            if (eventIndex >= 0)\r\n                return true;\r\n\r\n        }\r\n        return false;\r\n    },\r\n\r\n    IsShowPartPaymentSelection(event, bkngType, groupSize) {\r\n\r\n        let isShowPartPaymentSelection = false;\r\n\r\n        if (event && event.hasOwnProperty(\"TourProducts\") && event.BookingTypeID === bkngType.BookingTypeID) {\r\n\r\n            if (genfunction.IsNotFullPay(event.PaymentOption)) {\r\n                return true;\r\n            }\r\n\r\n            if (event.TourProducts.filter(p => p.AvailableOnline && p.PriceMatrix !== undefined && p.PriceMatrix.length > 0 && p.TourProductID !== bkngType.ChaperoneTourProductID).length > 0) {\r\n\r\n                event.TourProducts.filter(p => p.AvailableOnline && p.PriceMatrix !== undefined && p.PriceMatrix.length > 0 && p.TourProductID !== bkngType.ChaperoneTourProductID\r\n                    && (this.IsNotNullOrEmptyOrUndefined(groupSize) && p.AffectsCapacity ? p.LimitDisplayOnGroupSize && p.GroupSize === groupSize : true))\r\n\r\n                    .map((product) => {\r\n                        if (product.MinDepositPercent > 0.00 && product.MinDepositPercent < 100.00)\r\n                            isShowPartPaymentSelection = true;\r\n                    })\r\n            }\r\n        }\r\n\r\n        return isShowPartPaymentSelection;\r\n\r\n    },\r\n\r\n    IsNotFullPay(paymentOption) {\r\n        return this.IsNotNullOrEmptyOrUndefined(paymentOption) && paymentOption !== \"FullPay\" ? true : false\r\n    },\r\n    IsNullOrUndefineReturnZero(amount) {\r\n        return amount === undefined || amount === null || amount === '' ? 0 : amount\r\n    },\r\n\r\n    MinimumDepositCalculation(event, tourEventID, chaperoneTourProductID) {\r\n        let MinDeposit = 0;\r\n\r\n        if (event && event.hasOwnProperty(\"TourProducts\") && event.TourEventID === tourEventID && event.TourProducts.filter(x => x.Quantity !== 0 && x.TourProductID !== chaperoneTourProductID).length > 0)\r\n            event.TourProducts.filter(x => x.Quantity !== 0 && event.TourEventID === tourEventID && x.TourProductID !== chaperoneTourProductID).map((product) => {\r\n                MinDeposit += (product.MinDepositPercent * product.ProductTotalAmount) / 100;\r\n            })\r\n\r\n        return Math.round(MinDeposit * 100) / 100;\r\n    },\r\n\r\n    CalculateAmountSelectedForMembers(events, bookingTypes) {\r\n\r\n        events.forEach(event => {\r\n            if (genfunction.IsNotFullPay(event.PaymentOption)) {\r\n\r\n                if (event.PaymentOption === \"MinimumPay\") {\r\n\r\n                    let ChaperoneTourProductID = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID === event.BookingTypeID)[0].ChaperoneTourProductID : null;\r\n                    event.TotalSelectedAmount = this.MinimumDepositCalculation(event, event.TourEventID, ChaperoneTourProductID);\r\n\r\n                }\r\n                else if (event.PaymentOption === \"OtherPay\") {\r\n\r\n                    event.OtherAmount = this.IsNotNullOrEmptyOrUndefined(event.OtherAmount) ? event.OtherAmount : event.TotalSelectedAmount;\r\n\r\n                    let ChaperoneTourProductID = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID === event.BookingTypeID)[0].ChaperoneTourProductID : null;\r\n                    let MinDeposit = this.MinimumDepositCalculation(event, event.TourEventID, ChaperoneTourProductID);\r\n\r\n                    event.TotalSelectedAmount = event.TotalSelectedAmount >= event.TotalAmount ? event.TotalAmount :\r\n                        (event.OtherAmount < MinDeposit ? MinDeposit : event.OtherAmount);\r\n\r\n                }\r\n                this.CalculateEventFlexibleAmount(event, event.PaymentOption, event.TotalSelectedAmount);\r\n            }\r\n        });\r\n    },\r\n\r\n    ConvertBookingtoTickets(booking) {\r\n        let index = 0;\r\n        let bookingTickets = {};\r\n\r\n        bookingTickets.BookingID = booking[0].BookingID;\r\n        bookingTickets.NodeNo = nodeNo;\r\n        bookingTickets.ProcessType = \"Ticket\";\r\n        bookingTickets.Tickets = [];\r\n\r\n        booking[0].Products.filter(x => x.BookingReadyToTicket === true && x.UnitPriceIncTax >= 0).forEach(tickets => {\r\n            let newp = {\r\n                TicketLineNo: index + 1,\r\n                ProductID: tickets.ProductID,\r\n                TourProductID: tickets.TourProductID,\r\n                Quantity: tickets.Quantity,\r\n                UnitPriceExTax: tickets.UnitPriceExTax,\r\n                UnitPriceTax: tickets.UnitPriceTax,\r\n                UnitPriceIncTax: tickets.UnitPriceIncTax,\r\n            };\r\n\r\n            bookingTickets.Tickets.push(newp);\r\n            index++;\r\n        });\r\n        return bookingTickets;\r\n\r\n    },\r\n\r\n    AddCashlessAndAdditionalPayment(cashless, additionalPayment) {\r\n\r\n        let cashlesstotal = 0;\r\n\r\n        if (cashless && cashless.length > 0) {\r\n            cashlesstotal = cashless ? cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        }\r\n\r\n        return this.Rounded(additionalPayment + cashlesstotal);\r\n    },\r\n\r\n    Rounded(value) {\r\n        return Math.round(value * 100) / 100;\r\n    },\r\n\r\n    TransactionFeeForPartialPayment(transactionfee, enteredAmountToPay, cashlesstotal) {\r\n\r\n        let tFee = this.GetTransactionFeeForPartialPayment(transactionfee, enteredAmountToPay, cashlesstotal);\r\n\r\n        if (tFee > 0 && (!transactionfee.Taxes[0].TaxIncluded)) {\r\n            tFee += this.ApplyTransactionFeeTax(transactionfee, tFee);\r\n        }\r\n\r\n        return tFee;\r\n    },\r\n    GetTransactionFeeForPartialPayment(transactionfee, enteredAmountToPay, cashlesstotal) {\r\n        let transFee = 0;\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID')) {\r\n\r\n            if (transactionfee.Price > 0) {\r\n                if (!transactionfee.PriceIsAPercentage) {\r\n\r\n                    transFee = ((enteredAmountToPay - cashlesstotal) || cashlesstotal > 0) ?\r\n                        parseFloat(transactionfee.Price) : 0;\r\n\r\n                }\r\n                else {\r\n                    transFee = this.Rounded((((enteredAmountToPay - cashlesstotal).toFixed(2)) * transactionfee.Price) / 100);\r\n                }\r\n\r\n                return transFee;\r\n            }\r\n        }\r\n\r\n        return 0;\r\n\r\n    },\r\n\r\n    GetValueFromCountryAndState(countryandstates, country, columnName) {\r\n        if (country != \"\" && countryandstates && countryandstates.length > 0 && countryandstates.filter(x => x.Country == country).length > 0) {\r\n            return countryandstates.filter(x => x.Country == country)[0][columnName];\r\n        }\r\n\r\n        if (columnName === \"PostalCodeName\")\r\n            return \"ZIP Code\";\r\n        else if (columnName === \"CityText\")\r\n            return \"City\";\r\n        else if (columnName === \"OrganizationText\")\r\n            return \"Organization\";\r\n        else return true;\r\n\r\n    },\r\n\r\n    IsObjectNotNullOrEmptyOrUndefined(item) {\r\n        return item !== null && item !== undefined && item.length > 0 ? true : false;\r\n\r\n    },\r\n\r\n    CalculateMultiMerchantTotalForMMB(event, cashless, transactionfee, enteredAmountToPay, booking) {\r\n        let totalObj = {\r\n            merchant1Total: 0,\r\n            merchant2Total: 0\r\n        };\r\n\r\n        let isUseAlternateMerchant = booking && booking.hasOwnProperty('BookingID') ? booking.UseAlternateMerchant : null;\r\n        let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n\r\n        ///////////////////////// Merchant 1 Calculation /////////////////////////////////////\r\n\r\n        if ((this.IsObjectNotNullOrEmptyOrUndefined(event) && event[0].UseAlternateMerchant === false) || isUseAlternateMerchant === false) {\r\n\r\n            totalObj.merchant1Total += enteredAmountToPay;\r\n        }\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID') && transactionfee.UseAlternateMerchantOnline === false) {\r\n            let transactionFee = genfunction.TransactionFeeForPartialPayment(transactionfee, enteredAmountToPay, cashlesstotal);\r\n            if (transactionFee) {\r\n                totalObj.merchant1Total += this.Rounded(parseFloat(transactionFee));\r\n\r\n            }\r\n        }\r\n\r\n        ///////////////////////// Merchant 1 Calculation End ////////////////////////////////////\r\n\r\n\r\n        ///////////////////////// Merchant 2 Calculation //////////////////////////////////////\r\n\r\n        if ((this.IsObjectNotNullOrEmptyOrUndefined(event) && event[0].UseAlternateMerchant === true) || isUseAlternateMerchant === true) {\r\n\r\n            totalObj.merchant2Total += enteredAmountToPay;\r\n        }\r\n\r\n        if (transactionfee && transactionfee.hasOwnProperty('ProductID') && transactionfee.UseAlternateMerchantOnline === true) {\r\n\r\n            let transactionFee = this.TransactionFeeForPartialPayment(transactionfee, enteredAmountToPay, cashlesstotal);\r\n            if (transactionFee) {\r\n                totalObj.merchant2Total += this.Rounded(parseFloat(transactionFee));\r\n            }\r\n        }\r\n\r\n        ///////////////////////// Merchant 2 Calculation End ////////////////////////////////////\r\n\r\n        ///////////////////////// Redeemed Giftcard Amount ////////////////////////////////////\r\n        totalObj.merchant1Total = this.Rounded(totalObj.merchant1Total);\r\n        totalObj.merchant2Total = this.Rounded(totalObj.merchant2Total);\r\n\r\n        if (cashless && cashless.length > 0) {\r\n\r\n            if (totalObj.merchant1Total > 0) {\r\n                totalObj.merchant1Total -= cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n            }\r\n            else if (totalObj.merchant2Total > 0) {\r\n                totalObj.merchant2Total -= cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n            }\r\n\r\n\r\n\r\n            if (totalObj.merchant1Total < 0) {\r\n\r\n                totalObj.merchant2Total = totalObj.merchant2Total - Math.abs(totalObj.merchant1Total);\r\n                totalObj.merchant1Total = 0;\r\n\r\n                if (totalObj.merchant2Total < 0) {\r\n                    totalObj.merchant2Total = 0;\r\n                }\r\n            }\r\n        }\r\n\r\n        ///////////////////////// Redeemed Giftcard End ////////////////////////////////////\r\n\r\n        return totalObj;\r\n\r\n    },\r\n    UpdateMembershipPackageForRenewToNewMembershipPackage(membershipPackage, membermemberships, customer) {\r\n\r\n        let memberpackageDetail = {\r\n            membershipPackage: {},\r\n            userslist: []\r\n        }\r\n\r\n        //Add Primary Member to the Primary Membership Type\r\n        let count = 0;\r\n        let primaryMemberMembership = membermemberships.Memberships && membermemberships.Memberships.length > 0 ? membermemberships.Memberships[0] : null;\r\n\r\n        membershipPackage.MembershipProducts = membershipPackage.MembershipProducts.map(memType => {\r\n\r\n            if (memType.MembershipType === \"Membership\" && count === 0) {\r\n                memType.Users = [];\r\n\r\n                var user = {\r\n                    isPrimaryMember: true,\r\n                    popupTitle: 'Primary Member',\r\n                    firstName: membermemberships.FirstName,\r\n                    lastName: membermemberships.LastName,\r\n                    email: membermemberships.Email,\r\n                    dob: this.GetValueIfObjectHasProperty('DateOfBirth', customer[0]),\r\n                    phone: this.GetValueIfObjectHasProperty('MobilePhone', customer[0].CustomerAddress[0]),\r\n                    address1: this.GetValueIfObjectHasProperty('Street1', customer[0].CustomerAddress[0]),\r\n                    address2: this.GetValueIfObjectHasProperty('Street2', customer[0].CustomerAddress[0]),\r\n                    city: this.GetValueIfObjectHasProperty('CitySuburb', customer[0].CustomerAddress[0]),\r\n                    state: this.GetValueIfObjectHasProperty('State', customer[0].CustomerAddress[0]),\r\n                    zipcode: this.GetValueIfObjectHasProperty('Postcode', customer[0].CustomerAddress[0]),\r\n                    country: this.GetValueIfObjectHasProperty('Country', customer[0].CustomerAddress[0]),\r\n                    userNo: membermemberships.MemberNumber,\r\n                    isRenewal: true,\r\n                    isEdit: false,\r\n                    membershipTypeID: memType.MembershipTypeID,\r\n                    membershipTypeName: memType.ProductName,\r\n                    PreviousMembershipType: primaryMemberMembership.ProductName,\r\n                    notpartofPackage: false,\r\n                    UniquePackageRef: primaryMemberMembership.UniquePackageRef,\r\n                    MembershipExpiryDate: primaryMemberMembership.MembershipExpiryDate,\r\n                    userSelectedFromDropdown: true\r\n                }\r\n\r\n                memType.Users.push(user);\r\n                count++;\r\n            }\r\n\r\n            return memType;\r\n        })\r\n\r\n        //Add Other Family Members\r\n\r\n        if (membermemberships && membermemberships.LinkedIndividuals && membermemberships.LinkedIndividuals.length > 0) {\r\n\r\n            membermemberships.LinkedIndividuals.map(mem => {\r\n\r\n                var linkedUser = customer[0].LinkedIndividuals.filter(x => x.CustomerID == mem.MemberNumber);\r\n\r\n                if (linkedUser && linkedUser.length > 0) {\r\n                    var user = {\r\n                        isPrimaryMember: false,\r\n                        firstName: mem.FirstName,\r\n                        lastName: mem.LastName,\r\n                        email: linkedUser[0].hasOwnProperty('Email') ? linkedUser[0].Email : '',\r\n                        dob: mem.DateOfBirth === undefined || mem.DateOfBirth === '' ? null : mem.DateOfBirth,\r\n                        phone: linkedUser[0].hasOwnProperty('MobilePhone') ? linkedUser[0].MobilePhone : '',\r\n                        address1: '',\r\n                        address2: '',\r\n                        city: '',\r\n                        state: '',\r\n                        zipcode: '',\r\n                        country: '',\r\n                        userNo: mem.MemberNumber,\r\n                        membershipTypeID: 0,\r\n                        membershipTypeName: '',\r\n                        previousMembershipType: '',\r\n                        notpartofPackage: true,\r\n                        isRenewal: true,\r\n                        isEdit: false,\r\n                        UniquePackageRef: '',\r\n                        MembershipExpiryDate: '',\r\n                        userSelectedFromDropdown: false\r\n                    }\r\n\r\n                    memberpackageDetail.userslist.push(user);\r\n                }\r\n\r\n            });\r\n        }\r\n\r\n        memberpackageDetail.membershipPackage = membershipPackage;\r\n        return memberpackageDetail;\r\n    },\r\n    GetSecondaryUserAddressID(user, customerAddresses) {\r\n\r\n        let addressID = 0;\r\n\r\n        if (user && customerAddresses && customerAddresses.length > 0) {\r\n\r\n            let customer = customerAddresses.filter(x => x.CustomerID === user.userNo)[0];\r\n\r\n            if (customer) {\r\n                let userAdd = customer.CustomerAddress.filter(x => x.AddressTypeID === StreetAddressTypeID)[0];\r\n\r\n                if (userAdd) {\r\n                    addressID = userAdd.AddressID;\r\n                }\r\n            }\r\n        }\r\n\r\n        return addressID;\r\n    }, GetPrimaryMemberMembershipStartDate(membershipPackages) {\r\n        let primaryMemberRenewStartDate = \"\";\r\n\r\n        membershipPackages.forEach(memPack => {\r\n\r\n            memPack.MembershipProducts.filter(x => x.MembershipType === \"Membership\").forEach(m => {\r\n\r\n                if (m.MembershipType === \"Membership\" && m.Users.length > 0) {\r\n                    m.Users.forEach(u => {\r\n\r\n                        if (u.isPrimaryMember) {\r\n                            primaryMemberRenewStartDate = u.startDate\r\n                        }\r\n                    });\r\n                }\r\n\r\n            });\r\n\r\n        });\r\n\r\n        return primaryMemberRenewStartDate;\r\n    }\r\n\r\n}\r\n\r\n","import { CouponManager, genfunction } from \"helpers\";\r\n\r\nconst { DefaultCostRateID } = window['runConfig'];\r\n\r\nexport default {\r\n\r\n    ApplyCouponsToEvents(events, coupons, TourProducts, couponAlreadyApply, couponCode) {\r\n\r\n        let index = 0;\r\n        coupons.forEach(coupon => {\r\n\r\n            let applyDisProdID = coupon.TourProducts && coupon.TourProducts.length > 0 ? coupon.TourProducts[0].ApplyDiscountToTourProductID : 0;\r\n\r\n            let tourProd = TourProducts.find(x => x.TourProductID == applyDisProdID);\r\n\r\n            events.filter(e => e.PaymentOption ? e.PaymentOption === \"FullPay\" || e.PaymentOption === \"MinimumPay\" : true).forEach(event => {\r\n\r\n                if (event.CouponItems.length < 1) {\r\n                    event.CouponItems = [];\r\n                }\r\n                else {\r\n                    if (coupon.RequireUniqueCouponCode) {\r\n\r\n                        let sum = 0;\r\n                        event.CouponItems.forEach(obj => {\r\n                            if (obj.isUniqueCoupon)\r\n                                sum += obj.Quantity;\r\n                        })\r\n\r\n                        coupon.MaxProductsLimit += sum;\r\n\r\n                    }\r\n\r\n                    event.CouponItems = event.CouponItems.filter(x => x.CouponID != coupon.CouponID);\r\n                }\r\n\r\n                let eventProds = this.SortProductsPriceWise(event.TourProducts);\r\n\r\n                eventProds.forEach(product => {\r\n\r\n                    var prod = coupon.TourProducts.find(x => x.TourProductID == product.TourProductID);\r\n\r\n                    if (prod) {\r\n\r\n                        let couponObj = {\r\n\r\n                            CouponID: coupon.CouponID,\r\n                            CouponCode: coupon.CouponCode,\r\n                            ApplyDiscountProductID: tourProd.PriceMatrix ? tourProd.PriceMatrix[0].ProductID : 0,\r\n                            ApplyDiscountTourProductID: tourProd.TourProductID,\r\n                            ApplyDiscountTourProductName: tourProd.TourProductName,\r\n                            TourEventID: event.TourEventID,\r\n                            TourProductID: product.TourProductID,\r\n                            TourProductName: product.TourProductName,\r\n                            UniqueCouponCode: coupon.RequireUniqueCouponCode ? couponCode : coupon.CouponCode,\r\n                            isUniqueCoupon: coupon.RequireUniqueCouponCode ? true : false,\r\n                            Quantity: product.Quantity,\r\n                            CouponHoldRef: null,\r\n                            ProdQuantity: product.Quantity\r\n                        }\r\n\r\n                        couponObj.isPercentage = prod.hasOwnProperty(\"PercentageDiscount\") ? true : false;\r\n                        couponObj.Discount = prod.hasOwnProperty(\"PercentageDiscount\") ? genfunction.IsNullOrUndefineReturnZero(prod.PercentageDiscount) : genfunction.IsNullOrUndefineReturnZero(prod.DollarDiscount);\r\n\r\n\r\n                        let ProductAmount = genfunction.IsNotFullPay(event.PaymentOption) ? product.ProductSelectedAmount : product.ProductAmount;\r\n                        let ProductTaxAmount = genfunction.IsNotFullPay(event.PaymentOption) ? product.ProductSelectedTaxAmount : product.ProductTaxAmount;\r\n\r\n                        if (coupon.RequireUniqueCouponCode) {\r\n\r\n                            if (coupon.MaxProductsLimit <= 0) {\r\n                                return;\r\n                            }\r\n\r\n                            couponObj.CouponHoldRef = coupon.CouponHoldRef;\r\n                            couponObj.Quantity = product.Quantity <= coupon.MaxProductsLimit ? product.Quantity : coupon.MaxProductsLimit;\r\n                            couponObj.TicketAmount = couponObj.isPercentage ? Math.round(CouponManager.CalculateTicketOddQuantities(ProductAmount / product.Quantity, couponObj.Quantity, couponObj.Discount, product, event.PaymentOption) * 100) / 100 : Math.round(CouponManager.CalculateDollarTicketPrice(ProductAmount, prod.DollarDiscount, couponObj.Quantity, product, event.PaymentOption) * 100) / 100;\r\n                            couponObj.TicketTax = couponObj.isPercentage ? Math.round(CouponManager.CalculateTaxOddQuantities(ProductTaxAmount / product.Quantity, couponObj.Quantity, couponObj.Discount, product, event.PaymentOption) * 100) / 100 : Math.round(CouponManager.CalculateDollarTicketTax(couponObj.TicketAmount, prod.DollarDiscount * couponObj.Quantity, couponObj.Quantity, product, event.PaymentOption) * 100) / 100;\r\n\r\n\r\n                            coupon.MaxProductsLimit -= couponObj.Quantity;\r\n                        }\r\n                        else {\r\n                            couponObj.TicketAmount = couponObj.isPercentage ? Math.round(ProductAmount * (couponObj.Discount / 100) * 100) / 100 : Math.round(CouponManager.CalculateDollarTicketPrice(ProductAmount, genfunction.IsNullOrUndefineReturnZero(prod.DollarDiscount), product.Quantity, product, event.PaymentOption) * 100) / 100;\r\n                            couponObj.TicketTax = couponObj.isPercentage ? Math.round(ProductTaxAmount * (couponObj.Discount / 100) * 100) / 100 : Math.round(CouponManager.CalculateDollarTicketTax(couponObj.TicketAmount, genfunction.IsNullOrUndefineReturnZero(prod.DollarDiscount) * product.Quantity, couponObj.Quantity, product, event.PaymentOption) * 100) / 100;\r\n                        }\r\n\r\n\r\n                        couponObj.TotalAmount = couponObj.TicketAmount + couponObj.TicketTax;\r\n                        this.OnePennyDifference(product, couponObj, event.PaymentOption);\r\n\r\n                        let itemIndex = event.CouponItems.findIndex(x => x.TourProductID == product.TourProductID &&\r\n                            (genfunction.IsNotFullPay(event.PaymentOption) ? x.TotalSelectedAmount : x.TotalAmount) < couponObj.TotalAmount);\r\n\r\n                        if (itemIndex >= 0) {\r\n                            event.CouponItems[itemIndex] = couponObj;\r\n\r\n                        }\r\n\r\n                        else {\r\n\r\n                            if (event.CouponItems.find(x => x.TourProductID == product.TourProductID &&\r\n                                (genfunction.IsNotFullPay(event.PaymentOption) ? x.TotalSelectedAmount : x.TotalAmount) >= couponObj.TotalAmount)) {\r\n                                couponAlreadyApply = true;\r\n                                return;\r\n                            }\r\n\r\n                            event.CouponItems.push(couponObj);\r\n                        }\r\n\r\n                    }\r\n                })\r\n            })\r\n            index++;\r\n        })\r\n\r\n        return couponAlreadyApply;\r\n    },\r\n\r\n    RemoveUniqueCouponNotApplied(events, couponCode) {\r\n        let remove = 0;\r\n        events.map(obj => {\r\n\r\n            if (obj.CouponItems && obj.CouponItems.filter(x => x.isUniqueCoupon && x.CouponHoldRef == couponCode).length > 0) {\r\n                remove += 1;\r\n            }\r\n        });\r\n\r\n        return remove > 0 ? false : true;\r\n    },\r\n\r\n    CalcuateCouponDiscounts(products) {\r\n        let totalDiscount = 0;\r\n\r\n        products.map(product => (\r\n\r\n            product.CouponItems.map(e =>\r\n\r\n                totalDiscount += e.TotalAmount\r\n            )\r\n        ));\r\n\r\n        return products.map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0) - totalDiscount;\r\n    },\r\n\r\n    CalculateDollarTicketPrice(ExTaxAmount, DollarPercent, ApplyQty, Product, PaymentOption) {\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded) {\r\n            if (DollarPercent * ApplyQty > (genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedTotalAmount : Product.ProductTotalAmount)) {\r\n                return genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedAmount : Product.ProductAmount;\r\n            }\r\n\r\n            if (DollarPercent > (ExTaxAmount / Product.Quantity) && ApplyQty != Product.Quantity) {\r\n                return (ExTaxAmount / Product.Quantity) * ApplyQty;\r\n            }\r\n\r\n            return DollarPercent * ApplyQty / (1 + (Product.PriceMatrix[0].Taxes[0].TaxPercentage / 100));\r\n        }\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded == false) {\r\n\r\n            if (DollarPercent * ApplyQty > ExTaxAmount) {\r\n                return ExTaxAmount;\r\n            }\r\n\r\n            if (DollarPercent > Product.IndividualPrice && ApplyQty != Product.Quantity) {\r\n                return Product.IndividualPrice * ApplyQty;\r\n            }\r\n\r\n            return DollarPercent * ApplyQty;\r\n        }\r\n\r\n        return 0;\r\n    },\r\n\r\n    CalculateDollarTicketTax(ExTaxAmount, DollarPercent, ApplyQty, Product, PaymentOption) {\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded) {\r\n            if (DollarPercent > (genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedAmount : Product.ProductAmount) && Product.Quantity == 1) {\r\n                return (genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedTaxAmount : Product.ProductTaxAmount);\r\n            }\r\n\r\n            if (DollarPercent > ((genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedAmount : Product.ProductAmount)\r\n                / Product.Quantity) && Product.Quantity != ApplyQty) {\r\n                return (Product.ProductTaxAmount / Product.Quantity) * ApplyQty;\r\n            }\r\n\r\n            return DollarPercent - ExTaxAmount;\r\n        }\r\n\r\n        if (Product.PriceMatrix[0].Taxes[0].TaxIncluded == false) {\r\n            if (DollarPercent > ExTaxAmount) {\r\n                return (ExTaxAmount * (Product.PriceMatrix[0].Taxes[0].TaxPercentage / 100));\r\n            }\r\n\r\n            return (DollarPercent * (Product.PriceMatrix[0].Taxes[0].TaxPercentage / 100));\r\n        }\r\n\r\n        return 0;\r\n    },\r\n\r\n    UniqueCouponPostRequest(couponObj, events, bookingCoupons) {\r\n\r\n        let holdReq = 0;\r\n        let eventProdsTotal = 0;\r\n        let error = '';\r\n\r\n        if (events && events.length > 0) {\r\n            events.forEach(event => {\r\n\r\n                event.TourProducts.forEach((product) => {\r\n                    if (product.Quantity > 0 && couponObj.TourProducts.filter(x => x.TourProductID == product.Quantity)) {\r\n                        eventProdsTotal += product.Quantity;\r\n                    }\r\n                });\r\n            });\r\n        }\r\n\r\n        if (couponObj.MaxProductsPerPurchase < eventProdsTotal) {\r\n            holdReq = couponObj.MaxProductsPerPurchase;\r\n        }\r\n        else {\r\n            holdReq = eventProdsTotal;\r\n        }\r\n\r\n        couponObj.TimesUsed += holdReq;\r\n\r\n        if (couponObj.TimesUsed > couponObj.MaxTransactionsPerCoupon) {\r\n            error = 'This Coupon is used maximum number of times.';\r\n        }\r\n\r\n        //Create Unique Coupon Hold Request\r\n        let UniqueCouponHolds = [];\r\n        let UniqueCoupon = {};\r\n        UniqueCoupon.UniqueCouponCode = couponObj.UniqueCouponCode;\r\n        UniqueCoupon.HoldsRequested = holdReq;\r\n        UniqueCouponHolds.push(UniqueCoupon);\r\n\r\n        return { 'UniqueCoupon': UniqueCouponHolds, 'Error': error }\r\n    },\r\n\r\n    CalculateTicketOddQuantities(ExProductsTotal, ProdQuantities, Discount, Product, PaymentOption) {\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded) {\r\n            if (Discount == 100) {\r\n                return ((genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedAmount : Product.ProductAmount) / Product.Quantity) * ProdQuantities;\r\n            }\r\n\r\n            return (ExProductsTotal * ProdQuantities) * (Discount / 100);\r\n        }\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded == false) {\r\n            if (Discount == 100) {\r\n                return Math.round(ExProductsTotal * ProdQuantities * 100) / 100;\r\n            }\r\n            else {\r\n                return Math.round((ExProductsTotal * ProdQuantities) * (Discount / 100) * 100) / 100\r\n            }\r\n        }\r\n    },\r\n\r\n    CalculateTaxOddQuantities(ExTaxTotal, ProdQuantities, Discount, Product, PaymentOption) {\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded) {\r\n            if (Discount == 100) {\r\n                return ((genfunction.IsNotFullPay(PaymentOption) ? Product.ProductSelectedTaxAmount : Product.ProductTaxAmount) / Product.Quantity) * ProdQuantities;\r\n            }\r\n\r\n\r\n            return (ExTaxTotal * ProdQuantities) * (Discount / 100);\r\n        }\r\n\r\n        if (Product.PriceMatrix && Product.PriceMatrix[0].Taxes[0].TaxIncluded == false) {\r\n            if (Discount == 100) {\r\n                return Math.round(ExTaxTotal * ProdQuantities * 100) / 100;\r\n            }\r\n            else {\r\n                return Math.round((ExTaxTotal * ProdQuantities) * (Discount / 100) * 100) / 100;\r\n            }\r\n        }\r\n\r\n    },\r\n\r\n    RemoveProductItem(newevents, eventID, productID) {\r\n        let noproducteventid = 0;\r\n        newevents = newevents.map(obj => {\r\n            if (obj.TourEventID === eventID) {\r\n                obj.CouponItems = obj.CouponItems.filter(p => p.TourProductID !== productID);\r\n                if (obj.CouponItems.length === 0) {\r\n                    noproducteventid = obj.TourEventID;\r\n                }\r\n            }\r\n            return obj;\r\n        });\r\n\r\n\r\n        return newevents;\r\n    },\r\n\r\n    RemoveUnusedCoupon(newcouponTours, newevents) {\r\n        newcouponTours = newcouponTours.map(c => {\r\n            c.Accessable = false;\r\n            newevents.map(e => {\r\n\r\n                if (e.CouponItems.find(x => x.CouponID == c.CouponID) !== undefined) {\r\n                    c.Accessable = true;\r\n                }\r\n            });\r\n\r\n            return c;\r\n        });\r\n\r\n        newcouponTours = newcouponTours.filter(x => x.Accessable).map(x => {\r\n            return x;\r\n        });\r\n\r\n        return newcouponTours;\r\n    },\r\n\r\n    UpdateMaxProductLimit(newcouponTours, newevents, eventID, prodID) {\r\n        let prodCoupon = null;\r\n        let event = newevents.find(x => x.TourEventID === eventID);\r\n        if (event) {\r\n            prodCoupon = event.CouponItems.find(x => x.TourProductID == prodID);\r\n        }\r\n\r\n        if (prodCoupon && prodCoupon.isUniqueCoupon) {\r\n            newcouponTours = newcouponTours.map(c => {\r\n\r\n                if (c.CouponID === prodCoupon.CouponID) {\r\n                    c.MaxProductsLimit += prodCoupon.Quantity;\r\n                }\r\n                return c;\r\n            });\r\n        }\r\n\r\n        return newcouponTours;\r\n    },\r\n\r\n    SortProductsPriceWise(eventProducts) {\r\n        let eventProds = eventProducts;\r\n        return eventProds.sort((a, b) => b.IndividualPrice - a.IndividualPrice);\r\n    },\r\n\r\n    OnePennyDifference(product, coupon, PaymentOption) {\r\n        if (product.PriceMatrix && product.PriceMatrix[0].Taxes[0].TaxIncluded && coupon.Quantity == product.Quantity) {\r\n            if (Math.round((coupon.TotalAmount - (\r\n\r\n                (genfunction.IsNotFullPay(PaymentOption) ? product.ProductSelectedTotalAmount : product.ProductTotalAmount) * (coupon.Discount / 100))) * 100) / 100 === 0.01) {\r\n                coupon.TotalAmount -= 0.01;\r\n                coupon.TicketTax -= 0.01;\r\n\r\n            }\r\n        }\r\n    }\r\n}","export default {\r\n\r\n    initialerrorstate: {\r\n        first_name: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        last_name: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        email: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        number: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        cvv: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        month: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        year: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        address1: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        address2: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        phone_number: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        city: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        state: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        zip: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        country: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        memberno: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        MonthSelect: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        YearSelect: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_address1: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_address2: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_phone_number: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_city: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_state: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_zip: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        shipping_country: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        },\r\n        MonthAndYear: {\r\n            errorstate: false,\r\n            errortext: \"\"\r\n        }\r\n    }\r\n}","export default {\r\n\r\n    initialfieldsstate: {\r\n        first_name: {\r\n            value: \"\"\r\n        },\r\n        last_name: {\r\n            value: \"\"\r\n        },\r\n        email: {\r\n            value: \"\"\r\n        },\r\n        checkBoxMember: {\r\n            value: false\r\n        },\r\n        memberno: {\r\n            value: \"\"\r\n        },\r\n        address1: {\r\n            value: \"\"\r\n        },\r\n        address2: {\r\n            value: \"\"\r\n        },\r\n        phone_number: {\r\n            value: \"\"\r\n        },\r\n        city: {\r\n            value: \"\"\r\n        },\r\n        state: {\r\n            value: \"\"\r\n        },\r\n        zip: {\r\n            value: \"\"\r\n        },\r\n        country: {\r\n            value: \"\"\r\n        },\r\n        MonthSelect: {\r\n            value: \"\"\r\n        },\r\n        YearSelect: {\r\n            value: \"\"\r\n        },\r\n        billingAddressSame: {\r\n            value: true\r\n        },\r\n        shipping_address1: {\r\n            value: \"\"\r\n        },\r\n        shipping_address2: {\r\n            value: \"\"\r\n        },\r\n        shipping_phone_number: {\r\n            value: \"\"\r\n        },\r\n        shipping_city: {\r\n            value: \"\"\r\n        },\r\n        shipping_state: {\r\n            value: \"\"\r\n        },\r\n        shipping_zip: {\r\n            value: \"\"\r\n        },\r\n        shipping_country: {\r\n            value: \"\"\r\n        }\r\n    }\r\n}","export default {\r\n\r\n    GetCustomersListToUpdateUDFs(membershipPackage, membershipTypesUDFs, customerResponse) {\r\n        let CustomerUDFsCollection = [];\r\n\r\n        membershipPackage.forEach(memPack => {\r\n\r\n            memPack.MembershipProducts.forEach(memType => {\r\n\r\n                if (memType.MembershipType === \"Membership\" && memType.Users && memType.Users.length > 0) {\r\n\r\n                    memType.Users.forEach(u => {\r\n                        CustomerUDFsCollection.push(this.GenerateCustomerUDFs(memType.MembershipTypeID, u, membershipTypesUDFs, customerResponse));\r\n                    });\r\n                }\r\n            })\r\n        });\r\n\r\n        return CustomerUDFsCollection;\r\n    },\r\n    GenerateCustomerUDFs(memTypeID, user, membershipTypesUDFs, customerResponse) {\r\n        let customerUdfObj = {};\r\n        customerUdfObj.CustomerID = 0;\r\n        customerUdfObj.CustomerUDFs = [];\r\n\r\n        //Update Customer ID\r\n        if (customerResponse && customerResponse.length > 0) {\r\n            if (user.firstName == customerResponse[0].FirstName && user.lastName == customerResponse[0].LastName) {\r\n                customerUdfObj.CustomerID = customerResponse[0].CustomerID;\r\n            }\r\n            else {\r\n                customerResponse[0].LinkedIndividuals && customerResponse[0].LinkedIndividuals.map(u => {\r\n\r\n                    if (user.firstName == u.FirstName && user.lastName == u.LastName) {\r\n                        customerUdfObj.CustomerID = u.CustomerID;\r\n                    }\r\n                });\r\n            }\r\n        }\r\n\r\n        if (membershipTypesUDFs.filter(x => x.MembershipTypeID === memTypeID).length > 0 && membershipTypesUDFs.filter(x => x.MembershipTypeID === memTypeID)[0].UDFCategories != null) {\r\n            membershipTypesUDFs.filter(x => x.MembershipTypeID === memTypeID)[0].UDFCategories.map((udfCategorey, i) => {\r\n\r\n                udfCategorey.UserDefinedFields.map((udf) => {\r\n\r\n                    if (udf.hasOwnProperty('Users') && udf.Users.filter(x => x.userID == user.userNo).length > 0) {\r\n                        let udfUser = udf.Users.filter(x => x.userID == user.userNo)[0];\r\n                        let udfObj = {\r\n                            \"UDFName\": udf.UDFName,\r\n                            \"UDFType\": udf.UDFType,\r\n                            \"UDFValue\": udf.UDFType === \"Date\" && (udfUser.userUDFValue === \"\" || udfUser.userUDFValue === undefined || udfUser.userUDFValue === null) ? null : udfUser.userUDFValue\r\n                        }\r\n\r\n                        customerUdfObj.CustomerUDFs.push(udfObj);\r\n                    }\r\n                })\r\n            });\r\n        }\r\n\r\n        return customerUdfObj;\r\n    },\r\n    UpdateMembershipUDFsWithCustomerUDFValue(membershipPackage, membershipTypesUDFs, customerUdfs) {\r\n\r\n        if (membershipPackage.MembershipProducts !== undefined && membershipPackage.MembershipProducts.length > 0) {\r\n\r\n            membershipPackage.MembershipProducts.forEach(memType => {\r\n\r\n                if (memType.MembershipType === \"Membership\" && (memType.Users !== undefined && memType.Users.length > 0)) {\r\n\r\n                    let memTypeUdfs = this.GetMembrshipTypeUDF(memType.MembershipTypeID, membershipTypesUDFs);\r\n\r\n                    if (memTypeUdfs) {\r\n                        memType.Users.forEach(u => {\r\n\r\n                            let customerUDF = this.GetCustomerUDF(u.userNo, customerUdfs);\r\n\r\n                            memTypeUdfs.UDFCategories.forEach(udfCategorey => {\r\n\r\n                                udfCategorey.UserDefinedFields.forEach(udf => {\r\n\r\n                                    if (customerUDF) {\r\n                                        let val = this.GetCustomerUDFValue(customerUDF, udf);\r\n\r\n                                        if (val) {\r\n                                            let usr = { userID: u.userNo, userUDFValue: val };\r\n\r\n                                            if (udf.Users && udf.Users.length > 0) {\r\n                                                udf.Users = udf.Users.filter(x => x.userID !== u.userNo);\r\n                                            }\r\n\r\n                                            udf.Users.push(usr);\r\n                                        }\r\n                                    }\r\n                                })\r\n                            });\r\n\r\n                        });\r\n\r\n                        membershipTypesUDFs = membershipTypesUDFs.filter(x => x.MembershipTypeID !== memType.MembershipTypeID);\r\n                        membershipTypesUDFs.push(memTypeUdfs);\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        return membershipTypesUDFs;\r\n    },\r\n    GetMembrshipTypeUDF(membershipTypeID, membershipTypesUDFs) {\r\n\r\n        let memTypeUDFs = null;\r\n\r\n        if (membershipTypesUDFs && membershipTypesUDFs.length > 0 && membershipTypesUDFs.filter(x => x.MembershipTypeID === membershipTypeID).length > 0) {\r\n            memTypeUDFs = membershipTypesUDFs.filter(x => x.MembershipTypeID === membershipTypeID)[0];\r\n        }\r\n\r\n        return memTypeUDFs;\r\n    },\r\n    GetCustomerUDF(customerNo, customerUdfs) {\r\n        let cstUdfs = null;\r\n\r\n        if (customerUdfs && customerUdfs.length > 0 && customerUdfs.filter(x => x.CustomerID === customerNo).length > 0) {\r\n            cstUdfs = customerUdfs.filter(x => x.CustomerID === customerNo)[0];\r\n        }\r\n\r\n        return cstUdfs;\r\n    },\r\n    GetCustomerUDFValue(cstUDFs, UDF) {\r\n\r\n        let value = null;\r\n\r\n        if (cstUDFs.CustomerUDFs && cstUDFs.CustomerUDFs.filter(x => x.UDFCategoryName === UDF.UDFCategoryName && x.UDFName === UDF.UDFName && x.UDFType === UDF.UDFType).length > 0) {\r\n            value = cstUDFs.CustomerUDFs.filter(x => x.UDFCategoryName === UDF.UDFCategoryName && x.UDFName === UDF.UDFName && x.UDFType === UDF.UDFType)[0].UDFValue;\r\n        }\r\n\r\n        return value;\r\n    }\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n","export const BOOKINGTYPES_LOADING = 'REDUX_SAGA_BOOKINGTYPES_LOADING';\r\nexport const GET_BOOKINGTYPES_DATA_SUCCESS = 'REDUX_SAGA_GET_BOOKINGTYPES_DATA_SUCCESS';\r\nexport const GET_BOOKINGTYPES_DATA_ERROR = 'REDUX_SAGA_GET_BOOKINGTYPES_DATA_ERROR';\r\nexport const GET_BOOKINGTYPE_DATA = 'REDUX_SAGA_GET_BOOKINGTYPE_DATA';\r\nexport const RESET_BOOKINGTYPES_DATA = 'REDUX_SAGA_RESET_BOOKINGTYPES_DATA';\r\nexport const REMOVE_UNUSED_BOOKINGTYPES = 'REDUX_SAGA_REMOVE_UNUSED_BOOKINGTYPES';\r\n\r\nexport const actionGetBookingTypes = (dispatch, id, isDisplay) => {\r\n    dispatch({ type: BOOKINGTYPES_LOADING, id: id, isDisplay: isDisplay })\r\n};\r\n\r\nexport const actionResetBookingTypes = (dispatch) => {\r\n    dispatch({ type: RESET_BOOKINGTYPES_DATA })\r\n}\r\n\r\nexport const actionRemoveUnusedBookingTypes = (dispatch) => {\r\n    dispatch({ type: REMOVE_UNUSED_BOOKINGTYPES })\r\n}\r\n\r\n","export const loadState = (key, defaultValue) => {\n  try {\n    let path = process.env.PUBLIC_URL;\n    const serializedState = sessionStorage.getItem(path + key);\n    if (serializedState === null) {\n      return defaultValue;\n    }\n    return JSON.parse(serializedState);\n  } catch (error) {\n    return defaultValue;\n  }\n}\n\nexport const saveState = (key, obj) => {\n  try {\n    let path = process.env.PUBLIC_URL;\n    sessionStorage.setItem(path + key, JSON.stringify(obj))\n  } catch (error) {\n\n  }\n}\n","import { genfunction } from \"helpers\";\r\nimport {\r\n    BOOKINGTYPES_LOADING, GET_BOOKINGTYPE_DATA, GET_BOOKINGTYPES_DATA_SUCCESS,\r\n    GET_BOOKINGTYPES_DATA_ERROR, RESET_BOOKINGTYPES_DATA, REMOVE_UNUSED_BOOKINGTYPES\r\n} from \"../actions/actionBookingTypes\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"bookingTypes\";\r\n\r\nconst initialState = {\r\n    bookingID: 0,\r\n    bookingTypes: loadState(sessionKey, []),\r\n    bookingType: {},\r\n    loading: false,\r\n    bookingTypesError: ''\r\n};\r\n\r\nfunction reducerBookingTypes(state = initialState, action) {\r\n    switch (action.type) {\r\n        case BOOKINGTYPES_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                bookingTypes: loadState(sessionKey, []),\r\n                bookingType: {},\r\n                bookingTypesError: ''\r\n            };\r\n        }\r\n\r\n        case GET_BOOKINGTYPES_DATA_SUCCESS: {\r\n\r\n            let bookingTypes = [\r\n                ...state.bookingTypes\r\n            ]\r\n\r\n            if (bookingTypes.length > 0 && action.events && action.events.length > 0)\r\n                bookingTypes = genfunction.RemoveUnUsedBookingTypes(bookingTypes, action.events);\r\n\r\n            action.payload !== \"nocontent\" && action.payload.forEach(bookingType => {\r\n\r\n                if (bookingTypes.find(x => x.BookingTypeID === bookingType.BookingTypeID)) {\r\n                    bookingTypes = bookingTypes.filter(x => x.BookingTypeID !== bookingType.BookingTypeID);\r\n                }\r\n\r\n                bookingTypes.push(bookingType);\r\n            });\r\n\r\n\r\n            saveState(sessionKey, bookingTypes);\r\n\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingTypes: bookingTypes,\r\n                bookingType: bookingTypes && bookingTypes.length > 0 ? bookingTypes[0] : {},\r\n                bookingTypesError: ''\r\n            };\r\n        }\r\n\r\n        case REMOVE_UNUSED_BOOKINGTYPES: {\r\n            let bkngTypes = [\r\n                ...state.bookingTypes\r\n            ]\r\n\r\n            if (bkngTypes.length > 0 && action.events && action.events.length > 0) {\r\n                bkngTypes = genfunction.RemoveUnUsedBookingTypes(bkngTypes, action.events);\r\n                bkngTypes.push(bkngTypes);\r\n            }\r\n\r\n            saveState(sessionKey, bkngTypes);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingTypes: bkngTypes,\r\n                bookingType: bkngTypes && bkngTypes.length > 0 ? bkngTypes[0] : {},\r\n                bookingTypesError: ''\r\n            };\r\n        }\r\n\r\n        case GET_BOOKINGTYPE_DATA: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingType: action.payload,\r\n                bookingTypesError: ''\r\n            };\r\n        }\r\n        case RESET_BOOKINGTYPES_DATA: {\r\n\r\n            saveState(sessionKey, []);\r\n\r\n            return {\r\n                ...state,\r\n                bookingType: {},\r\n                loading: false,\r\n                bookingTypes: [],\r\n                bookingTypesError: ''\r\n            };\r\n        }\r\n        case GET_BOOKINGTYPES_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingTypes: action.payload,\r\n                bookingTypesError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerBookingTypes;","export const APPLOADER_START = 'REDUX_APPLOADER_START';\r\nexport const APPLOADER_END = 'REDUX_APPLOADER_END';\r\n\r\nexport const actionStartAppLoader = (dispatch) => {\r\n    dispatch({ type: APPLOADER_START });\r\n};\r\n\r\nexport const actionEndAppLoader = (dispatch) => {\r\n    dispatch({ type: APPLOADER_END });\r\n};","import { APPLOADER_START, APPLOADER_END } from \"../actions/actionAppLoader\";\r\nconst initialState = {\r\n    loading: false\r\n};\r\n\r\nfunction reducerAppLoader(state = initialState, action) {\r\n    switch (action.type) {\r\n        case APPLOADER_START: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n        case APPLOADER_END: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            };\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerAppLoader;\r\n","export const SHOPCART_ADD_EVENT = 'REDUX_SHOPCART_ADD_EVENT';\r\nexport const SHOPCART_ADD_EVENT_WITH_TOURHOLD = 'REDUX_SHOPCART_ADD_EVENT_WITH_TOURHOLD';\r\nexport const SHOPCART_REMOVE_EVENT = 'REDUX_SHOPCART_REMOVE_EVENT';\r\nexport const SHOPCART_ADD_TOUR_PRODUCT = 'REDUX_SHOPCART_ADD_TOUR_PRODUCT';\r\n\r\nexport const SHOPCART_REMOVE_TOUR_PRODUCT = 'REDUX_SHOPCART_REMOVE_TOUR_PRODUCT';\r\nexport const SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD = 'REDUX_SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD';\r\nexport const SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING = 'REDUX_SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING';\r\n\r\nexport const SHOPCART_RESET_STATE = 'REDUX_SHOPCART_RESET_STATE';\r\nexport const SHOPCART_RESET_STATE_WITH_TOURHOLD_LOADING = 'REDUX_SHOPCART_RESET_STATE_WITH_TOURHOLD_LOADING';\r\nexport const SHOPCART_REMOVE_SINGLE_TOUR_WITH_TOURHOLD_LOADING = 'REDUX_SHOPCART_REMOVE_SINGLE_TOUR_WITH_TOURHOLD_LOADING';\r\n\r\n\r\nexport const SHOPCART_SET_TOUR_PRODUCT_QUANTITY = 'REDUX_SHOPCART_SET_TOUR_PRODUCT_QUANTITY';\r\nexport const SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD = 'REDUX_SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD';\r\nexport const SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING = 'REDUX_SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING';\r\nexport const SHOPCART_ERROR = 'REDUX_SHOPCART_ERROR';\r\nexport const SHOPCART_RESET_ERROR = 'REDUX_SHOPCART_RESET_ERROR';\r\nexport const SHOPCART_APPLYCOUPON_TO_EVENTS = 'REDUX_SHOPCART_APPLYCOUPON_TO_EVENTS';\r\nexport const SHOPCART_APPLYCOUPON_TO_GATICKETS = 'REDUX_SHOPCART_APPLYCOUPON_TO_GATICKETS';\r\nexport const REMOVE_COUPON = 'REDUX_SAGA_REMOVE_COUPON';\r\n\r\n\r\nexport const SHOPCART_ADD_GIFTCARD = 'REDUX_SHOPCART_ADD_GIFTCARD';\r\nexport const SHOPCART_DELETE_GIFTCARD = 'REDUX_SHOPCART_DELETE_GIFTCARD';\r\nexport const SHOPCART_UPDATE_GIFTCARD = 'REDUX_SHOPCART_UPDATE_GIFTCARD';\r\nexport const SHOPCART_COUPONAPPLIED_RESET = 'REDUX_SHOPCART_COUPONAPPLIED_RESET';\r\nexport const SHOPCART_RESET_STATE_WITH_UNIQUECOUPONHOLD = 'REDUX_SHOPCART_RESET_STATE_WITH_UNIQUECOUPONHOLD';\r\nexport const SHOPCART_COUPONREMOVE_RESET = 'REDUX_SHOPCART_COUPONREMOVE_RESET';\r\n\r\n\r\nexport const SHOPCART_APPLY_MEMBERSHIP_COSTRATES_ON_EVENTS = 'REDUX_SHOPCART_APPLY_MEMBERSHIP_COSTRATES_ON_EVENTS';\r\n\r\n\r\nexport const SHOPCART_REMOVE_GATICKET_COUPONS = 'REDUX_SHOPCART_REMOVE_GATICKET_COUPONS';\r\nexport const SHOPCART_REMOVE_GIFTCARDS = 'REDUX_SHOPCART_REMOVE_GIFTCARDS';\r\nexport const SHOPCART_REMOVE_ALL_COUPONS = 'REDUX_SHOPCART_REMOVE_ALL_COUPONS';\r\nexport const SHOPCART_RESET_GIFTCARDS = 'REDUX_SHOPCART_RESET_GIFTCARDS';\r\nexport const SHOPCART_RESET_MEMBERSHIP = 'REDUX_SHOPCART_RESET_MEMBERSHIP';\r\nexport const SHOPCART_RESET_IDME = 'REDUX_SHOPCART_RESET_IDME';\r\nexport const SHOPCART_UPDATE_MEMBERSHIPEMAIL = 'REDUX_SHOPCART_UPDATE_MEMBERSHIPEMAIL';\r\n\r\nexport const SHOPCART_APPLY_DONATION = 'REDUX_SHOPCART_APPLY_DONATION';\r\nexport const SHOPCART_RESET_DONATION = 'REDUX_SHOPCART_RESET_DONATION';\r\nexport const UPDATE_DONATION_POPUP_INCREASE = 'REDUX_UPDATE_DONATION_POPUP_INCREASE';\r\nexport const RESET_DONATION_POPUP_INCREASE = 'REDUX_RESET_DONATION_POPUP_INCREASE';\r\n\r\nexport const SHOPCART_ADD_PERSON_MEMBERSHIPTYPE = 'REDUX_SHOPCART_ADD_PERSON_MEMBERSHIPTYPE';\r\nexport const SHOPCART_REMOVE_PERSON_MEMBERSHIPTYPE = 'REDUX_SHOPCART_REMOVE_PERSON_MEMBERSHIPTYPE';\r\nexport const SHOPCART_ADD_ADDON_MEMBERSHIP = 'REDUX_SHOPCART_ADD_ADDON_MEMBERSHIP';\r\nexport const SHOPCART_ADD_MEMBERSHIP_PACKAGE = 'REDUX_SHOPCART_ADD_MEMBERSHIP_PACKAGE';\r\nexport const SHOPCART_RESET_MEMBERSHIP_PACKAGE = 'REDUX_SHOPCART_RESET_MEMBERSHIP_PACKAGE';\r\nexport const SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE = 'REDUX_SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE';\r\nexport const SHOPCART_REMOVECOUPON_FROM_MEMBERSHIPTYPE = 'REDUX_SHOPCART_REMOVECOUPON_FROM_MEMBERSHIPTYPE';\r\n\r\nexport const SHOPCART_GATICKET_ADD = 'REDUX_SHOPCART_GATICKET_ADD';\r\nexport const SHOPCART_GATICKET_REMOVE = 'REDUX_SHOPCART_GATICKET_REMOVE';\r\nexport const SHOPCART_GATICKET_UPDATE_QUANTITY = 'REDUX_SHOPCART_GATICKET_UPDATE_QUANTITY';\r\nexport const SHOPCART_RESET_GATICKET = 'REDUX_SHOPCART_RESET_GATICKET';\r\n\r\nexport const SHOPCART_SET_MANAGEMYBOOKING = 'REDUX_SHOPCART_SET_MANAGEMYBOOKING';\r\nexport const SHOPCART_SET_REFUNDTYPE = 'REDUX_SHOPCART_SET_REFUNDTYPE';\r\nexport const SHOPCART_SET_ADDITIONALBOOKING_AMOUNT = 'REDUX_SHOPCART_SET_ADDITIONALBOOKING_AMOUNT';\r\nexport const SHOPCART_SET_MMB_AMOUNT_TO_PAY = 'REDUX_SHOPCART_SET_MMB_AMOUNT_TO_PAY';\r\nexport const SHOPCART_SET_ENTERED_AMOUNT_TO_PAY = 'REDUX_SHOPCART_SET_ENTERED_AMOUNT_TO_PAY';\r\nexport const SHOPCART_APPLY_MEMBER_COSTRATE = 'REDUX_SHOPCART_APPLY_MEMBER_COSTRATE';\r\n\r\nexport const SHOPCART_APPLY_IDME_COSTRATES_ON_EVENTS = 'REDUX_SHOPCART_APPLY_IDME_COSTRATES_ON_EVENTS';\r\n\r\nexport const SHOPCART_ADD_ORDER_PRODUCT = 'REDUX_SHOPCART_ADD_ORDER_PRODUCT';\r\nexport const SHOPCART_UPDATE_ORDER_PRODUCT = 'REDUX_SHOPCART_UPDATE_ORDER_PRODUCT';\r\nexport const SHOPCART_UPDATE_ORDER_PRODUCTS = 'REDUX_SHOPCART_UPDATE_ORDER_PRODUCTS';\r\nexport const SHOPCART_DELETE_ORDER_PRODUCT = 'REDUX_SHOPCART_DELETE_ORDER_PRODUCT';\r\nexport const SHOPCART_RESET_ORDER_PRODUCTS = 'REDUX_SHOPCART_RESET_ORDER_PRODUCTS';\r\n\r\nexport const SHOPCART_VERIFY_VALID_MEMBER = 'REDUX_SHOPCART_VERIFY_VALID_MEMBER';\r\nexport const SHOPCART_SHOW_TRANSACTION_FEE = 'REDUX_SHOPCART_SHOW_TRANSACTION_FEE';\r\n\r\nexport const SHOPCART_UPDATE_DONATION_PRODUCT = 'REDUX_SHOPCART_UPDATE_DONATION_PRODUCT';\r\nexport const SHOPCART_DELETE_DONATION_PRODUCT = 'REDUX_SHOPCART_DELETE_DONATION_PRODUCT';\r\nexport const SHOPCART_RESET_DONATION_PRODUCT = 'REDUX_SHOPCART_RESET_DONATION_PRODUCT';\r\n\r\nexport const SHOPCART_SET_MMB_HAS_PAID = 'REDUX_SHOPCART_SET_HAS_PAID';\r\n\r\nexport const actionShopCartAddEventWithTourHold = (dispatch, event, cartevent, organizationID, groupSize, paymentOption, amountSelected, isEditEvent) => {\r\n    dispatch({ type: SHOPCART_ADD_EVENT_WITH_TOURHOLD, payload: { event: event, cartevent: cartevent }, organizationID, groupSize, paymentOption, amountSelected, isEditEvent });\r\n};\r\n\r\nexport const actionShopCartAddEvent = (dispatch, event) => {\r\n    dispatch({ type: SHOPCART_ADD_EVENT, payload: event });\r\n};\r\n\r\nexport const actionShopCartRemoveEventAction = (dispatch, TourEventID) => {\r\n    dispatch({ type: SHOPCART_REMOVE_EVENT, payload: TourEventID });\r\n};\r\n\r\nexport const actionShopCartAddTour = (dispatch, TourEventID, tourprduct) => {\r\n    dispatch({ type: SHOPCART_ADD_TOUR_PRODUCT, payload: { TourEventID: TourEventID, tourprduct: tourprduct } });\r\n};\r\n\r\nexport const actionShopCartRemoveTour = (dispatch, TourEventID, TourProductID) => {\r\n    dispatch({ type: SHOPCART_REMOVE_TOUR_PRODUCT, payload: { TourEventID: TourEventID, TourProductID: TourProductID } });\r\n};\r\n\r\nexport const actionShopCartRemoveTourWithTourHold = (dispatch, CartEvent, TourEventID, TourProductID) => {\r\n    dispatch({ type: SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING, payload: { CartEvent: CartEvent, TourEventID: TourEventID, TourProductID: TourProductID } });\r\n};\r\n\r\nexport const actionShopCartResetState = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_STATE });\r\n};\r\n\r\nexport const actionShopCartResetStateWithTourHold = (dispatch, CartEvent) => {\r\n    dispatch({ type: SHOPCART_RESET_STATE_WITH_TOURHOLD_LOADING, payload: CartEvent });\r\n};\r\n\r\nexport const actionShopCartRemoveSingleTourWithTourHold = (dispatch, CartEvent, TourEventID) => {\r\n    dispatch({ type: SHOPCART_REMOVE_SINGLE_TOUR_WITH_TOURHOLD_LOADING, payload: { CartEvent: CartEvent, TourEventID: TourEventID } });\r\n};\r\n\r\nexport const actionShopCartAddProductQuanity = (dispatch, TourEventID, TourProductID, Quantity) => {\r\n    dispatch({ type: SHOPCART_SET_TOUR_PRODUCT_QUANTITY, payload: { TourEventID: TourEventID, TourProductID: TourProductID, Quantity: Quantity } });\r\n};\r\n\r\nexport const actionShopCartAddProductQuanityWithTourHold = (dispatch, CartEvent, TourEventID, TourProductID, Quantity) => {\r\n    dispatch({ type: SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING, payload: { CartEvent: CartEvent, TourEventID: TourEventID, TourProductID: TourProductID, Quantity: Quantity } });\r\n};\r\n\r\nexport const actionShopCartApplyCouponCodesToEvents = (dispatch, Coupon, tourProduct, CouponHoldRef) => {\r\n    dispatch({ type: SHOPCART_APPLYCOUPON_TO_EVENTS, payload: Coupon, tourProduct: tourProduct, CouponHoldRef });\r\n};\r\n\r\nexport const actionRemoveCoupon = (dispatch, TourEventID, TourProductID) => {\r\n    dispatch({ type: REMOVE_COUPON, payload: { TourEventID: TourEventID, TourProductID: TourProductID } });\r\n};\r\n\r\nexport const actionShopCardAddGiftCard = (dispatch, giftcard) => {\r\n    dispatch({ type: SHOPCART_ADD_GIFTCARD, payload: giftcard });\r\n};\r\n\r\nexport const actionShopCardDeleteGiftCard = (dispatch, GiftcardHoldRef) => {\r\n    dispatch({ type: SHOPCART_DELETE_GIFTCARD, payload: GiftcardHoldRef });\r\n};\r\n\r\nexport const actionShopCartUpdateGiftCard = (dispatch, cashless) => {\r\n    dispatch({ type: SHOPCART_UPDATE_GIFTCARD, payload: cashless });\r\n};\r\n\r\nexport const actionResetCouponAlreadyApplied = (dispatch) => {\r\n    dispatch({ type: SHOPCART_COUPONAPPLIED_RESET });\r\n}\r\n\r\nexport const actionShopCartResetStateWithUniqueCouponHold = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_STATE_WITH_UNIQUECOUPONHOLD });\r\n};\r\n\r\nexport const actionResetCouponRemoveReset = (dispatch) => {\r\n    dispatch({ type: SHOPCART_COUPONREMOVE_RESET });\r\n}\r\n\r\nexport const actionShopCartApplyMembershipOnEvents = (dispatch, costrate, extraitems, memberNo, memberEmail, memberLastName) => {\r\n    dispatch({ type: SHOPCART_APPLY_MEMBERSHIP_COSTRATES_ON_EVENTS, payload: { costrate: costrate, extraitems: extraitems, memberNo: memberNo, memberEmail: memberEmail, memberLastName: memberLastName } });\r\n};\r\n\r\nexport const actionShopCartValidMember = (dispatch, costrate, memberNo, memberEmail, memberLastName) => {\r\n    dispatch({ type: SHOPCART_VERIFY_VALID_MEMBER, payload: { costrate: costrate, memberNo: memberNo, memberEmail: memberEmail, memberLastName: memberLastName } });\r\n};\r\n\r\nexport const actionShopCartRemoveCoupons = (dispatch) => {\r\n    dispatch({ type: SHOPCART_REMOVE_ALL_COUPONS });\r\n};\r\n\r\nexport const actionShopCartRemoveGATicketCoupons = (dispatch, couponCode) => {\r\n    dispatch({ type: SHOPCART_REMOVE_GATICKET_COUPONS, payload: couponCode })\r\n}\r\n\r\nexport const actionShopCartRemoveGiftcards = (dispatch) => {\r\n    dispatch({ type: SHOPCART_REMOVE_GIFTCARDS });\r\n};\r\n\r\nexport const actionShopCartResetGiftcards = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_GIFTCARDS });\r\n};\r\n\r\nexport const actionShopCartResetMembership = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_MEMBERSHIP });\r\n};\r\n\r\nexport const actionShopCartResetIDME = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_IDME });\r\n};\r\n\r\nexport const actionShopCartUpdateMembershipEmail = (dispatch, newEmail) => {\r\n    dispatch({ type: SHOPCART_UPDATE_MEMBERSHIPEMAIL, payload: newEmail });\r\n};\r\n\r\nexport const actionShopCartApplyDonation = (dispatch, productID, productName, price, othersAmount, useAlternateMerchantOnline) => {\r\n    dispatch({ type: SHOPCART_APPLY_DONATION, payload: { productID: productID, productName: productName, price: price, othersAmount: othersAmount, useAlternateMerchantOnline: useAlternateMerchantOnline } });\r\n};\r\n\r\nexport const actionShopCartResetDonation = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_DONATION })\r\n};\r\n\r\nexport const actionShopCartUpdatePopupCounts = (dispatch) => {\r\n    dispatch({ type: UPDATE_DONATION_POPUP_INCREASE })\r\n}\r\n\r\nexport const actionShopCartResetDonations = (dispatch) => {\r\n    dispatch({ type: RESET_DONATION_POPUP_INCREASE })\r\n}\r\n\r\nexport const actionShopCartAddMembershipPackage = (dispatch, memberPackage, isRenew) => {\r\n    dispatch({ type: SHOPCART_ADD_MEMBERSHIP_PACKAGE, payload: memberPackage, isRenew: isRenew })\r\n}\r\n\r\nexport const actionShopCartResetMembershipPackage = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_MEMBERSHIP_PACKAGE })\r\n}\r\n\r\nexport const actionShopCartRemoveCouponFromMembershiptype = (dispatch, memberTypeID) => {\r\n    dispatch({ type: SHOPCART_REMOVECOUPON_FROM_MEMBERSHIPTYPE, payload: memberTypeID })\r\n}\r\n\r\nexport const actionShopCartAddGATicket = (dispatch, Products) => {\r\n    dispatch({ type: SHOPCART_GATICKET_ADD, payload: Products })\r\n}\r\n\r\nexport const actionShopCartRemoveGATicket = (dispatch, ProductID) => {\r\n    dispatch({ type: SHOPCART_GATICKET_REMOVE, payload: { ProductID } })\r\n}\r\n\r\nexport const actionShopCartGATicketUpdateQuanity = (dispatch, ProductID, Quantity) => {\r\n    dispatch({ type: SHOPCART_GATICKET_UPDATE_QUANTITY, payload: { ProductID, Quantity } })\r\n}\r\n\r\nexport const actionShopCartResetGATicket = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_GATICKET })\r\n}\r\n\r\nexport const actionShopCartSetManageMyBooking = (dispatch, managebooking, managebookingmodifytickets) => {\r\n    dispatch({ type: SHOPCART_SET_MANAGEMYBOOKING, payload: { managebooking: managebooking, managebookingmodifytickets: managebookingmodifytickets } })\r\n}\r\n\r\nexport const actionShopCartSetRefundType = (dispatch, refundType) => {\r\n    dispatch({ type: SHOPCART_SET_REFUNDTYPE, payload: { refundType: refundType } })\r\n}\r\n\r\nexport const actionShopCartSetAdditionalBookingAmount = (dispatch, amount) => {\r\n    dispatch({ type: SHOPCART_SET_ADDITIONALBOOKING_AMOUNT, payload: { amount: amount } })\r\n}\r\n\r\nexport const actionShopCartSetMmbAmountToPay = (dispatch, amounttopay) => {\r\n    dispatch({ type: SHOPCART_SET_MMB_AMOUNT_TO_PAY, payload: { amounttopay: amounttopay } })\r\n}\r\n\r\nexport const actionShopCartSetEnteredAmountToPay = (dispatch, amount) => {\r\n    dispatch({ type: SHOPCART_SET_ENTERED_AMOUNT_TO_PAY, payload: { enteredAmountToPay: amount } })\r\n}\r\n\r\nexport const actionShopCartApplyMemberCostrate = (dispatch, costrate, memberNo, memberEmail, memberLastName) => {\r\n    dispatch({ type: SHOPCART_APPLY_MEMBER_COSTRATE, payload: { costrate: costrate, memberNo: memberNo, memberEmail: memberEmail, memberLastName: memberLastName } });\r\n};\r\n\r\nexport const actionShopCartApplyidmeCostratesOnEvents = (dispatch, costrate, extraitems) => {\r\n    dispatch({ type: SHOPCART_APPLY_IDME_COSTRATES_ON_EVENTS, payload: { costrate: costrate, extraitems: extraitems } });\r\n};\r\n\r\nexport const actionShopCartResetError = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_ERROR })\r\n}\r\n\r\nexport const actionAddOrderProduct = (dispatch, foodProduct) => {\r\n    dispatch({ type: SHOPCART_ADD_ORDER_PRODUCT, payload: foodProduct })\r\n};\r\n\r\nexport const actionUpdateOrderProduct = (dispatch, foodProduct) => {\r\n    dispatch({ type: SHOPCART_UPDATE_ORDER_PRODUCT, payload: foodProduct })\r\n};\r\n\r\nexport const actionUpdateOrderProducts = (dispatch, foodProducts) => {\r\n    dispatch({ type: SHOPCART_UPDATE_ORDER_PRODUCTS, payload: foodProducts })\r\n};\r\n\r\nexport const actionDeleteOrderProduct = (dispatch, foodProduct) => {\r\n    dispatch({ type: SHOPCART_DELETE_ORDER_PRODUCT, payload: foodProduct })\r\n};\r\n\r\nexport const actionShopcartResetOrderProducts = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_ORDER_PRODUCTS })\r\n}\r\n\r\nexport const actionShopCartShowTransFee = (dispatch, check) => {\r\n    dispatch({ type: SHOPCART_SHOW_TRANSACTION_FEE, payload: check })\r\n};\r\n\r\nexport const actionShopCartUpdateDonationProduct = (dispatch, donationProducts) => {\r\n    dispatch({ type: SHOPCART_UPDATE_DONATION_PRODUCT, payload: donationProducts });\r\n}\r\n\r\nexport const actionShopCartDeleteDonationProduct = (dispatch, productID) => {\r\n    dispatch({ type: SHOPCART_DELETE_DONATION_PRODUCT, payload: productID });\r\n}\r\n\r\nexport const actionShopCartResetDonationProduct = (dispatch) => {\r\n    dispatch({ type: SHOPCART_RESET_DONATION_PRODUCT });\r\n}\r\n\r\nexport const actionShopCartSetMMBHasPaid = (dispatch, MMBHasPaid) => {\r\n    dispatch({ type: SHOPCART_SET_MMB_HAS_PAID, payload: { MMBHasPaid: MMBHasPaid } });\r\n}\r\n\r\n","import {\r\n    SHOPCART_ADD_EVENT, SHOPCART_ERROR, SHOPCART_RESET_ERROR, SHOPCART_REMOVE_EVENT, SHOPCART_ADD_TOUR_PRODUCT,\r\n    SHOPCART_REMOVE_TOUR_PRODUCT, SHOPCART_RESET_STATE, SHOPCART_SET_TOUR_PRODUCT_QUANTITY,\r\n    SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_APPLYCOUPON_TO_EVENTS, SHOPCART_APPLYCOUPON_TO_GATICKETS, REMOVE_COUPON,\r\n    SHOPCART_ADD_GIFTCARD, SHOPCART_DELETE_GIFTCARD,\r\n    SHOPCART_UPDATE_GIFTCARD, SHOPCART_COUPONAPPLIED_RESET, SHOPCART_COUPONREMOVE_RESET,\r\n    SHOPCART_APPLY_MEMBERSHIP_COSTRATES_ON_EVENTS, SHOPCART_REMOVE_ALL_COUPONS,\r\n    SHOPCART_RESET_GIFTCARDS, SHOPCART_RESET_MEMBERSHIP, SHOPCART_RESET_IDME\r\n    , SHOPCART_UPDATE_MEMBERSHIPEMAIL, SHOPCART_APPLY_DONATION, SHOPCART_RESET_DONATION,\r\n    UPDATE_DONATION_POPUP_INCREASE, RESET_DONATION_POPUP_INCREASE, SHOPCART_ADD_MEMBERSHIP_PACKAGE, SHOPCART_RESET_MEMBERSHIP_PACKAGE,\r\n    SHOPCART_GATICKET_ADD, SHOPCART_GATICKET_REMOVE, SHOPCART_GATICKET_UPDATE_QUANTITY, SHOPCART_RESET_GATICKET,\r\n    SHOPCART_REMOVE_GATICKET_COUPONS, SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE, SHOPCART_REMOVECOUPON_FROM_MEMBERSHIPTYPE, SHOPCART_SET_MANAGEMYBOOKING,\r\n    SHOPCART_SET_REFUNDTYPE, SHOPCART_SET_ADDITIONALBOOKING_AMOUNT, SHOPCART_SET_MMB_AMOUNT_TO_PAY, SHOPCART_SET_ENTERED_AMOUNT_TO_PAY, SHOPCART_APPLY_MEMBER_COSTRATE,\r\n    SHOPCART_APPLY_IDME_COSTRATES_ON_EVENTS, SHOPCART_ADD_ORDER_PRODUCT, SHOPCART_UPDATE_ORDER_PRODUCT, SHOPCART_DELETE_ORDER_PRODUCT,\r\n    SHOPCART_UPDATE_ORDER_PRODUCTS, SHOPCART_RESET_ORDER_PRODUCTS,\r\n    SHOPCART_VERIFY_VALID_MEMBER, SHOPCART_SHOW_TRANSACTION_FEE, SHOPCART_UPDATE_DONATION_PRODUCT,\r\n    SHOPCART_DELETE_DONATION_PRODUCT, SHOPCART_RESET_DONATION_PRODUCT, SHOPCART_SET_MMB_HAS_PAID\r\n\r\n} from \"../actions/actionShopCart\";\r\nimport { genfunction } from 'helpers';\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\nimport { CouponManager } from 'helpers';\r\nconst { DefaultCostRateID } = window['runConfig'];\r\n\r\nconst sessionKey = \"ShopCartEvents\";\r\nconst sessionKey2 = \"ShopCartCashless\";\r\nconst sessionKey3 = \"CouponCodes\";\r\nconst sessionKey4 = \"TourProducts\";\r\nconst sessionKey5 = \"UseMembershipValidation\";\r\nconst sessionKey6 = \"UseDonation\";\r\nconst sessionKey7 = \"MembershipPackages\";\r\nconst sessionKey8 = \"GATickets\";\r\nconst sessionKey9 = \"ManageMyBooking\";\r\nconst sessionKey10 = \"ManageBookingAppliedTicketsModification\";\r\nconst sessionKey11 = \"RefundType\";\r\nconst sessionKey12 = \"MMBAmountToPay\";\r\nconst sessionKey13 = \"IDMEApply\";\r\nconst sessionKey14 = \"ShopCartOrderProduct\";\r\nconst sessionKey15 = \"ShopCartShowTransFee\";\r\nconst sessionKey16 = \"DonationProducts\";\r\nconst sessionKey17 = \"EnteredAmountToPay\";\r\nconst sessionKey18 = \"MMBHasPaid\";\r\n\r\nconst initialState = {\r\n    events: loadState(sessionKey, []),\r\n    cashless: loadState(sessionKey2, []),\r\n    tourCoupons: loadState(sessionKey3, []),\r\n    tourProducts: loadState(sessionKey4, []),\r\n    loading: false,\r\n    couponAlreadyApplied: false,\r\n    removeCoupon: '',\r\n    membershipValidation: loadState(sessionKey5, {\r\n        ismembershipApplied: false,\r\n        membershipcostrate: DefaultCostRateID,\r\n        membershipMembrNo: 0,\r\n        memberEmail: \"\",\r\n        memberLastName: \"\",\r\n        applycostRates: false\r\n    }),\r\n    donation: loadState(sessionKey6, {\r\n        isdonationApplied: false,\r\n        productID: 0,\r\n        productName: '',\r\n        otherAmount: false,\r\n        price: 0,\r\n        popupCounts: 0,\r\n        UseAlternateMerchantOnline: false\r\n    }),\r\n    MembershipPackages: loadState(sessionKey7, []),\r\n    GATickets: loadState(sessionKey8, []),\r\n    membershipIsRenew: false,\r\n    managemybooking: loadState(sessionKey9, false),\r\n    managebookingticketsmodification: loadState(sessionKey10, false),\r\n    refundType: loadState(sessionKey11, ''),\r\n    additionalbookingamount: 0,\r\n    mmbAmountToPay: loadState(sessionKey12, 0),\r\n    IDME: loadState(sessionKey13, {\r\n        isIdMeApplied: false,\r\n        idmecostrate: DefaultCostRateID\r\n    }),\r\n    orderProducts: loadState(sessionKey14, []),\r\n    showTransactionFee: loadState(sessionKey15, false),\r\n    donationProducts: loadState(sessionKey16, []),\r\n    enteredAmountToPay: loadState(sessionKey17, 0),\r\n    MMBHasPaid: loadState(sessionKey18, false),\r\n    error: ''\r\n};\r\n\r\nfunction reducerShopCart(state = initialState, action) {\r\n    switch (action.type) {\r\n        case SHOPCART_ADD_EVENT: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n            if (genfunction.IsNotNullOrEmptyOrUndefined(action.paymentOption))\r\n                genfunction.CalculateEventFlexibleAmount(action.payload, action.paymentOption, action.amountSelected);\r\n\r\n            if (newevents.filter(x => x.TourEventID === action.payload.TourEventID).length > 0) {\r\n                let eventIndex = newevents.findIndex(x => x.TourEventID === action.payload.TourEventID);\r\n                newevents[eventIndex] = genfunction.UpdateEvent(newevents, action.payload, action.isEditEvent);\r\n            }\r\n            else {\r\n                newevents = [\r\n                    ...state.events,\r\n                    action.payload\r\n                ]\r\n            }\r\n\r\n            //Update Coupons\r\n            let trcoupons = [\r\n                ...state.tourCoupons\r\n            ]\r\n\r\n            let trProducts = [\r\n                ...state.tourProducts\r\n            ]\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n            CouponManager.ApplyCouponsToEvents(newevents, trcoupons, trProducts);\r\n\r\n            newevents.filter(e => e.TourEventID == action.payload.TourEventID).map(e => {\r\n                e.OrganizationID = genfunction.IsNotNullOrEmptyOrUndefined(action.organizationID) ? action.organizationID : \"\";\r\n                e.GroupSize = action.groupSize;\r\n            });\r\n\r\n            saveState(sessionKey, newevents);\r\n\r\n            return { ...state, events: newevents, loading: false };\r\n        }\r\n        case SHOPCART_REMOVE_EVENT: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n            newevents = newevents.filter((item) => {\r\n                return item.TourEventID !== action.payload;\r\n            });\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n\r\n            saveState(sessionKey, newevents);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                error: '',\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_ADD_TOUR_PRODUCT: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n            newevents = newevents.map(obj => {\r\n                if (obj.TourEventID === action.payload.TourEventID) {\r\n                    obj.TourProducts.push(action.payload.tourprduct);\r\n                }\r\n                return obj;\r\n            });\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n\r\n            saveState(sessionKey, newevents);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_REMOVE_TOUR_PRODUCT: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n            let noproducteventid = 0;\r\n            newevents = newevents.map(obj => {\r\n                if (obj.TourEventID === action.payload.TourEventID) {\r\n                    obj.TourProducts = obj.TourProducts.filter(tproduct => tproduct.TourProductID !== action.payload.TourProductID);\r\n                    if (obj.TourProducts.length === 0) {\r\n                        noproducteventid = obj.TourEventID;\r\n                    }\r\n                }\r\n                return obj;\r\n            });\r\n\r\n            if (noproducteventid > 0) {\r\n                newevents = newevents.filter(event => event.TourEventID !== noproducteventid)\r\n            }\r\n\r\n            //Update Coupons\r\n            let trcoupons = [\r\n                ...state.tourCoupons\r\n            ]\r\n\r\n            let trProducts = [\r\n                ...state.tourProducts\r\n            ]\r\n\r\n            newevents = CouponManager.RemoveProductItem(newevents, action.payload.TourEventID, action.payload.TourProductID);\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n\r\n            trcoupons = CouponManager.RemoveUnusedCoupon(trcoupons, newevents);\r\n            CouponManager.ApplyCouponsToEvents(newevents, trcoupons, trProducts);\r\n            saveState(sessionKey, newevents);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                tourCoupons: trcoupons,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_SET_TOUR_PRODUCT_QUANTITY: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n            newevents = newevents.map(obj => {\r\n                if (obj.TourEventID === action.payload.TourEventID) {\r\n                    obj.TourProducts.find(tproduct => tproduct.TourProductID == action.payload.TourProductID).Quantity = action.payload.Quantity;\r\n                }\r\n                return obj;\r\n            });\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n\r\n            //Update Coupons\r\n            let trcoupons = [\r\n                ...state.tourCoupons\r\n            ]\r\n\r\n            let trProducts = [\r\n                ...state.tourProducts\r\n            ]\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n            CouponManager.ApplyCouponsToEvents(newevents, trcoupons, trProducts);\r\n            saveState(sessionKey, newevents);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                loading: false,\r\n                error: ''\r\n            };\r\n        }\r\n        case SHOPCART_RESET_STATE: {\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: false,\r\n                membershipcostrate: DefaultCostRateID,\r\n                membershipMembrNo: 0,\r\n                memberEmail: \"\",\r\n                memberLastName: \"\",\r\n                applycostRates: false\r\n            };\r\n\r\n            var donationObj = {\r\n                isdonationApplied: false,\r\n                productID: 0,\r\n                productName: '',\r\n                otherAmount: false,\r\n                price: 0,\r\n                popupCounts: 0,\r\n                UseAlternateMerchantOnline: false\r\n            };\r\n\r\n            var idmeObj = {\r\n                isIdMeApplied: false,\r\n                idmecostrate: DefaultCostRateID\r\n            };\r\n\r\n            saveState(sessionKey, []);\r\n            saveState(sessionKey2, []);\r\n            saveState(sessionKey3, []);\r\n            saveState(sessionKey4, []);\r\n            saveState(sessionKey5, membershipObj);\r\n            saveState(sessionKey6, donationObj);\r\n            saveState(sessionKey7, []);\r\n            saveState(sessionKey8, []);\r\n            saveState(sessionKey9, false);\r\n            saveState(sessionKey10, false);\r\n            saveState(sessionKey11, '');\r\n            saveState(sessionKey12, 0);\r\n            saveState(sessionKey13, idmeObj);\r\n            saveState(sessionKey14, []);\r\n            saveState(sessionKey15, false);\r\n            saveState(sessionKey16, []);\r\n            saveState(sessionKey17, 0);\r\n            return {\r\n                ...state,\r\n                events: [],\r\n                tourCoupons: [],\r\n                tourProducts: [],\r\n                loading: false,\r\n                cashless: [],\r\n                couponAlreadyApplied: false,\r\n                removeCoupon: '',\r\n                membershipValidation: membershipObj,\r\n                donation: donationObj,\r\n                MembershipPackages: [],\r\n                GATickets: [],\r\n                membershipIsRenew: false,\r\n                managemybooking: false,\r\n                managebookingticketsmodification: false,\r\n                refundType: '',\r\n                additionalbookingamount: 0,\r\n                mmbAmountToPay: 0,\r\n                IDME: idmeObj,\r\n                orderProducts: [],\r\n                showTransactionFee: false,\r\n                donationProducts: [],\r\n                enteredAmountToPay: 0,\r\n                MMBHasPaid : false,\r\n                error: ''\r\n            };\r\n        }\r\n\r\n        case SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n        case SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case SHOPCART_APPLYCOUPON_TO_EVENTS: {\r\n\r\n            //Save Coupon\r\n            let trcoupons = [\r\n                ...state.tourCoupons\r\n            ]\r\n\r\n            if (trcoupons.length > 0 && trcoupons.filter(x => x.CouponID == action.tourCoupon[0].CouponID).length > 0) {\r\n                trcoupons = trcoupons.filter(x => x.CouponID != action.tourCoupon[0].CouponID);\r\n            }\r\n\r\n            action.tourCoupon[0].CouponHoldRef = action.CouponHoldRef;\r\n\r\n            if (action.tourCoupon[0].RequireUniqueCouponCode) {\r\n                action.tourCoupon[0].MaxProductsLimit = action.tourCoupon[0].MaxProductsPerPurchase;\r\n            }\r\n\r\n            trcoupons.push(action.tourCoupon[0]);\r\n\r\n            //Save Tour Product\r\n            let trProducts = [\r\n                ...state.tourProducts\r\n            ]\r\n\r\n            if (trProducts.filter(x => x.TourProductID == action.tourProduct[0].TourProductID).length > 0) {\r\n                trProducts = trProducts.filter(x => x.TourProductID != action.tourProduct[0].TourProductID);\r\n            }\r\n\r\n            trProducts.push(action.tourProduct[0]);\r\n            saveState(sessionKey4, trProducts);\r\n\r\n            //Apply Coupons and Update Events\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n            let couponAlreadyApply = false;\r\n            let isRemoveCoupon = false;\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n            couponAlreadyApply = CouponManager.ApplyCouponsToEvents(newevents, trcoupons, trProducts, couponAlreadyApply, action.couponCode);\r\n\r\n\r\n            saveState(sessionKey, newevents);\r\n            saveState(sessionKey3, trcoupons);\r\n\r\n            if (action.tourCoupon[0].RequireUniqueCouponCode) {\r\n                isRemoveCoupon = CouponManager.RemoveUniqueCouponNotApplied(newevents, action.CouponHoldRef);\r\n\r\n                if (isRemoveCoupon) {\r\n                    trcoupons = trcoupons.filter(x => x.RequireUniqueCouponCode && x.CouponID != action.tourCoupon[0].CouponID);\r\n                    saveState(sessionKey3, trcoupons);\r\n                }\r\n            }\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                tourCoupons: trcoupons,\r\n                tourProducts: trProducts,\r\n                loading: false,\r\n                couponAlreadyApplied: couponAlreadyApply,\r\n                removeCoupon: isRemoveCoupon ? action.CouponHoldRef : ''\r\n            };\r\n        }\r\n\r\n        case SHOPCART_APPLYCOUPON_TO_GATICKETS: {\r\n            let tickets = [\r\n                ...state.GATickets\r\n            ]\r\n\r\n            let newtickets = tickets.map(ticket => {\r\n                let couponproduct = action.payload.GATickets.find(x => x.ProductID === ticket.ProductID);\r\n                if (couponproduct && couponproduct.Price < couponproduct.OriginalPrice) {\r\n                    ticket.Price = couponproduct.Price;\r\n                    ticket.OriginalPrice = couponproduct.OriginalPrice\r\n                    ticket.CouponCodeApplied = action.payload.CouponCode;\r\n                }\r\n                return ticket;\r\n            })\r\n\r\n            newtickets = genfunction.calculategaticketamount(newtickets);\r\n\r\n            saveState(sessionKey8, newtickets);\r\n            return {\r\n                ...state,\r\n                GATickets: newtickets\r\n            };\r\n        }\r\n\r\n        case REMOVE_COUPON: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n            let newcouponTours = [\r\n                ...state.tourCoupons\r\n            ]\r\n\r\n            //Update Coupon MaxProductLimit Quantity, if Coupon is Unique.\r\n            newcouponTours = CouponManager.UpdateMaxProductLimit(newcouponTours, newevents, action.payload.TourEventID, action.payload.TourProductID);\r\n\r\n            newevents = CouponManager.RemoveProductItem(newevents, action.payload.TourEventID, action.payload.TourProductID)\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n            saveState(sessionKey, newevents);\r\n\r\n            //Remove Coupon, if not in used.\r\n            newcouponTours = CouponManager.RemoveUnusedCoupon(newcouponTours, newevents);\r\n\r\n            saveState(sessionKey3, newcouponTours);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                tourCoupons: newcouponTours,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_ADD_GIFTCARD: {\r\n            let newcashless = [\r\n                ...state.cashless,\r\n                action.payload\r\n            ]\r\n\r\n            saveState(sessionKey2, newcashless);\r\n\r\n            return { ...state, cashless: newcashless, loading: false };\r\n        }\r\n        case SHOPCART_UPDATE_GIFTCARD: {\r\n            saveState(sessionKey2, action.payload);\r\n            return { ...state, cashless: action.payload, loading: false };\r\n        }\r\n        case SHOPCART_DELETE_GIFTCARD: {\r\n\r\n            let newcashless = [\r\n                ...state.cashless\r\n            ]\r\n            newcashless = newcashless.filter((item) => {\r\n                return item.GiftcardHoldRef !== action.payload;\r\n            });\r\n\r\n            saveState(sessionKey2, newcashless);\r\n\r\n            return {\r\n                ...state,\r\n                cashless: newcashless,\r\n                loading: false\r\n            };\r\n        }\r\n\r\n        case SHOPCART_COUPONAPPLIED_RESET: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                couponAlreadyApplied: false\r\n            };\r\n        }\r\n        case SHOPCART_COUPONREMOVE_RESET: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                removeCoupon: ''\r\n            };\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n\r\n        case SHOPCART_APPLY_MEMBERSHIP_COSTRATES_ON_EVENTS: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n\r\n            newevents = genfunction.ApplyMembershipPricesOnEvents(newevents, action.payload.costrate, action.payload.extraitems, DefaultCostRateID);\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: true,\r\n                membershipcostrate: action.payload.costrate,\r\n                membershipMembrNo: action.payload.memberNo,\r\n                memberEmail: action.payload.memberEmail,\r\n                memberLastName: action.payload.memberLastName,\r\n                applycostRates: true\r\n            }\r\n\r\n            var idmeObj = {\r\n                isIdMeApplied: false,\r\n                idmecostrate: DefaultCostRateID\r\n            }\r\n\r\n            saveState(sessionKey, newevents);\r\n            saveState(sessionKey5, membershipObj)\r\n            saveState(sessionKey13, idmeObj)\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                membershipValidation: membershipObj,\r\n                IDME: idmeObj\r\n            };\r\n\r\n        }\r\n\r\n        case SHOPCART_VERIFY_VALID_MEMBER: {\r\n\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: true,\r\n                membershipcostrate: action.payload.costrate,\r\n                membershipMembrNo: action.payload.memberNo,\r\n                memberEmail: action.payload.memberEmail,\r\n                memberLastName: action.payload.memberLastName,\r\n                applycostRates: false\r\n            }\r\n\r\n            saveState(sessionKey5, membershipObj)\r\n\r\n            return {\r\n                ...state,\r\n                membershipValidation: membershipObj,\r\n            };\r\n        }\r\n\r\n\r\n        case SHOPCART_REMOVE_ALL_COUPONS: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n            newevents = newevents.map(obj => {\r\n\r\n                //obj.coupon\r\n                obj.CouponItems = [];\r\n\r\n                return obj;\r\n            });\r\n\r\n            newevents = genfunction.calculateeventsamount(newevents);\r\n\r\n\r\n            saveState(sessionKey, newevents);\r\n            saveState(sessionKey3, []);\r\n            saveState(sessionKey4, []);\r\n\r\n            return {\r\n                ...state,\r\n                tourCoupons: [],\r\n                tourProducts: [],\r\n                loading: false,\r\n                couponAlreadyApplied: false,\r\n                removeCoupon: ''\r\n            };\r\n        }\r\n        case SHOPCART_RESET_GIFTCARDS: {\r\n            saveState(sessionKey2, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                cashless: []\r\n            };\r\n        }\r\n\r\n        case SHOPCART_RESET_MEMBERSHIP: {\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: false,\r\n                membershipcostrate: DefaultCostRateID,\r\n                membershipMembrNo: 0,\r\n                memberEmail: \"\",\r\n                memberLastName: \"\",\r\n                applycostRates: false\r\n            }\r\n\r\n            saveState(sessionKey5, membershipObj)\r\n\r\n            return {\r\n                ...state,\r\n                membershipValidation: membershipObj\r\n            };\r\n\r\n        }\r\n        case SHOPCART_RESET_IDME: {\r\n\r\n            var idmeObj = {\r\n                isIdMeApplied: false,\r\n                idmecostrate: DefaultCostRateID\r\n            }\r\n            saveState(sessionKey13, idmeObj)\r\n\r\n            return {\r\n                ...state,\r\n                IDME: idmeObj\r\n            };\r\n\r\n        }\r\n        case SHOPCART_UPDATE_MEMBERSHIPEMAIL: {\r\n\r\n            var membershipObj = {\r\n                ...state.membershipValidation\r\n            }\r\n\r\n            membershipObj.memberEmail = action.payload;\r\n\r\n            saveState(sessionKey5, membershipObj)\r\n\r\n            return {\r\n                ...state,\r\n                membershipValidation: membershipObj\r\n            };\r\n\r\n        }\r\n\r\n        case SHOPCART_APPLY_DONATION: {\r\n\r\n            var donationObj = {\r\n                ...state.donation\r\n            }\r\n\r\n            donationObj.isdonationApplied = true;\r\n            donationObj.productID = action.payload.productID;\r\n            donationObj.productName = action.payload.productName;\r\n            donationObj.price = action.payload.price;\r\n            donationObj.otherAmount = action.payload.othersAmount;\r\n            donationObj.UseAlternateMerchantOnline = action.payload.useAlternateMerchantOnline;\r\n\r\n            saveState(sessionKey6, donationObj);\r\n\r\n            return {\r\n                ...state,\r\n                donation: donationObj\r\n            }\r\n        }\r\n\r\n        case SHOPCART_RESET_DONATION: {\r\n            var donationObj = {\r\n                ...state.donation\r\n            }\r\n\r\n            donationObj.isdonationApplied = false;\r\n            donationObj.productID = 0;\r\n            donationObj.productName = '';\r\n            donationObj.price = 0;\r\n            donationObj.otherAmount = false;\r\n            donationObj.UseAlternateMerchantOnline = false;\r\n\r\n\r\n            saveState(sessionKey6, donationObj);\r\n\r\n            return {\r\n                ...state,\r\n                donation: donationObj\r\n            }\r\n        }\r\n\r\n        case UPDATE_DONATION_POPUP_INCREASE: {\r\n\r\n            var donationObj = {\r\n                ...state.donation\r\n            }\r\n\r\n            donationObj.popupCounts = 1;\r\n            saveState(sessionKey6, donationObj);\r\n\r\n            return {\r\n                ...state,\r\n                donation: donationObj\r\n            }\r\n        }\r\n\r\n        case RESET_DONATION_POPUP_INCREASE: {\r\n\r\n            var donationObj = {\r\n                isdonationApplied: false,\r\n                productID: 0,\r\n                productName: '',\r\n                otherAmount: false,\r\n                price: 0,\r\n                popupCounts: 0,\r\n                UseAlternateMerchantOnline: false\r\n            };\r\n\r\n            saveState(sessionKey6, donationObj);\r\n\r\n            return {\r\n                ...state,\r\n                donation: donationObj\r\n            }\r\n        }\r\n\r\n        case SHOPCART_ADD_MEMBERSHIP_PACKAGE: {\r\n\r\n            var membershipPackagesObj = [...state.MembershipPackages];\r\n\r\n            membershipPackagesObj = membershipPackagesObj.filter(function (el) {\r\n                return el != null;\r\n            });\r\n\r\n            if (membershipPackagesObj && membershipPackagesObj.filter(x => x.MembershipPackageID === action.payload.MembershipPackageID).length > 0) {\r\n                let memberPackIndex = membershipPackagesObj.findIndex(x => x.MembershipPackageID === action.payload.MembershipPackageID);\r\n                membershipPackagesObj[memberPackIndex] = action.payload;\r\n            }\r\n            else {\r\n                membershipPackagesObj.push(action.payload);\r\n            }\r\n\r\n\r\n            membershipPackagesObj = genfunction.CalculateMembershipPackages(membershipPackagesObj);\r\n\r\n            saveState(sessionKey7, membershipPackagesObj);\r\n\r\n            return {\r\n                ...state, MembershipPackages: membershipPackagesObj,\r\n                membershipIsRenew: action.isRenew\r\n            }\r\n        }\r\n\r\n        case SHOPCART_RESET_MEMBERSHIP_PACKAGE: {\r\n            saveState(sessionKey7, []);\r\n\r\n            return {\r\n                ...state,\r\n                MembershipPackages: []\r\n            };\r\n        }\r\n\r\n        case SHOPCART_GATICKET_ADD: {\r\n            let gatickets = [\r\n                ...state.GATickets\r\n            ]\r\n            action.payload.forEach(ticket => {\r\n\r\n                let existticket = gatickets.find(x => x.ProductID === ticket.ProductID)\r\n                if (existticket) {\r\n                    existticket.Quantity += ticket.Quantity;\r\n                }\r\n                else {\r\n                    gatickets.push(ticket);\r\n                }\r\n            });\r\n\r\n            gatickets = genfunction.calculategaticketamount(gatickets);\r\n            saveState(sessionKey8, gatickets);\r\n            return {\r\n                ...state,\r\n                GATickets: gatickets\r\n            };\r\n        }\r\n\r\n        case SHOPCART_GATICKET_REMOVE: {\r\n            let gatickets = [\r\n                ...state.GATickets\r\n            ]\r\n            gatickets = gatickets.filter(x => (x.ProductID === action.payload.ProductID) ? false : true);\r\n\r\n            gatickets = genfunction.calculategaticketamount(gatickets);\r\n            saveState(sessionKey8, gatickets);\r\n            return {\r\n                ...state,\r\n                GATickets: gatickets\r\n            };\r\n        }\r\n\r\n        case SHOPCART_GATICKET_UPDATE_QUANTITY: {\r\n            let gatickets = [\r\n                ...state.GATickets\r\n            ]\r\n            let existticket = gatickets.find(x => x.ProductID === action.payload.ProductID)\r\n            if (existticket && existticket.Quantity > 0) {\r\n                existticket.Quantity = action.payload.Quantity;\r\n            }\r\n            else {\r\n                gatickets = gatickets.filter(x => x.ProductID !== action.payload.ProductID);\r\n            }\r\n\r\n            gatickets = genfunction.calculategaticketamount(gatickets);\r\n            saveState(sessionKey8, gatickets);\r\n            return {\r\n                ...state,\r\n                GATickets: gatickets\r\n            };\r\n        }\r\n\r\n        case SHOPCART_RESET_GATICKET: {\r\n            saveState(sessionKey8, []);\r\n\r\n            return {\r\n                ...state,\r\n                GATickets: []\r\n            };\r\n        }\r\n\r\n        case SHOPCART_RESET_ORDER_PRODUCTS: {\r\n            saveState(sessionKey14, []);\r\n\r\n            return {\r\n                ...state,\r\n                orderProducts: []\r\n            };\r\n        }\r\n\r\n        case SHOPCART_REMOVE_GATICKET_COUPONS: {\r\n\r\n            let gatickets = [\r\n                ...state.GATickets\r\n            ]\r\n\r\n            let newtickets = gatickets.map(ticket => {\r\n                if (ticket.CouponCodeApplied && ticket.CouponCodeApplied == action.payload) {\r\n                    ticket.CouponCodeApplied = null;\r\n                    ticket.Price = ticket.OriginalPrice;\r\n                }\r\n                return ticket;\r\n            })\r\n            gatickets = genfunction.calculategaticketamount(newtickets);\r\n            saveState(sessionKey8, newtickets);\r\n            return {\r\n                ...state,\r\n                GATickets: newtickets\r\n            };\r\n        }\r\n\r\n        case SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE: {\r\n            let membershipPackagesObj = [...state.MembershipPackages];\r\n\r\n            membershipPackagesObj[0].MembershipProducts = genfunction.ApplyMembershipCoupon(membershipPackagesObj[0].MembershipProducts, action.payload.MembershipPackages, action.payload.CouponCode);\r\n\r\n            saveState(sessionKey7, membershipPackagesObj);\r\n\r\n            return {\r\n                ...state, MembershipPackages: membershipPackagesObj\r\n            }\r\n        }\r\n\r\n        case SHOPCART_REMOVECOUPON_FROM_MEMBERSHIPTYPE: {\r\n            let membershipPackagesObj = [...state.MembershipPackages];\r\n\r\n            membershipPackagesObj[0].MembershipProducts = membershipPackagesObj[0].MembershipProducts.map(m => {\r\n                if (m.MembershipTypeID == action.payload) {\r\n                    m.CouponCodeApplied = '';\r\n                    m.CouponCodeExTax = 0;\r\n                    m.CouponCodeTax = 0;\r\n                    m.CouponCodeIncTax = 0;\r\n                    m.ExtraDays = '';\r\n                    m.ExtraMonths = '';\r\n                    m.PriceAfterCoupon = 0;\r\n                    m.TaxAfterCoupon = 0;\r\n                    m.TotalAmountAfterCoupon = 0;\r\n                    m.NoFinancialDis = false;\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            saveState(sessionKey7, membershipPackagesObj);\r\n\r\n            return {\r\n                ...state, MembershipPackages: membershipPackagesObj\r\n            }\r\n        }\r\n\r\n        case SHOPCART_SET_MANAGEMYBOOKING: {\r\n            let managemybooking = { ...state.managemybooking };\r\n            let managebkngticketsmodification = { ...state.managebookingticketsmodification };\r\n\r\n            managemybooking = action.payload.managebooking;\r\n            managebkngticketsmodification = action.payload.managebookingmodifytickets;\r\n\r\n            saveState(sessionKey9, managemybooking);\r\n            saveState(sessionKey10, managebkngticketsmodification);\r\n\r\n            return {\r\n                ...state, managemybooking: managemybooking, managebookingticketsmodification: managebkngticketsmodification\r\n            }\r\n        }\r\n\r\n        case SHOPCART_SET_REFUNDTYPE: {\r\n            let refundTyp = { ...state.refundType };\r\n\r\n            refundTyp = action.payload.refundType;\r\n            saveState(sessionKey11, refundTyp);\r\n\r\n            return {\r\n                ...state, refundType: refundTyp\r\n            }\r\n        }\r\n\r\n        case SHOPCART_SET_ADDITIONALBOOKING_AMOUNT: {\r\n            let additionalbookingamt = { ...state.additionalbookingamount };\r\n            additionalbookingamt = action.payload.amount;\r\n\r\n            return {\r\n                ...state, additionalbookingamount: additionalbookingamt\r\n            }\r\n        }\r\n\r\n        case SHOPCART_SET_MMB_AMOUNT_TO_PAY: {\r\n            let mmbAmountToPay = { ...state.mmbAmountToPay };\r\n            mmbAmountToPay = action.payload.amounttopay;\r\n\r\n            saveState(sessionKey12, mmbAmountToPay);\r\n\r\n            return {\r\n                ...state, mmbAmountToPay: mmbAmountToPay\r\n            }\r\n\r\n        }\r\n\r\n        case SHOPCART_SET_ENTERED_AMOUNT_TO_PAY: {\r\n            let enteredAmountToPay = { ...state.enteredAmountToPay };\r\n            enteredAmountToPay = action.payload.enteredAmountToPay;\r\n\r\n            saveState(sessionKey17, enteredAmountToPay);\r\n\r\n            return {\r\n                ...state, enteredAmountToPay: enteredAmountToPay\r\n            }\r\n        }\r\n\r\n        case SHOPCART_APPLY_MEMBER_COSTRATE: {\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: true,\r\n                membershipcostrate: action.payload.costrate,\r\n                membershipMembrNo: action.payload.memberNo,\r\n                memberEmail: action.payload.memberEmail,\r\n                memberLastName: action.payload.memberLastName,\r\n                applycostRates: true\r\n            }\r\n\r\n            saveState(sessionKey5, membershipObj)\r\n\r\n            return {\r\n                ...state,\r\n                membershipValidation: membershipObj\r\n            };\r\n        }\r\n\r\n        case SHOPCART_APPLY_IDME_COSTRATES_ON_EVENTS: {\r\n\r\n            let newevents = [\r\n                ...state.events\r\n            ]\r\n\r\n            var idmeObj = {\r\n                isIdMeApplied: true,\r\n                idmecostrate: action.payload.costrate\r\n            }\r\n\r\n            var membershipObj = {\r\n                ismembershipApplied: false,\r\n                membershipcostrate: DefaultCostRateID,\r\n                membershipMembrNo: 0,\r\n                memberEmail: \"\",\r\n                memberLastName: \"\",\r\n                applycostRates: false\r\n            }\r\n\r\n            newevents = genfunction.ApplyMembershipPricesOnEvents(newevents, action.payload.costrate, action.payload.extraitems, DefaultCostRateID);\r\n\r\n            saveState(sessionKey, newevents);\r\n            saveState(sessionKey5, membershipObj);\r\n            saveState(sessionKey13, idmeObj);\r\n\r\n            return {\r\n                ...state,\r\n                events: newevents,\r\n                IDME: idmeObj,\r\n                membershipValidation: membershipObj\r\n            };\r\n\r\n        }\r\n        case SHOPCART_ADD_ORDER_PRODUCT: {\r\n            let newOrderProduct = [\r\n                ...state.orderProducts,\r\n                action.payload\r\n            ]\r\n\r\n            saveState(sessionKey14, newOrderProduct);\r\n\r\n            return {\r\n                ...state,\r\n                orderProducts: newOrderProduct,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_UPDATE_ORDER_PRODUCT: {\r\n            let newOrderProduct = [\r\n                ...state.orderProducts,\r\n            ]\r\n\r\n            let fp = newOrderProduct.find(x => x.UniqueID === action.payload.UniqueID);\r\n            fp = action.payload;\r\n\r\n            saveState(sessionKey14, newOrderProduct);\r\n\r\n            return {\r\n                ...state,\r\n                orderProducts: newOrderProduct,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_UPDATE_ORDER_PRODUCTS: {\r\n            let newOrderProduct = [\r\n                ...action.payload\r\n            ]\r\n\r\n            saveState(sessionKey14, newOrderProduct);\r\n\r\n            return {\r\n                ...state,\r\n                orderProducts: newOrderProduct,\r\n                loading: false\r\n            };\r\n        }\r\n        case SHOPCART_DELETE_ORDER_PRODUCT: {\r\n            let newOrderProduct = [\r\n                ...state.orderProducts,\r\n            ]\r\n\r\n            newOrderProduct = newOrderProduct.filter(x => x.UniqueID !== action.payload.UniqueID);\r\n\r\n            saveState(sessionKey14, newOrderProduct);\r\n\r\n            return {\r\n                ...state,\r\n                orderProducts: newOrderProduct,\r\n                loading: false\r\n            };\r\n        }\r\n\r\n        case SHOPCART_SHOW_TRANSACTION_FEE: {\r\n            let showTransFee = { ...state.showTransactionFee };\r\n            showTransFee = action.payload;\r\n            saveState(sessionKey15, showTransFee);\r\n\r\n            return {\r\n                ...state,\r\n                showTransactionFee: showTransFee,\r\n                loading: false\r\n            };\r\n        }\r\n\r\n        case SHOPCART_UPDATE_DONATION_PRODUCT: {\r\n            let donationProducts = [...state.donationProducts];\r\n            let newdonationProducts = action.payload;\r\n\r\n            newdonationProducts.forEach(newdonationproduct => {\r\n                donationProducts = donationProducts.filter(x => x.ProductID != newdonationproduct.ProductID);\r\n                donationProducts.push(newdonationproduct);\r\n            });\r\n\r\n            saveState(sessionKey16, donationProducts);\r\n            return {\r\n                ...state,\r\n                donationProducts: donationProducts,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case SHOPCART_DELETE_DONATION_PRODUCT: {\r\n            let donationProducts = [...state.donationProducts];\r\n            let productID = action.payload;\r\n            donationProducts = donationProducts.filter(x => x.ProductID != productID);\r\n            saveState(sessionKey16, donationProducts);\r\n            return {\r\n                ...state,\r\n                donationProducts: donationProducts,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case SHOPCART_RESET_DONATION_PRODUCT: {\r\n            saveState(sessionKey16, []);\r\n\r\n            return {\r\n                ...state,\r\n                donationProducts: []\r\n            };\r\n        }\r\n\r\n        case SHOPCART_SET_MMB_HAS_PAID: {\r\n            let MMBHasPaid = { ...state.MMBHasPaid };\r\n            MMBHasPaid = action.payload.MMBHasPaid;\r\n\r\n            saveState(sessionKey18, MMBHasPaid);\r\n\r\n            return {\r\n                ...state, MMBHasPaid: MMBHasPaid\r\n            }\r\n        }\r\n\r\n        case SHOPCART_ERROR: {\r\n\r\n            return {\r\n                ...state,\r\n                error: action.error\r\n            }\r\n        }\r\n\r\n        case SHOPCART_RESET_ERROR: {\r\n            return {\r\n                ...state,\r\n                error: ''\r\n            }\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerShopCart;\r\n","export const EXTRAITEMS_LOADING = 'REDUX_SAGA_EXTRAITEMS_LOADING';\r\nexport const GET_EXTRAITEMS_DATA_SUCCESS = 'REDUX_SAGA_GET_EXTRAITEMS_DATA_SUCCESS';\r\nexport const GET_EXTRAITEMS_DATA_ERROR = 'REDUX_SAGA_GET_EXTRAITEMS_DATA_ERROR';\r\nexport const GET_EXTRAITEM_OBJECT = \"REDUX_SAGA_GET_EXTRAITEM_OBJECT\";\r\nexport const GET_EXTRAITEM_OBJECT_AFTER_MEMBERSHIP = \"REDUX_SAGA_GET_EXTRAITEM_OBJECT_AFTER_MEMBERSHIP\";\r\nexport const UPDATE_PRODUCT_QUANTITY = \"REDUX_SAGA_UPDATE_PRODUCT_QUANTITY\";\r\nexport const RESET_EXTRAITEMS = \"REDUX_SAGA_RESET_EXTRAITEMS\";\r\nexport const RESET_ERROR_MSG = \"REDUX_SAGA_RESET_ERROR_MSG\";\r\nexport const SET_ADDTOCART = \"REDUX_SAGA_SET_ADDTOCART\"\r\n\r\nexport const actionGetExtraItems = (dispatch, ID, checkBookingTypeObj, isDisplayArea, nextTourDate,\r\n    isListView, currentView, tourEventsList) => {\r\n    dispatch({\r\n        type: EXTRAITEMS_LOADING,\r\n        payload: ID,\r\n        checkBookingTypeObj: checkBookingTypeObj,\r\n        isDisplayArea: isDisplayArea,\r\n        nextTourDate: nextTourDate,\r\n        isListView: isListView,\r\n        currentView: currentView,\r\n        tourEventsList: tourEventsList\r\n    })\r\n};\r\n\r\nexport const actionGetExtraItem = (dispatch, TourEventID, IsMembershipApplied, MemberCostRate, IsIDME, IsIDMECostRate, OrganizationCostRate) => {\r\n    dispatch({\r\n        type: GET_EXTRAITEM_OBJECT, payload: TourEventID, IsMembershipApplied: IsMembershipApplied, MemberCostRate: MemberCostRate, IsIDME: IsIDME, IsIDMECostRate: IsIDMECostRate\r\n        , OrganizationCostRate: OrganizationCostRate\r\n    })\r\n};\r\n\r\nexport const actionGetExtraItemAfterMembership = (dispatch, TourData, TourEventID, IsMembershipApplied, MemberCostRate, IsIDME, IsIDMECostRate, OrganizationCostRate) => {\r\n    dispatch({\r\n        type: GET_EXTRAITEM_OBJECT_AFTER_MEMBERSHIP, payload: TourData, TourEventID: TourEventID, IsMembershipApplied: IsMembershipApplied, MemberCostRate: MemberCostRate,\r\n        IsIDME: IsIDME, IsIDMECostRate: IsIDMECostRate, OrganizationCostRate: OrganizationCostRate\r\n\r\n    })\r\n};\r\n\r\nexport const actionIncreaseQuantity = (dispatch, productID, Quantity, ItemExist, MinimumTickets, MaximumTickets) => {\r\n    dispatch({ type: UPDATE_PRODUCT_QUANTITY, payload: productID, Quantity: Quantity, ItemExist: ItemExist, MinimumTickets: MinimumTickets, MaximumTickets: MaximumTickets })\r\n};\r\n\r\nexport const actionResetExtraItems = (dispatch) => {\r\n    dispatch({ type: RESET_EXTRAITEMS })\r\n};\r\n\r\nexport const actionResetErrorMessage = (dispatch) => {\r\n    dispatch({ type: RESET_ERROR_MSG })\r\n};\r\n\r\nexport const actionSetAddToCart = (dispatch) => {\r\n    dispatch({ type: SET_ADDTOCART })\r\n}","import {\r\n    EXTRAITEMS_LOADING, GET_EXTRAITEMS_DATA_SUCCESS, GET_EXTRAITEMS_DATA_ERROR,\r\n    GET_EXTRAITEM_OBJECT, GET_EXTRAITEM_OBJECT_AFTER_MEMBERSHIP, UPDATE_PRODUCT_QUANTITY, RESET_EXTRAITEMS, RESET_ERROR_MSG, SET_ADDTOCART\r\n} from \"../actions/actionExtraItems\";\r\nimport { genfunction } from 'helpers';\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst { DefaultCostRateID } = window['runConfig'];\r\n\r\nconst sessionKey = \"ExtraItem\";\r\n\r\n\r\nconst initialState = {\r\n    extramItems: [],\r\n    extraItem: loadState(sessionKey, {}), //{},\r\n    loading: false,\r\n    extramItemsError: '',\r\n    isAddToCart: false\r\n};\r\n\r\nfunction reducerExtraItems(state = initialState, action) {\r\n    switch (action.type) {\r\n        case EXTRAITEMS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                extramItemsError: '',\r\n                isAddToCart: false\r\n            };\r\n        }\r\n\r\n        case GET_EXTRAITEMS_DATA_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extramItems: action.payload,\r\n                extramItemsError: '',\r\n                isAddToCart: false\r\n            };\r\n        }\r\n        case GET_EXTRAITEM_OBJECT: {\r\n\r\n            let newextraItems = JSON.parse(JSON.stringify(state.extramItems));\r\n            let extraItm = JSON.parse(JSON.stringify(state.extraItem));\r\n\r\n            let extraItem = {};\r\n\r\n            if (newextraItems && newextraItems.length > 0) {\r\n                extraItem = { ...newextraItems.filter(x => x.TourEventID == action.payload)[0] };\r\n            }\r\n            else if (extraItm && extraItm.hasOwnProperty('TourEventID')) {\r\n                extraItem = extraItm;\r\n            }\r\n\r\n            extraItem.CouponItems = [];\r\n            let costrate = 0;\r\n\r\n            if (genfunction.IsNotNullOrEmptyOrUndefined(action.OrganizationCostRate)) {\r\n                costrate = action.OrganizationCostRate;\r\n            }\r\n            else if (action.IsMembershipApplied) {\r\n                costrate = action.MemberCostRate;\r\n            }\r\n            else if (action.IsIDME) {\r\n                costrate = action.IsIDMECostRate;\r\n            }\r\n            else {\r\n                costrate = DefaultCostRateID;\r\n            }\r\n\r\n\r\n            if (extraItem.TourProducts && extraItem.TourProducts.length > 0) {\r\n                extraItem.TourProducts = extraItem.TourProducts.filter(x => x.PriceMatrix !== undefined).map(e => {\r\n\r\n\r\n                    e.IsCouponApplied = false;\r\n\r\n                    if (!e.hasOwnProperty(\"Quantity\")) {\r\n                        e.Quantity = 0;\r\n                    }\r\n                    if (e.hasOwnProperty(\"PriceMatrix\")) {\r\n                        let pmatrix;\r\n\r\n                        if (e.PriceMatrix.length > 1 && e.PriceMatrix.find(x => x.CostRateID == costrate) !== undefined)\r\n                            pmatrix = e.PriceMatrix.find(x => x.CostRateID == costrate);\r\n                        else\r\n                            pmatrix = e.PriceMatrix[0];\r\n\r\n                        e.PriceMatrix = [];\r\n                        e.PriceMatrix.push(pmatrix);\r\n                    }\r\n\r\n                    return e;\r\n                });\r\n            }\r\n\r\n            saveState(sessionKey, extraItem);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extraItem: extraItem,\r\n                extramItemsError: '',\r\n                isAddToCart: false\r\n            }\r\n        }\r\n\r\n        case GET_EXTRAITEM_OBJECT_AFTER_MEMBERSHIP: {\r\n\r\n            let extraItem = JSON.parse(JSON.stringify(action.payload));\r\n            let extramItems = JSON.parse(JSON.stringify(state.extramItems));\r\n            \r\n            let costrate = 0;\r\n\r\n            if (genfunction.IsNotNullOrEmptyOrUndefined(action.OrganizationCostRate)) {\r\n                costrate = action.OrganizationCostRate;\r\n            }\r\n            else if (action.IsMembershipApplied) {\r\n                costrate = action.MemberCostRate;\r\n            }\r\n            else if (action.IsIDME) {\r\n                costrate = action.IsIDMECostRate;\r\n            }\r\n            else {\r\n                costrate = DefaultCostRateID;\r\n            }\r\n\r\n            extraItem = genfunction.ApplyMembershipPricesOnTourEvent(extraItem, costrate, extramItems, DefaultCostRateID);\r\n\r\n            saveState(sessionKey, extraItem);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extraItem: extraItem,\r\n                extramItemsError: '',\r\n                isAddToCart: false\r\n            }\r\n        }\r\n\r\n        case UPDATE_PRODUCT_QUANTITY:\r\n\r\n            let isCheckOut = false;\r\n            let newExtraItem = { ...state.extraItem };\r\n            newExtraItem.TourProducts = newExtraItem.TourProducts.map(e => {\r\n                if (e.TourProductID == action.payload) {\r\n                    e.Quantity = action.Quantity;\r\n                    e.MaximumTickets = action.MaximumTickets;\r\n                    e.MinimumTickets = action.MinimumTickets;\r\n                }\r\n\r\n                if (e.Quantity > 0 && e.AffectsCapacity) {\r\n                    isCheckOut = true\r\n                }\r\n\r\n                if (action.ItemExist) {\r\n                    isCheckOut = true;\r\n                }\r\n\r\n                return e;\r\n            });\r\n\r\n            newExtraItem = genfunction.calculateeventsamount([newExtraItem])[0]\r\n\r\n            saveState(sessionKey, newExtraItem);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extraItem: newExtraItem,\r\n                extramItemsError: '',\r\n                isAddToCart: isCheckOut\r\n            }\r\n\r\n        case GET_EXTRAITEMS_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extramItemsError: action.error\r\n\r\n            }\r\n        }\r\n\r\n        case RESET_EXTRAITEMS: {\r\n\r\n            saveState(sessionKey, {});\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extramItemsError: '',\r\n                isAddToCart: false,\r\n                extramItems: [],\r\n                extraItem: {}\r\n            }\r\n        }\r\n\r\n        case RESET_ERROR_MSG: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                extramItemsError: ''\r\n            }\r\n        }\r\n\r\n        case SET_ADDTOCART: {\r\n\r\n            let newExtraItem = { ...state.extraItem }\r\n            let isAddToCart;\r\n\r\n            if (newExtraItem && newExtraItem.TourProducts && newExtraItem.TourProducts.length > 0)\r\n                isAddToCart = newExtraItem.TourProducts.filter(p => p.Quantity > 0).length > 0 ? true : false;\r\n\r\n            return {\r\n                ...state,\r\n                isAddToCart: isAddToCart\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerExtraItems;","export const GET_MEMEBER_INFO_LOADING = 'REDUX_SAGA_GET_MEMEBER_INFO_LOADING';\r\nexport const POST_MEMBER_INFO_LOADING = 'REDUX_SAGA_POST_MEMBER_INFO_LOADING';\r\nexport const MEMBER_DATA_SUCCESS = 'REDUX_SAGA_MEMBER_DATA_SUCCESS';\r\nexport const MEMBER_DATA_ERROR = 'REDUX_SAGA_MEMBER_DATA_ERROR';\r\n\r\nexport const actionGetMemberInfo = (dispatch, getdata) => {\r\n    dispatch({ type: GET_MEMEBER_INFO_LOADING, payload: getdata })\r\n};\r\n\r\nexport const actionPostMemberInfo = (dispatch, postdata) => {\r\n    dispatch({ type: POST_MEMBER_INFO_LOADING, payload: postdata })\r\n};\r\n\r\n\r\n//Didn't find its been used anywhere incode.","import { GET_MEMEBER_INFO_LOADING, POST_MEMBER_INFO_LOADING, MEMBER_DATA_SUCCESS, MEMBER_DATA_ERROR } from \"../actions/actionMember\";\r\n\r\nconst initialState = {\r\n    MemberInfo: {},\r\n    loading: false,\r\n    MemberInfoError: ''\r\n};\r\n\r\nfunction reducerMember(state = initialState, action) {\r\n    switch (action.type) {\r\n        case GET_MEMEBER_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                MemberInfo: {},\r\n                MemberInfoError: ''\r\n            };\r\n        }\r\n\r\n        case POST_MEMBER_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                MemberInfo: {},\r\n                MemberInfoError: ''\r\n            };\r\n        }\r\n\r\n        case MEMBER_DATA_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                MemberInfo: action.payload[0],\r\n                MemberInfoError: ''\r\n            };\r\n        }\r\n        case MEMBER_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                MemberInfo: {},\r\n                MemberInfoError: action.error\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerMember;","export const START_PAYMENT_TRANSACTION_LOADING = 'REDUX_SAGA_START_PAYMENT_TRANSACTION_LOADING';\r\nexport const START_PAYMENT_TRANSACTION_SUCCESS = 'REDUX_SAGA_START_PAYMENT_TRANSACTION_SUCCESS';\r\nexport const START_PAYMENT_TRANSACTION_ERROR = 'REDUX_SAGA_START_PAYMENT_TRANSACTION_ERROR';\r\nexport const RESET_PAYMENT_TRANSACTION = 'REDUX_SAGA_RESET_PAYMENT_TRANSACTION';\r\n\r\nexport const actionPostPaymentTransaction = (dispatch, token, customer, recaptchaToken) => {\r\n    dispatch({ type: START_PAYMENT_TRANSACTION_LOADING, token, customer, recaptchaToken });\r\n};\r\n\r\nexport const actionResetPaymentTransaction = (dispatch) => {\r\n    dispatch({ type: RESET_PAYMENT_TRANSACTION });\r\n};","import {\r\n    START_PAYMENT_TRANSACTION_LOADING, START_PAYMENT_TRANSACTION_SUCCESS,\r\n    START_PAYMENT_TRANSACTION_ERROR, RESET_PAYMENT_TRANSACTION\r\n} from \"../actions/actionPaymentTransaction\";\r\n\r\nconst initialState = {\r\n    Payment: {},\r\n    loading: false,\r\n    PaymentInfoError: ''\r\n};\r\n\r\nfunction reducerPaymentTransaction(state = initialState, action) {\r\n    switch (action.type) {\r\n        case START_PAYMENT_TRANSACTION_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                Payment: {},\r\n                PaymentInfoError: ''\r\n            };\r\n        }\r\n        case START_PAYMENT_TRANSACTION_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                Payment: action.payload[0],\r\n                PaymentInfoError: ''\r\n            };\r\n        }\r\n        case START_PAYMENT_TRANSACTION_ERROR: {\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                Payment: {},\r\n                PaymentInfoError: error\r\n            }\r\n        }\r\n        case RESET_PAYMENT_TRANSACTION: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                Payment: {},\r\n                PaymentInfoError: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerPaymentTransaction;","export const GET_IP_LOADING = 'REDUX_SAGA_GET_IP_LOADING';\r\nexport const GET_IP_SUCCESS = 'REDUX_SAGA_GET_IP_SUCCESS';\r\nexport const GET_IP_ERROR = 'REDUX_SAGA_GET_IP_ERROR';\r\n\r\nexport const actionGetIP = (dispatch) => {\r\n    dispatch({ type: GET_IP_LOADING })\r\n};","import { GET_IP_LOADING, GET_IP_SUCCESS, GET_IP_ERROR } from \"../actions/actionIP\";\r\n\r\nconst initialState = {\r\n    IpInfo: {},\r\n    loading: false,\r\n    IpInfoError: ''\r\n};\r\n\r\nfunction reducerIP(state = initialState, action) {\r\n    switch (action.type) {\r\n        case GET_IP_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                IpInfo: {},\r\n                IpInfoError: ''\r\n            };\r\n        }\r\n\r\n        case GET_IP_SUCCESS: {\r\n            window['info'].ip = action.payload;\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                IpInfo: action.payload,\r\n                IpInfoError: ''\r\n            };\r\n        }\r\n        case GET_IP_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                IpInfo: {},\r\n                IpInfoError: action.error\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerIP;","export const CALENDARNAV_CALENDAR_VIEW = 'REDUX_CALENDARNAV_CALENDAR_VIEW';\nexport const CALENDARNAV_LIST_VIEW = 'REDUX_CALENDARNAV_LIST_VIEW';\nexport const CALENDARNAV_HYBRID_VIEW = 'REDUX_CALENDARNAV_HYBRID_VIEW';\nexport const CALENDARNAV_RESET = 'REDUX_CALENDARNAV_RESET';\n\nexport const actionCalendarNavCalendarView = (dispatch) => {\n    dispatch({ type: CALENDARNAV_CALENDAR_VIEW });\n};\n\nexport const actionCalendarNavListView = (dispatch) => {\n    dispatch({ type: CALENDARNAV_LIST_VIEW });\n};\n\nexport const actionCalendarHyridView = (dispatch) => {\n    dispatch({ type: CALENDARNAV_HYBRID_VIEW });\n};\n\nexport const actionCalendarNavReset = (dispatch) => {\n    dispatch({ type: CALENDARNAV_RESET });\n};\n","import {\n  CALENDARNAV_CALENDAR_VIEW, CALENDARNAV_LIST_VIEW, CALENDARNAV_HYBRID_VIEW, CALENDARNAV_RESET\n} from \"../actions/actionCalendarNavBar\";\n\nconst initialState = {\n  viewType: ''\n};\n\nfunction reducerCalendarView(state = initialState, action) {\n  switch (action.type) {\n    case CALENDARNAV_CALENDAR_VIEW: {\n      return { ...state, viewType: 'CalendarView' }\n    }\n    case CALENDARNAV_LIST_VIEW: {\n      return { ...state, viewType: 'ListView' }\n    }\n    case CALENDARNAV_HYBRID_VIEW: {\n      return { ...state, viewType: 'HybridView' }\n    }\n    case CALENDARNAV_RESET: {\n      return { ...state, viewType: '' }\n    }\n    default: {\n      return state;\n    }\n  }\n}\n\nexport default reducerCalendarView;\n\n","export const START_DISCARD_TIME = 'REDUX_START_DISCARD_TIME';\r\nexport const PAUSE_DISCARD_TIME = 'REDUX_PAUSE_DISCARD_TIME';\r\nexport const RESET_DISCARD_TIME = 'REDUX_RESET_DISCARD_TIME';\r\nexport const DECREASE_DISCARD_TIME = 'REDUX_DECREASE_DISCARD_TIME';\r\n\r\nexport const actionStartDiscardTime = (dispatch, timerid) => {\r\n    dispatch({ type: START_DISCARD_TIME, payload: { timerid: timerid } });\r\n};\r\n\r\nexport const actionPauseDiscardTime = (dispatch) => {\r\n    dispatch({ type: PAUSE_DISCARD_TIME });\r\n};\r\n\r\nexport const actionDecreaseDiscardTime = (dispatch) => {\r\n    dispatch({ type: DECREASE_DISCARD_TIME });\r\n};\r\n\r\nexport const actionResetDiscardTime = (dispatch) => {\r\n    dispatch({ type: RESET_DISCARD_TIME });\r\n};","import { START_DISCARD_TIME, PAUSE_DISCARD_TIME, DECREASE_DISCARD_TIME, RESET_DISCARD_TIME } from \"../actions/actionCardDiscardTime\";\r\nconst { CartDiscardTime } = window['runConfig'];\r\nconst initialState = {\r\n    DiscardTime: 60 * CartDiscardTime,\r\n    timerid: 0\r\n};\r\n\r\nfunction reducerCardDiscardTime(state = initialState, action) {\r\n    switch (action.type) {\r\n        case START_DISCARD_TIME: {\r\n            return {\r\n                ...state,\r\n                DiscardTime: state.DiscardTime - 1,\r\n                timerid: action.payload.timerid\r\n            };\r\n        }\r\n        case PAUSE_DISCARD_TIME: {\r\n            clearInterval(state.timerid)\r\n            return {\r\n                ...state,\r\n                timerid: 0\r\n            };\r\n        }\r\n        case DECREASE_DISCARD_TIME: {\r\n            return {\r\n                ...state,\r\n                DiscardTime: state.DiscardTime - 1\r\n            };\r\n        }\r\n        case RESET_DISCARD_TIME: {\r\n            clearInterval(state.timerid)\r\n            return {\r\n                ...state,\r\n                DiscardTime: 60 * CartDiscardTime,\r\n                timerid: 0\r\n            };\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCardDiscardTime;\r\n","export const DISPLAYAREAS_LOADING = 'REDUX_SAGA_DISPLAYAREAS_LOADING';\r\nexport const DISPLAYAREAS_BY_ID_LOADING = 'REDUX_SAGA_DISPLAYAREAS_BY_ID_LOADING';\r\nexport const DISPLAYAREAS_BY_ID_AND_TYPE_LOADING = 'REDUX_SAGA_DISPLAYAREAS_BY_ID_AND_TYPE_LOADING';\r\nexport const GET_DISPLAYAREAS_DATA_SUCCESS = 'REDUX_SAGA_GET_DISPLAYAREAS_DATA_SUCCESS';\r\nexport const RESET_DISPLAYAREAS = \"REDUX_SAGA_RESET_DISPLAYAREAS\";\r\nexport const GET_DISPLAYAREAS_DATA_ERROR = 'REDUX_SAGA_GET_DISPLAYAREAS_DATA_ERROR';\r\n\r\nexport const actionGetDisplayAreasByType = (dispatch, type, id, isDisplay) => {\r\n    dispatch({ type: DISPLAYAREAS_LOADING, displayAreaType: type, id: id, isDisplay: isDisplay })\r\n};\r\n\r\nexport const actionGetDisplayAreasById = (dispatch, id) => {\r\n    dispatch({ type: DISPLAYAREAS_BY_ID_LOADING, payload: id })\r\n};\r\n\r\nexport const actionGetDisplayAreasByIdAndType = (dispatch, id, type) => {\r\n    dispatch({ type: DISPLAYAREAS_BY_ID_AND_TYPE_LOADING, id, displayAreaType:type })\r\n};\r\n\r\nexport const actionResetDisplayAreas = (dispatch) => {\r\n    dispatch({ type: RESET_DISPLAYAREAS })\r\n};\r\n","import {\r\n    DISPLAYAREAS_LOADING, DISPLAYAREAS_BY_ID_LOADING, DISPLAYAREAS_BY_ID_AND_TYPE_LOADING,\r\n    GET_DISPLAYAREAS_DATA_SUCCESS,\r\n    GET_DISPLAYAREAS_DATA_ERROR, RESET_DISPLAYAREAS\r\n} from \"../actions/actionDisplayAreas\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"DisplayAreaNos\";\r\n\r\nconst initialState = {\r\n    displayAreaID: 0,\r\n    displayAreas: [],\r\n    displayArea: loadState(sessionKey, {}),\r\n    loading: false,\r\n    displayAreasError: '',\r\n    isDisplay: false\r\n};\r\n\r\nfunction reducerDisplayAreas(state = initialState, action) {\r\n    switch (action.type) {\r\n        case DISPLAYAREAS_LOADING:\r\n        case DISPLAYAREAS_BY_ID_LOADING:\r\n        case DISPLAYAREAS_BY_ID_AND_TYPE_LOADING: {\r\n            return {\r\n                ...state,\r\n                displayAreas: [],\r\n                loading: true,\r\n                displayAreasError: ''\r\n            };\r\n        }\r\n\r\n        case GET_DISPLAYAREAS_DATA_SUCCESS: {\r\n\r\n            let newObj = {};\r\n\r\n            if (action.id !== null && action.id !== undefined) {\r\n                let newDisplayAreas = JSON.parse(JSON.stringify(action.payload));\r\n                newObj = { ...newDisplayAreas.filter(x => x.DisplayAreaNo == action.id)[0] };\r\n                saveState(sessionKey, newObj);\r\n            }\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                displayAreas: action.payload,\r\n                displayArea: newObj,\r\n                isDisplay: action.isDisplay,\r\n                displayAreasError: ''\r\n            };\r\n        }\r\n\r\n        case GET_DISPLAYAREAS_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                isDisplay: false,\r\n                displayAreas: action.payload,\r\n                displayAreasError: action.error\r\n            }\r\n        }\r\n        case RESET_DISPLAYAREAS: {\r\n\r\n            saveState(sessionKey, {});\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                isDisplay: false,\r\n                displayArea: {},\r\n                displayAreas: [],\r\n                displayAreasError: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerDisplayAreas;","export const COUPON_LOADING = 'REDUX_SAGA_COUPON_LOADING';\r\nexport const GET_COUPON_DATA_SUCCESS = 'REDUX_SAGA_GET_COUPON_DATA_SUCCESS';\r\nexport const GET_COUPON_DATA_ERROR = 'REDUX_SAGA_GET_COUPON_DATA_ERROR';\r\nexport const COUPON_END_LOADING = 'REDUX_SAGA_COUPON_END_LOADING';\r\nexport const RESET_COUPON = 'REDUX_SAGA_RESET_COUPON';\r\n\r\n\r\nexport const actionGetCoupon = (dispatch, coupnCode) => {\r\n    dispatch({ type: COUPON_LOADING, coupnCode: coupnCode })\r\n};\r\n\r\nexport const actionEndCouponLoading = (dispatch) => {\r\n    dispatch({ type: COUPON_END_LOADING })\r\n};\r\n\r\nexport const actionResetCoupon = (dispatch) => {\r\n    dispatch({ type: RESET_COUPON })\r\n}","import {\r\n    COUPON_LOADING, GET_COUPON_DATA_SUCCESS,\r\n    GET_COUPON_DATA_ERROR, COUPON_END_LOADING, RESET_COUPON\r\n} from \"../actions/actionCoupon\";\r\n\r\nconst initialState = {\r\n    tourCoupon: {},\r\n    loading: false,\r\n    couponError: ''\r\n};\r\n\r\nfunction reducerCoupon(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case COUPON_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                couponError: ''\r\n            };\r\n        }\r\n\r\n        case GET_COUPON_DATA_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                tourCoupon: action.payload,\r\n                couponError: ''\r\n            };\r\n        }\r\n\r\n\r\n        case GET_COUPON_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                tourCoupon: {},\r\n                couponError: action.error\r\n            }\r\n        }\r\n\r\n        case COUPON_END_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case RESET_COUPON: {\r\n            return {\r\n                ...state,\r\n                tourCoupon: {},\r\n                loading: false,\r\n                couponError: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCoupon;","import {\r\n    TOURPRODUCT_LOADING, GET_TOURPRODUCT_DATA_SUCCESS,\r\n    GET_TOURPRODUCT_DATA_ERROR\r\n} from \"../actions/actionTourProduct\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"TourProducts\";\r\n\r\nconst initialState = {\r\n    tourProduct: {},\r\n    loading: false,\r\n    tourProductError: ''\r\n};\r\n\r\nfunction reducerTourProduct(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case TOURPRODUCT_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                tourProductError: ''\r\n            };\r\n        }\r\n\r\n        case GET_TOURPRODUCT_DATA_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                tourProduct: action.payload,\r\n                tourProductError: ''\r\n            };\r\n        }\r\n\r\n        case GET_TOURPRODUCT_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                tourProduct: action.payload,\r\n                tourProductError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerTourProduct;","export const TOURPRODUCT_LOADING = 'REDUX_SAGA_TOURPRODUCT_LOADING';\r\nexport const GET_TOURPRODUCT_DATA_SUCCESS = 'REDUX_SAGA_GET_TOURPRODUCT_DATA_SUCCESS';\r\nexport const GET_TOURPRODUCT_DATA_ERROR = 'REDUX_SAGA_GET_TOURPRODUCT_DATA_ERROR';\r\n\r\nexport const actionGetTourProduct = (dispatch,tourProductID,priceDate,CostRateID) => {\r\n    dispatch({ \r\n\r\n        type: TOURPRODUCT_LOADING , \r\n        tourProductID : tourProductID, \r\n        priceDate : priceDate, \r\n        CostRateID : CostRateID \r\n    })\r\n};\r\n\r\n\r\n","export const GIFTCARD_HOLD_LOADNG = 'REDUX_SAGA_GIFTCARD_HOLD_LOADNG';\r\nexport const GIFTCARD_HOLD_SUCCESS = 'REDUX_SAGA_GIFTCARD_HOLD_SUCCESS';\r\nexport const GIFTCARD_HOLD_ERROR = 'REDUX_SAGA_GIFTCARD_HOLD_ERROR';\r\nexport const GIFTCARD_HOLD_RESET = 'REDUX_SAGA_GIFTCARD_HOLD_RESET'\r\n\r\nexport const GIFTCARD_HOLD_DELETE_LOADNG = 'REDUX_SAGA_GIFTCARD_HOLD_DELETE_LOADNG';\r\nexport const GIFTCARD_HOLD_DELETE_SUCESS = 'REDUX_SAGA_GIFTCARD_HOLD_DELETE'\r\n\r\nexport const GIFTCARD_HOLD_RECALCULATE_LOADNG = 'REDUX_SAGA_GIFTCARD_HOLD_RECALCULATE_LOADNG';\r\nexport const GIFTCARD_HOLD_RECALCULATE_SUCESS = 'REDUX_SAGA_GIFTCARD_HOLD_RECALCULATE_SUCESS'\r\n\r\nexport const actionAddGiftCardHold = (dispatch, giftCardNo) => {\r\n    dispatch({ type: GIFTCARD_HOLD_LOADNG, giftCardNo });\r\n};\r\n\r\nexport const actionResetGiftCardHoldState = (dispatch) => {\r\n    dispatch({ type: GIFTCARD_HOLD_RESET });\r\n}\r\n\r\nexport const actionDeleteGiftCardHold = (dispatch, GiftcardHoldRef) => {\r\n    dispatch({ type: GIFTCARD_HOLD_DELETE_LOADNG, GiftcardHoldRef });\r\n}\r\n\r\nexport const actionRecalculateGiftCardHold = (dispatch) => {\r\n    dispatch({ type: GIFTCARD_HOLD_RECALCULATE_LOADNG });\r\n}","import {\r\n    GIFTCARD_HOLD_LOADNG, GIFTCARD_HOLD_SUCCESS, GIFTCARD_HOLD_ERROR, GIFTCARD_HOLD_RESET,\r\n    GIFTCARD_HOLD_DELETE_LOADNG,GIFTCARD_HOLD_RECALCULATE_LOADNG\r\n} from \"../actions/actionGiftCardHold\";\r\n\r\nconst initialState = {\r\n    GiftCardHold: {},\r\n    GiftCardHoldLoading: false,\r\n    GiftCardHoldError: ''\r\n};\r\n\r\nfunction reducerGiftCardHold(state = initialState, action) {\r\n    switch (action.type) {\r\n        case(GIFTCARD_HOLD_LOADNG):\r\n        case (GIFTCARD_HOLD_DELETE_LOADNG):\r\n        case (GIFTCARD_HOLD_RECALCULATE_LOADNG): {\r\n            return {\r\n                ...state,\r\n                GiftCardHoldLoading: true,\r\n                GiftCardHold: {},\r\n                GiftCardHoldError: ''\r\n            };\r\n        }\r\n        case GIFTCARD_HOLD_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                GiftCardHoldLoading: false,\r\n                GiftCardHold: action.payload[0],\r\n                GiftCardHoldError: ''\r\n            };\r\n        }\r\n        case GIFTCARD_HOLD_ERROR: {\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            return {\r\n                ...state,\r\n                GiftCardHoldLoading: false,\r\n                GiftCardHold: {},\r\n                GiftCardHoldError: error\r\n            }\r\n        }\r\n        case GIFTCARD_HOLD_RESET: {\r\n            return {\r\n                ...state,\r\n                GiftCardHoldLoading: false,\r\n                GiftCardHold: {},\r\n                GiftCardHoldError: ''\r\n            };\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerGiftCardHold;","export const START_POST_UNIQUECOUPON_HOLDS_LOADING = 'REDUX_SAGA_START_POST_UNIQUECOUPON_HOLDS_LOADING';\r\nexport const START_POST_UNIQUECOUPON_HOLDS_SUCCESS = 'REDUX_SAGA_START_POST_UNIQUECOUPON_HOLDS_SUCCESS';\r\nexport const START_POST_UNIQUECOUPON_HOLDS_ERROR = 'REDUX_SAGA_START_POST_UNIQUECOUPON_HOLDS_ERROR';\r\nexport const START_POST_UNIQUECOUPON_HOLDS_RESET = 'REDUX_SAGA_START_POST_UNIQUECOUPON_HOLDS_RESET';\r\nexport const START_POST_UNIQUECOUPON_HOLDS_DELETE = 'REDUX_SAGA_START_POST_UNIQUECOUPON_HOLDS_DELETE';\r\n\r\n\r\nexport const actionPostUniqueCoupon = (dispatch, uniqueCoupon) => {\r\n    dispatch({ type: START_POST_UNIQUECOUPON_HOLDS_LOADING, uniqueCoupon });\r\n};\r\n\r\nexport const actionDeleteUniqueCoupon = (dispatch, UniqueCOuponHoldRef) => {\r\n    dispatch({ type: START_POST_UNIQUECOUPON_HOLDS_DELETE, UniqueCOuponHoldRef });\r\n}\r\n\r\nexport const actionResetUniqueCouponCardHoldState = (dispatch) => {\r\n    dispatch({ type: START_POST_UNIQUECOUPON_HOLDS_RESET });\r\n}","import {\r\n    START_POST_UNIQUECOUPON_HOLDS_LOADING, START_POST_UNIQUECOUPON_HOLDS_SUCCESS, START_POST_UNIQUECOUPON_HOLDS_RESET,\r\n    START_POST_UNIQUECOUPON_HOLDS_ERROR\r\n} from \"../actions/actionUniqueCouponHolds\";\r\n\r\nconst initialState = {\r\n    UniqueCoupon: {},\r\n    loading: false,\r\n    UniqueCouponError: ''\r\n};\r\n\r\nfunction reducerUniqueCouponHolds(state = initialState, action) {\r\n    switch (action.type) {\r\n        case START_POST_UNIQUECOUPON_HOLDS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                UniqueCoupon: {},\r\n                UniqueCouponError: ''\r\n            };\r\n        }\r\n        case START_POST_UNIQUECOUPON_HOLDS_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                UniqueCoupon: action.payload[0],\r\n                UniqueCouponError: ''\r\n            };\r\n        }\r\n        case START_POST_UNIQUECOUPON_HOLDS_RESET: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                UniqueCoupon: {},\r\n                UniqueCouponError: ''\r\n            }\r\n        }\r\n        case START_POST_UNIQUECOUPON_HOLDS_ERROR: {\r\n\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                UniqueCoupon: {},\r\n                UniqueCouponError: action.error\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerUniqueCouponHolds;","export const GET_MEMBERVALIDATION_INFO_LOADING = 'REDUX_SAGA_GET_MEMBERVALIDATION_INFO_LOADING';\r\nexport const MEMBERVALIDATION_DATA_SUCCESS = 'REDUX_SAGA_MEMBERVALIDATION_DATA_SUCCESS';\r\nexport const MEMBERVALIDATION_DATA_ERROR = 'REDUX_SAGA_MEMBERVALIDATION_DATA_ERROR';\r\nexport const MEMBERVALIDATION_DATA_RESET = 'REDUX_SAGA_MEMBERVALIDATION_DATA_RESET';\r\nexport const MEMBERVALIDATION_LOADING_RESET = 'REDUX_SAGA_MEMBERVALIDATION_LOADING_RESET';\r\nexport const GET_MEMBERVALIDATION_START_LOADING = 'REDUX_SAGA_GET_MEMBERVALIDATION_START_LOADING';\r\n\r\nexport const actionGetMemberValidation = (dispatch, memberNo, lastName, email, phone, street, checkDate) => {\r\n    dispatch({\r\n        type: GET_MEMBERVALIDATION_INFO_LOADING,\r\n        payload: {\r\n            memberNo: memberNo, lastName: lastName,\r\n            email: email, phone: phone, street: street, checkDate: checkDate\r\n        }\r\n    })\r\n};\r\n\r\nexport const actionResetMemberValidation = (dispatch) => {\r\n    dispatch({ type: MEMBERVALIDATION_DATA_RESET });\r\n}\r\n\r\nexport const actionEndMemberValidationLoading = (dispatch) => {\r\n    dispatch({ type: MEMBERVALIDATION_LOADING_RESET });\r\n}\r\n\r\nexport const actionStartLoadingOnRemoveMembership = (dispatch) => {\r\n    dispatch({ type: GET_MEMBERVALIDATION_START_LOADING });\r\n}\r\n\r\nexport const actionSetErrorMemberValidation = (dispatch, err) => {\r\n    dispatch({ type: MEMBERVALIDATION_DATA_ERROR, error: err });\r\n\r\n}   ","import {\r\n    GET_MEMBERVALIDATION_INFO_LOADING, MEMBERVALIDATION_DATA_SUCCESS,\r\n    MEMBERVALIDATION_DATA_ERROR, MEMBERVALIDATION_DATA_RESET,\r\n    MEMBERVALIDATION_LOADING_RESET, GET_MEMBERVALIDATION_START_LOADING\r\n} from \"../actions/actionMemberValidation\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"memberValidation\";\r\n\r\nconst initialState = {\r\n    membervalidation: loadState(sessionKey, {}),\r\n    loading: false,\r\n    membervalidationError: '',\r\n    showValidateMsg: false\r\n};\r\n\r\nfunction memberValidationReducer(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_MEMBERVALIDATION_START_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case GET_MEMBERVALIDATION_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                membervalidationError: '',\r\n                showValidateMsg: false\r\n            };\r\n        }\r\n\r\n        case MEMBERVALIDATION_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                membervalidation: action.payload,\r\n                loading: false,\r\n                membervalidationError: ''\r\n            };\r\n        }\r\n\r\n        case MEMBERVALIDATION_DATA_RESET: {\r\n\r\n            saveState(sessionKey, {})\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membervalidation: {},\r\n                membervalidationError: '',\r\n                showValidateMsg: false\r\n            }\r\n        }\r\n\r\n        case MEMBERVALIDATION_LOADING_RESET: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membervalidationError: '',\r\n                showValidateMsg: false\r\n            }\r\n        }\r\n\r\n        case MEMBERVALIDATION_DATA_ERROR: {\r\n\r\n            saveState(sessionKey, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membervalidation: action.payload,\r\n                membervalidationError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default memberValidationReducer;","export const FORMERROR_RESETFORMERRORSTATE = 'REDUX_FORMERROR_RESETFORMERRORSTATE';\r\nexport const FORMERROR_SETFORMERRORSTATE = 'REDUX_FORMERROR_SETFORMERRORSTATE';\r\nexport const RESET_FORM_FIELDVALUES_STATE = 'REDUX_RESET_FORM_FIELDVALUES_STATE';\r\nexport const SET_FROM_FIELDVALUE_STATE = 'REDUX_SET_FROM_FIELDVALUE_STATE';\r\n\r\nexport const actionResetFormErrorState = (dispatch) => {\r\n    dispatch({ type: FORMERROR_RESETFORMERRORSTATE });\r\n};\r\n\r\nexport const actionSetFormErrorState = (dispatch, errorfield, errortext, errorstate) => {\r\n    dispatch({ type: FORMERROR_SETFORMERRORSTATE, payload: { errorfield: errorfield, errortext: errortext, errorstate: errorstate } });\r\n};\r\n\r\nexport const actionResetFieldValuesState = (dispatch) => {\r\n    dispatch({ type: RESET_FORM_FIELDVALUES_STATE });\r\n};\r\n\r\nexport const actionSetFieldValueState = (dispatch, field, value) => {\r\n    dispatch({ type: SET_FROM_FIELDVALUE_STATE, payload: { field: field, value: value } });\r\n};","import {  FORMERROR_RESETFORMERRORSTATE, FORMERROR_SETFORMERRORSTATE , RESET_FORM_FIELDVALUES_STATE , SET_FROM_FIELDVALUE_STATE} from \"../actions/actionFormError\";\r\nimport { formerrorstate } from 'helpers';\r\nimport { formfields } from 'helpers';\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"formfields\";\r\n\r\nconst initialState = {\r\n    errorstate: formerrorstate.initialerrorstate,\r\n    formfields :  loadState(sessionKey, formfields.initialfieldsstate) \r\n   \r\n};\r\n\r\nfunction formerrorreducer(state = initialState, action) {\r\n    switch (action.type) {\r\n        case FORMERROR_RESETFORMERRORSTATE: {\r\n            return {\r\n                ...state,\r\n                errorstate: formerrorstate.initialerrorstate\r\n            };\r\n        }\r\n        case FORMERROR_SETFORMERRORSTATE: {\r\n            let newerrorstate = {...state.errorstate}\r\n            newerrorstate[action.payload.errorfield] = {\r\n                errorstate: action.payload.errorstate,\r\n                errortext: action.payload.errortext\r\n            }\r\n            return {\r\n                ...state,\r\n                errorstate: newerrorstate\r\n            }\r\n        }\r\n        case RESET_FORM_FIELDVALUES_STATE: {\r\n\r\n            saveState(sessionKey,  formfields.initialfieldsstate)\r\n\r\n            return {\r\n                ...state,\r\n                formfields: formfields.initialfieldsstate\r\n            };\r\n        }\r\n        case SET_FROM_FIELDVALUE_STATE: {\r\n\r\n            let newformfields = {...state.formfields}\r\n            newformfields[action.payload.field] = {\r\n                value: action.payload.value\r\n            }\r\n\r\n            saveState(sessionKey, newformfields)\r\n\r\n            return {\r\n                ...state,\r\n                formfields: newformfields\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default formerrorreducer;\r\n","export const GET_DONATION_INFO_LOADING = 'REDUX_SAGA_GET_DONATION_INFO_LOADING';\r\nexport const DONATION_DATA_SUCCESS = 'REDUX_SAGA_DONATION_DATA_SUCCESS';\r\nexport const DONATION_DATA_ERROR = 'REDUX_SAGA_DONATION_DATA_ERROR';\r\nexport const DONATION_DATA_RESET = 'REDUX_SAGA_DONATION_DATA_RESET';\r\n\r\nexport const actionGetDonation = (dispatch, productId, productType) => {\r\n    dispatch({\r\n        type: GET_DONATION_INFO_LOADING,\r\n        payload: { productId: productId, productType: productType }\r\n    })\r\n};\r\n\r\n\r\nexport const actionResetDonations = (dispatch) => {\r\n    dispatch({ type: DONATION_DATA_RESET })\r\n};","import {\r\n    GET_DONATION_INFO_LOADING, DONATION_DATA_SUCCESS,\r\n    DONATION_DATA_RESET, DONATION_DATA_ERROR\r\n} from \"../actions/actionDonation\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"donation\";\r\n\r\nconst initialState = {\r\n    donations: loadState(sessionKey1, []),\r\n    loading: false,\r\n    donationError: ''\r\n};\r\n\r\nfunction donationreducer(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_DONATION_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n\r\n        case DONATION_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                donations: action.payload,\r\n                donationError: ''\r\n            };\r\n        }\r\n\r\n        case DONATION_DATA_RESET: {\r\n\r\n            saveState(sessionKey1, [])\r\n\r\n            return {\r\n                ...state,\r\n                donations: [],\r\n                donationError: ''\r\n            };\r\n        }\r\n        \r\n        case DONATION_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                donationError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default donationreducer;","export const GET_TRANSACTIONFEE_INFO_LOADING = 'REDUX_SAGA_GET_TRANSACTIONFEE_INFO_LOADING';\r\nexport const TRANSACTIONFEE_DATA_SUCCESS = 'REDUX_SAGA_TRANSACTIONFEE_DATA_SUCCESS';\r\nexport const TRANSACTIONFEE_DATA_ERROR = 'REDUX_SAGA_TRANSACTIONFEE_DATA_ERROR';\r\nexport const TRANSACTIONFEE_DATA_RESET = 'REDUX_SAGA_TRANSACTIONFEE_DATA_RESET';\r\n\r\nexport const actionGetTransactionFee = (dispatch, productId, productType) => {\r\n    dispatch({\r\n        type: GET_TRANSACTIONFEE_INFO_LOADING,\r\n        payload: { productId: productId, productType: productType }\r\n    })\r\n};\r\n\r\nexport const actionResetTransactionFee = (dispatch) => {\r\n    dispatch({ type: TRANSACTIONFEE_DATA_RESET })\r\n};","import {\r\n    GET_TRANSACTIONFEE_INFO_LOADING, TRANSACTIONFEE_DATA_SUCCESS,\r\n    TRANSACTIONFEE_DATA_ERROR, TRANSACTIONFEE_DATA_RESET\r\n} from \"../actions/actionTransactionFee\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"transactionFee\";\r\n\r\nconst initialState = {\r\n    transactionFee: loadState(sessionKey1, []),\r\n    loading: false,\r\n    transactionFeeError: ''\r\n};\r\n\r\nfunction reducerTransactionFee(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_TRANSACTIONFEE_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n\r\n        case TRANSACTIONFEE_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                transactionFee: action.payload,\r\n                transactionFeeError: ''\r\n            };\r\n        }\r\n\r\n        case TRANSACTIONFEE_DATA_RESET: {\r\n\r\n            saveState(sessionKey1, [])\r\n\r\n            return {\r\n                ...state,\r\n                transactionFee: [],\r\n                transactionFeeError: ''\r\n            };\r\n        }\r\n\r\n        case TRANSACTIONFEE_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                transactionFeeError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerTransactionFee;","export const GET_MEMBERSHIPPACKAGES_INFO_LOADING = 'REDUX_SAGA_GET_MEMBERSHIPPACKAGES_INFO_LOADING';\r\nexport const MEMBERSHIPPACKAGES_DATA_SUCCESS = 'REDUX_SAGA_MEMBERSHIPPACKAGES_DATA_SUCCESS';\r\nexport const MEMBERSHIPPACKAGES_DATA_ERROR = 'REDUX_SAGA_MEMBERSHIPPACKAGES_DATA_ERROR';\r\nexport const MEMBERSHIPPACKAGES_DATA_RESET = 'REDUX_SAGA_MEMBERSHIPPACKAGES_DATA_RESET';\r\nexport const GET_MEMBERSHIPPACKAGE_OBJECT = 'REDUX_SAGA_GET_MEMBERSHIPPACKAGE_OBJECT';\r\nexport const UPDATE_MEMBERSHIPPACKAGE = 'REDUX_SAGA_UPDATE_MEMBERSHIPPACKAGE';\r\nexport const DELETE_MEMBERSHIPTYPEPERSON = 'REDUX_SAGA_DELETE_MEMBERSHIPTYPEPERSON';\r\nexport const UPDATE_MEMBERSHIPADDONS_QUANTITY = 'REDUX_SAGA_UPDATE_MEMBERSHIPADDONS_QUANTITY';\r\nexport const UPDATE_PACKAGE_FOR_RENEW = 'REDUX_SAGA_UPDATE_PACKAGE_FOR_RENEW';\r\nexport const UPDATE_FAMILYMEMBERS_NOT_PART_OF_PACKAGE = 'REDUX_SAGA_UPDATE_FAMILYMEMBERS_NOT_PART_OF_PACKAGE';\r\nexport const MEMBERSHIPPACKAGE_DATA_RESET = 'REDUX_SAGA_MEMBERSHIPPACKAGE_DATA_RESET';\r\nexport const UPDATE_PACKAGE_FOR_RENEW_TO_NEW_MEMBERSHIPPACKAGE = 'REDUX_SAGA_UPDATE_PACKAGE_FOR_RENEW_TO_NEW_MEMBERSHIPPACKAGE';\r\n\r\nexport const actionGetMembershipPackages = (dispatch, DisplayAreaNo) => {\r\n    dispatch({\r\n        type: GET_MEMBERSHIPPACKAGES_INFO_LOADING,\r\n        payload: { DisplayAreaNo: DisplayAreaNo }\r\n    })\r\n};\r\n\r\nexport const actionGetMembershipPackage = (dispatch, memberpackID) => {\r\n    dispatch({\r\n        type: GET_MEMBERSHIPPACKAGE_OBJECT,\r\n        payload: { memberpackID: memberpackID }\r\n    })\r\n}\r\n\r\nexport const actionUpdateMembershipPackage = (dispatch, membershipPackageDetails, isEdit) => {\r\n    dispatch({ type: UPDATE_MEMBERSHIPPACKAGE, payload: { membershipPackageDetails: membershipPackageDetails, isEdit: isEdit } })\r\n};\r\n\r\nexport const actionDeleteMembershipTypePerson = (dispatch, MembershipPackageID, membershipTypeID, userNo) => {\r\n    dispatch({ type: DELETE_MEMBERSHIPTYPEPERSON, payload: { MembershipPackageID: MembershipPackageID, membershipTypeID: membershipTypeID, userNo: userNo } })\r\n};\r\n\r\nexport const actionUpdateMembershipAddonsQuantity = (dispatch, membershipType) => {\r\n    dispatch({ type: UPDATE_MEMBERSHIPADDONS_QUANTITY, payload: membershipType })\r\n};\r\n\r\nexport const actionResetMembershipPackages = (dispatch) => {\r\n    dispatch({ type: MEMBERSHIPPACKAGES_DATA_RESET })\r\n};\r\n\r\nexport const actionResetMembershipPackage = (dispatch) => {\r\n    dispatch({ type: MEMBERSHIPPACKAGE_DATA_RESET })\r\n};\r\n\r\nexport const actionUpdatePackageForRenew = (dispatch, packageID, memberMemberships, customer) => {\r\n    dispatch({ type: UPDATE_PACKAGE_FOR_RENEW, payload: { packageID: packageID, memberMemberships: memberMemberships, customer: customer } })\r\n};\r\n\r\n\r\nexport const actionUpdateFamilyMemberNotPartOfPackage = (dispatch, userNo, isAdded) => {\r\n    dispatch({ type: UPDATE_FAMILYMEMBERS_NOT_PART_OF_PACKAGE, payload: { userNo: userNo, isAdded: isAdded } })\r\n};\r\n\r\n\r\nexport const actionUpdatePackageForRenewNewMembershipPackage = (dispatch, packageID, memberMemberships, customer) => {\r\n    dispatch({ type: UPDATE_PACKAGE_FOR_RENEW_TO_NEW_MEMBERSHIPPACKAGE, payload: { packageID: packageID, memberMemberships: memberMemberships, customer: customer } })\r\n};","import {\r\n    GET_MEMBERSHIPPACKAGES_INFO_LOADING, MEMBERSHIPPACKAGES_DATA_SUCCESS,\r\n    MEMBERSHIPPACKAGES_DATA_ERROR, MEMBERSHIPPACKAGES_DATA_RESET, GET_MEMBERSHIPPACKAGE_OBJECT,\r\n    UPDATE_MEMBERSHIPPACKAGE, DELETE_MEMBERSHIPTYPEPERSON, UPDATE_MEMBERSHIPADDONS_QUANTITY, UPDATE_PACKAGE_FOR_RENEW,\r\n    UPDATE_FAMILYMEMBERS_NOT_PART_OF_PACKAGE, MEMBERSHIPPACKAGE_DATA_RESET, UPDATE_PACKAGE_FOR_RENEW_TO_NEW_MEMBERSHIPPACKAGE\r\n} from \"../actions/actionMembershipPackages\";\r\n\r\nimport { genfunction } from 'helpers';\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"membershipPackage\";\r\nconst sessionKey2 = \"familymembersnotpartofPackage\";\r\nconst sessionKey3 = \"membershipPackages\";\r\n\r\n\r\nconst initialState = {\r\n    membershippackages: loadState(sessionKey3, []),\r\n    membershipPackage: loadState(sessionKey1, {}),\r\n    loading: false,\r\n    membershippackagesError: '',\r\n    familymembersnotpartofPackage: loadState(sessionKey2, [])\r\n};\r\n\r\nfunction reducerMembershipPackages(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_MEMBERSHIPPACKAGES_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                membershippackagesError: ''\r\n            };\r\n        }\r\n\r\n        case MEMBERSHIPPACKAGES_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey3, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: action.payload,\r\n                membershippackagesError: ''\r\n            };\r\n        }\r\n\r\n        case GET_MEMBERSHIPPACKAGE_OBJECT: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = { ...mempackages.filter(x => x.MembershipPackageID == action.payload.memberpackID)[0] };\r\n\r\n            if (memPackage && memPackage.hasOwnProperty(\"MembershipProducts\")) {\r\n\r\n                memPackage.MembershipProducts = memPackage.MembershipProducts.map(e => {\r\n\r\n                    if (e.MembershipType === \"Membership\") {\r\n\r\n                        if (e.hasOwnProperty(\"Users\") == false) {\r\n                            e.Users = []\r\n                        }\r\n\r\n                    }\r\n                    else if (e.MembershipType === \"AddOn\" && !e.hasOwnProperty(\"Quantity\")) {\r\n                        e.Quantity = 0;\r\n                    }\r\n\r\n                    return e;\r\n                });\r\n\r\n                let packID = action.payload.membershipPackageDetails === undefined ? action.payload.memberpackID : action.payload.membershipPackageDetails.MembershipPackageID;\r\n\r\n\r\n                if (mempackages && mempackages.length === 0) {\r\n                    mempackages.push(memPackage);\r\n                }\r\n                else {\r\n                    let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === packID);\r\n                    mempackages[packageIndexId] = memPackage;\r\n\r\n                }\r\n\r\n            }\r\n\r\n            saveState(sessionKey1, memPackage);\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                membershippackagesError: ''\r\n            }\r\n        }\r\n\r\n        case UPDATE_MEMBERSHIPPACKAGE: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = action.payload.isEdit ? action.payload.membershipPackageDetails : { ...mempackages.filter(x => x.MembershipPackageID == action.payload.membershipPackageDetails.MembershipPackageID)[0] };\r\n\r\n            memPackage.MembershipProducts = memPackage.MembershipProducts.map(e => {\r\n\r\n                if (e.MembershipType === \"Membership\" && action.payload.membershipPackageDetails.isEdit && e.Users) {\r\n                    e.Users = e.Users.filter(x => x.userNo != action.payload.membershipPackageDetails.userNo);\r\n                }\r\n\r\n                if (e.MembershipType === \"Membership\" && e.MembershipTypeID == action.payload.membershipPackageDetails.membershipTypeID) {\r\n\r\n                    var user = {\r\n                        isPrimaryMember: action.payload.membershipPackageDetails.isPrimaryMember,\r\n                        firstName: action.payload.membershipPackageDetails.firstName,\r\n                        lastName: action.payload.membershipPackageDetails.lastName,\r\n                        email: action.payload.membershipPackageDetails.email,\r\n                        dob: action.payload.membershipPackageDetails.dob,\r\n                        phone: action.payload.membershipPackageDetails.phone,\r\n                        address1: action.payload.membershipPackageDetails.address1,\r\n                        address2: action.payload.membershipPackageDetails.address2,\r\n                        city: action.payload.membershipPackageDetails.city,\r\n                        state: action.payload.membershipPackageDetails.state,\r\n                        zipcode: action.payload.membershipPackageDetails.zipcode,\r\n                        country: action.payload.membershipPackageDetails.country,\r\n                        userNo: 0,\r\n                        UniquePackageRef: action.payload.membershipPackageDetails.UniquePackageRef,\r\n                        isRenewal: action.payload.membershipPackageDetails.isRenewal,\r\n                        MembershipExpiryDate: action.payload.membershipPackageDetails.MembershipExpiryDate,\r\n                        notPartOfPackage: action.payload.membershipPackageDetails.notPartOfPackage,\r\n                        PreviousMembershipType: action.payload.membershipPackageDetails.PreviousMembershipType\r\n                    }\r\n\r\n                    if (e.hasOwnProperty(\"Users\") == false) {\r\n                        e.Users = []\r\n                    }\r\n\r\n                    if (action.payload.membershipPackageDetails.isEdit) {\r\n                        user.userNo = action.payload.membershipPackageDetails.userNo;\r\n                        e.Users.push(user);\r\n                    }\r\n                    else {\r\n                        if (action.payload.membershipPackageDetails.userNo < 1) {\r\n                            user.userNo = Math.floor((Math.random() * 100000) + 100000);\r\n                            user.UDFs = [];\r\n                        }\r\n                        else {\r\n                            user.userNo = action.payload.membershipPackageDetails.userNo;\r\n                        }\r\n\r\n                        e.Users.push(user);\r\n                    }\r\n                }\r\n\r\n                return e;\r\n            });\r\n\r\n            if (mempackages && mempackages.length === 0) {\r\n                mempackages.push(memPackage);\r\n            }\r\n            else {\r\n                let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === action.payload.membershipPackageDetails.MembershipPackageID);\r\n                mempackages[packageIndexId] = memPackage;\r\n            }\r\n\r\n            saveState(sessionKey1, memPackage);\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                membershippackagesError: ''\r\n            }\r\n\r\n\r\n        }\r\n\r\n        case DELETE_MEMBERSHIPTYPEPERSON: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = { ...mempackages.filter(x => x.MembershipPackageID == action.payload.MembershipPackageID)[0] };\r\n\r\n            memPackage.MembershipProducts = memPackage.MembershipProducts.map(e => {\r\n\r\n                if (e.MembershipType === \"Membership\" && e.MembershipTypeID == action.payload.membershipTypeID) {\r\n                    e.Users = e.Users.filter(x => x.userNo != action.payload.userNo);\r\n                }\r\n\r\n                return e;\r\n            });\r\n\r\n            let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === memPackage.MembershipPackageID);\r\n            mempackages[packageIndexId] = memPackage;\r\n\r\n            saveState(sessionKey1, memPackage);\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                membershippackagesError: ''\r\n            }\r\n        }\r\n\r\n        case UPDATE_MEMBERSHIPADDONS_QUANTITY: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = { ...mempackages.filter(x => x.MembershipPackageID == action.payload.MembershipPackageID)[0] };\r\n\r\n            memPackage.MembershipProducts = memPackage.MembershipProducts.map(e => {\r\n\r\n                if (e.MembershipType === \"AddOn\" && e.MembershipTypeID == action.payload.MembershipTypeID) {\r\n                    if (e.hasOwnProperty(\"Quantity\") && e.Quantity == 0) {\r\n                        e.Quantity = 1;\r\n                    }\r\n                    else {\r\n                        e.Quantity = 0;\r\n                    }\r\n\r\n                    e.isRenewPackage = action.payload.isRenewPackage;\r\n                }\r\n\r\n                return e;\r\n            });\r\n\r\n            let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === memPackage.MembershipPackageID);\r\n            mempackages[packageIndexId] = memPackage;\r\n\r\n            saveState(sessionKey1, memPackage);\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                membershippackagesError: ''\r\n            }\r\n\r\n        }\r\n        case MEMBERSHIPPACKAGES_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, {});\r\n            saveState(sessionKey2, []);\r\n            saveState(sessionKey3, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackagesError: action.error,\r\n                membershipPackage: {},\r\n                membershippackages: [],\r\n                familymembersnotpartofPackage: []\r\n            }\r\n        }\r\n\r\n        case MEMBERSHIPPACKAGES_DATA_RESET: {\r\n\r\n            saveState(sessionKey1, {});\r\n            saveState(sessionKey2, []);\r\n            saveState(sessionKey3, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackagesError: '',\r\n                familymembersnotpartofPackage: [],\r\n                membershippackages: [],\r\n                membershipPackage: {}\r\n            };\r\n        }\r\n\r\n        case UPDATE_PACKAGE_FOR_RENEW: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = { ...mempackages.filter(x => x.MembershipPackageID == action.payload.packageID)[0] };\r\n\r\n            var membersnotpartofPackage = { ...state.familymembersnotpartofPackage }\r\n\r\n            if (memPackage) {\r\n\r\n                let memberpackageDetails = genfunction.UpdateMembershipPackageForRenew(memPackage, action.payload.memberMemberships.membermerberhips[0], action.payload.customer);\r\n                memPackage = memberpackageDetails.membershipPackage;\r\n                membersnotpartofPackage = memberpackageDetails.userslist;\r\n\r\n                let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === action.payload.packageID);\r\n                mempackages[packageIndexId] = memPackage;\r\n\r\n                saveState(sessionKey1, memPackage);\r\n                saveState(sessionKey2, membersnotpartofPackage);\r\n            }\r\n\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                familymembersnotpartofPackage: membersnotpartofPackage,\r\n                membershippackagesError: ''\r\n            }\r\n        }\r\n\r\n        case MEMBERSHIPPACKAGE_DATA_RESET: {\r\n\r\n            saveState(sessionKey1, {});\r\n            saveState(sessionKey2, []);\r\n            saveState(sessionKey3, []);\r\n\r\n            return {\r\n                ...state,\r\n                membershipPackage: {},\r\n                familymembersnotpartofPackage: []\r\n            };\r\n\r\n        }\r\n        case UPDATE_FAMILYMEMBERS_NOT_PART_OF_PACKAGE: {\r\n\r\n            var membersnotpartofPackage = [...state.familymembersnotpartofPackage];\r\n\r\n            var member = { ...membersnotpartofPackage.filter(x => x.userNo == action.payload.userNo)[0] };\r\n\r\n            if (action.payload.isAdded) {\r\n                member.notpartofPackage = false;\r\n                member.userSelectedFromDropdown = true;\r\n            }\r\n            else {\r\n                member.notpartofPackage = true;\r\n                member.userSelectedFromDropdown = false;\r\n            }\r\n\r\n            membersnotpartofPackage = membersnotpartofPackage.filter(x => x.userNo != action.payload.userNo);\r\n            membersnotpartofPackage.push(member);\r\n\r\n            saveState(sessionKey2, membersnotpartofPackage);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                familymembersnotpartofPackage: membersnotpartofPackage,\r\n            }\r\n        }\r\n\r\n        case UPDATE_PACKAGE_FOR_RENEW_TO_NEW_MEMBERSHIPPACKAGE: {\r\n\r\n            let mempackages = JSON.parse(JSON.stringify(state.membershippackages));\r\n            let memPackage = { ...mempackages.filter(x => x.MembershipPackageID == action.payload.packageID)[0] };\r\n\r\n            var membersnotpartofPackage = { ...state.familymembersnotpartofPackage }\r\n\r\n            if (memPackage) {\r\n\r\n                let memberpackageDetails = genfunction.UpdateMembershipPackageForRenewToNewMembershipPackage(memPackage, action.payload.memberMemberships.membermerberhips[0], action.payload.customer);\r\n                memPackage = memberpackageDetails.membershipPackage;\r\n                membersnotpartofPackage = memberpackageDetails.userslist;\r\n\r\n                let packageIndexId = mempackages.findIndex(x => x.MembershipPackageID === action.payload.packageID);\r\n                mempackages[packageIndexId] = memPackage;\r\n\r\n                saveState(sessionKey1, memPackage);\r\n                saveState(sessionKey2, membersnotpartofPackage);\r\n            }\r\n\r\n            saveState(sessionKey3, mempackages);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershippackages: mempackages,\r\n                membershipPackage: memPackage,\r\n                familymembersnotpartofPackage: membersnotpartofPackage,\r\n                membershippackagesError: ''\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerMembershipPackages;","export const GET_GATICKET_LOADING = 'REDUX_SAGA_GET_GATICKET_LOADING';\r\nexport const GATICKET_DATA_SUCCESS = 'REDUX_SAGA_GATICKET_DATA_SUCCESS';\r\nexport const GATICKETDISPLAYAREA_DATA_SUCCESS = 'REDUX_SAGA_GATICKETDISPLAYAREA_DATA_SUCCESS';\r\nexport const GATICKET_DATA_ERROR = 'REDUX_SAGA_GATICKET_DATA_ERROR';\r\nexport const GATICKET_UPDATE_QUANTITY = 'REDUX_SAGA_GATICKET_UPDATE_QUANTITY';\r\n\r\nexport const actionGetGATickets = (dispatch, DisplayArea, GACouponCode) => {\r\n    dispatch({\r\n        type: GET_GATICKET_LOADING,\r\n        payload: { DisplayArea, GACouponCode }\r\n    })\r\n};\r\n\r\nexport const actionUpdateQuantityToProduct = (dispatch, ProductID, Quantity) => {\r\n    dispatch({\r\n        type: GATICKET_UPDATE_QUANTITY,\r\n        payload: { ProductID, Quantity }\r\n    })\r\n}","import {\r\n    GET_GATICKET_LOADING, GATICKET_DATA_SUCCESS, GATICKET_DATA_ERROR,\r\n    GATICKETDISPLAYAREA_DATA_SUCCESS, GATICKET_UPDATE_QUANTITY\r\n} from \"../actions/actionGATicket\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nimport { genfunction } from 'helpers';\r\n\r\nconst sessionKey = \"GATickets_View\";\r\n\r\nconst initialState = {\r\n    GATickets: loadState(sessionKey, []),\r\n    loading: false,\r\n    GATicketsError: '',\r\n    GADisplayAreas: []\r\n};\r\n\r\nfunction reducerGaTicket(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_GATICKET_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n\r\n        case GATICKET_DATA_SUCCESS: {\r\n\r\n            let newGATickets = action.payload.map(obj => ({ ...obj, Quantity: 0, TicketAmount: 0, TaxAmount: 0, TotalAmount: 0 }))\r\n            let oldGATickets = state.GATickets.filter(oldticket => {\r\n                let existticket = newGATickets.find(newticket => newticket.ProductID == oldticket.ProductID);\r\n                if (existticket == undefined)\r\n                    return true;\r\n            });\r\n\r\n            saveState(sessionKey, [...newGATickets, ...oldGATickets]);\r\n            return {\r\n                ...state,\r\n                GATickets: [...newGATickets, ...oldGATickets],\r\n                loading: false,\r\n                GATicketsError: ''\r\n            };\r\n        }\r\n\r\n        case GATICKETDISPLAYAREA_DATA_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                GADisplayAreas: action.payload,\r\n            };\r\n        }\r\n\r\n        case GATICKET_UPDATE_QUANTITY: {\r\n            let oldticketstate = [\r\n                ...state.GATickets\r\n            ]\r\n            let gatickets = oldticketstate.map(obj => {\r\n                let ticket = { ...obj };\r\n                if (ticket.ProductID === action.payload.ProductID) {\r\n                    ticket.Quantity = action.payload.Quantity;\r\n                }\r\n                return ticket;\r\n            })\r\n\r\n            gatickets = genfunction.calculategaticketamount(gatickets);\r\n\r\n            return {\r\n                ...state,\r\n                GATickets: gatickets,\r\n            };\r\n        }\r\n\r\n        case GATICKET_DATA_ERROR: {\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                GATickets: [],\r\n                GATicketsError: error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerGaTicket;","export const GET_LOSTMEMBER_INFO_LOADING = 'REDUX_SAGA_GET_LOSTMEMBER_INFO_LOADING';\r\nexport const LOSTMEMBER_DATA_SUCCESS = 'REDUX_SAGA_LOSTMEMBER_DATA_SUCCESS';\r\nexport const LOSTMEMBER_DATA_ERROR = 'REDUX_SAGA_LOSTMEMBER_DATA_ERROR';\r\nexport const LOSTMEMBER_DATA_RESET = 'REDUX_SAGA_LOSTMEMBER_DATA_RESET';\r\n\r\nexport const actionSendEmail = (dispatch, request) => {\r\n    dispatch({ type: GET_LOSTMEMBER_INFO_LOADING, payload: request })\r\n};\r\n\r\n\r\nexport const actionResetSendEmail = (dispatch) => {\r\n    dispatch({ type: LOSTMEMBER_DATA_RESET })\r\n};\r\n","import {\r\n    GET_LOSTMEMBER_INFO_LOADING, LOSTMEMBER_DATA_SUCCESS,\r\n    LOSTMEMBER_DATA_ERROR, LOSTMEMBER_DATA_RESET\r\n} from \"../actions/actionLostMember\";\r\n\r\nconst initialState = {\r\n    emailsend: false,\r\n    loading: false,\r\n    lostmemberError: ''\r\n};\r\n\r\nfunction reducerLostMember(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_LOSTMEMBER_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n\r\n        case LOSTMEMBER_DATA_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                emailsend: true,\r\n                lostmemberError: ''\r\n            };\r\n        }\r\n\r\n        case LOSTMEMBER_DATA_ERROR: {\r\n\r\n            return {\r\n                ...state,\r\n                lostmember: false,\r\n                lostmemberError: action.error\r\n            };\r\n        }\r\n\r\n        case LOSTMEMBER_DATA_RESET: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                emailsend: false,\r\n                lostmemberError: ''\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerLostMember;","import {\r\n    MEMBER_MEMBERSHIP_LOADING, MEMBER_MEMBERSHIP_SUCCESS,\r\n    MEMBER_MEMBERSHIP_ERROR, RESET_MEMBER_MEMBERSHIP\r\n} from \"../actions/actionMemberMemberships\";\r\n\r\nconst initialState = {\r\n    membermerberhips: [],\r\n    loading: false,\r\n    membermerberhipsError: ''\r\n};\r\n\r\nfunction reducerMemberMemberships(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case MEMBER_MEMBERSHIP_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case MEMBER_MEMBERSHIP_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                membermerberhips: action.payload,\r\n                membermerberhipsError: ''\r\n            };\r\n        }\r\n\r\n        case RESET_MEMBER_MEMBERSHIP: {\r\n\r\n            return {\r\n                ...state,\r\n                membermerberhips: [],\r\n                membermerberhipsError: ''\r\n            };\r\n        }\r\n\r\n        case MEMBER_MEMBERSHIP_ERROR: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membermerberhipsError: action.error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerMemberMemberships;","\r\nexport const MEMBER_MEMBERSHIP_LOADING = 'REDUX_SAGA_MEMBER_MEMBERSHIP_LOADING';\r\nexport const MEMBER_MEMBERSHIP_SUCCESS = 'REDUX_SAGA_MEMBER_MEMBERSHIP_SUCCESS';\r\nexport const MEMBER_MEMBERSHIP_ERROR = 'REDUX_SAGA_MEMBER_MEMBERSHIP_ERROR';\r\nexport const RESET_MEMBER_MEMBERSHIP = 'REDUX_SAGA_RESET_MEMBER_MEMBERSHIP';\r\n\r\nexport const actionGetMemberMemberships = (dispatch, customerId) => {\r\n    dispatch({ type: MEMBER_MEMBERSHIP_LOADING, customerId: customerId });\r\n};\r\n","\r\nexport const CUSTOMER_LOADING = 'REDUX_SAGA_CUSTOMER_LOADING';\r\nexport const CUSTOMER_SUCCESS = 'REDUX_SAGA_CUSTOMER_SUCCESS';\r\nexport const CUSTOMER_ERROR = 'REDUX_SAGA_CUSTOMER_ERROR';\r\nexport const RESET_CUSTOMER = 'REDUX_SAGA_RESET_CUSTOMER';\r\n\r\nexport const actionGetCustomer = (dispatch, customerId, cstemail) => {\r\n    dispatch({ type: CUSTOMER_LOADING, customerId: customerId, cstemail: cstemail });\r\n};\r\n\r\nexport const actionResetCustomer = (dispatch) => {\r\n    dispatch({ type: RESET_CUSTOMER })\r\n};\r\n","import {\r\n    CUSTOMER_LOADING, CUSTOMER_SUCCESS,\r\n    CUSTOMER_ERROR, RESET_CUSTOMER\r\n} from \"../actions/actionCustomer\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"Customers\";\r\n\r\nconst initialState = {\r\n    customer: loadState(sessionKey1, []),\r\n    loading: false,\r\n    customerError: ''\r\n};\r\n\r\nfunction reducerCustomer(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case CUSTOMER_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                customer: action.payload,\r\n                loading: false,\r\n                customerError: ''\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_ERROR: {\r\n\r\n            return {\r\n                ...state,\r\n                customer: [],\r\n                loading: false,\r\n                customerError: action.error\r\n            };\r\n        }\r\n\r\n        case RESET_CUSTOMER: {\r\n\r\n            saveState(sessionKey1, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customer: [],\r\n                customerError: ''\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCustomer;","export const GET_BOOKING_INFO_LOADING = 'REDUX_SAGA_GET_BOOKING_INFO_LOADING';\r\nexport const BOOKING_DATA_SUCCESS = 'REDUX_SAGA_BOOKING_DATA_SUCCESS';\r\nexport const BOOKING_DATA_ERROR = 'REDUX_SAGA_BOOKING_DATA_ERROR';\r\nexport const BOOKING_DATA_RESET = 'REDUX_SAGA_BOOKING_DATA_RESET';\r\nexport const BOOKING_DATA_UPDATE_QUANTITY = 'REDUX_SAGA_BOOKING_DATA_UPDATE_QUANTITY';\r\n\r\nexport const actionGetBooking = (dispatch, bookingID, email, lastName) => {\r\n    dispatch({ type: GET_BOOKING_INFO_LOADING, payload: { bookingID: bookingID, email: email, lastName: lastName } });\r\n};\r\n\r\nexport const actionResetBooking = (dispatch) => {\r\n    dispatch({ type: BOOKING_DATA_RESET })\r\n};\r\n\r\nexport const actionUpdateQuantity = (dispatch, prodID, quantity) => {\r\n    dispatch({ type: BOOKING_DATA_UPDATE_QUANTITY, payload: { prodID: prodID, quantity: quantity } })\r\n}","import {\r\n    GET_BOOKING_INFO_LOADING, BOOKING_DATA_SUCCESS,\r\n    BOOKING_DATA_ERROR, BOOKING_DATA_RESET, BOOKING_DATA_UPDATE_QUANTITY\r\n} from \"../actions/actionBooking\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"bookingrecord\";\r\n\r\nconst initialState = {\r\n    booking: loadState(sessionKey1, []),\r\n    loading: false,\r\n    bookingError: ''\r\n};\r\n\r\nfunction reducerBooking(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case GET_BOOKING_INFO_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case BOOKING_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload)\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                booking: action.payload,\r\n                bookingError: ''\r\n            };\r\n        }\r\n\r\n        case BOOKING_DATA_RESET: {\r\n\r\n            saveState(sessionKey1, [])\r\n\r\n            return {\r\n                ...state,\r\n                booking: [],\r\n                loading: false,\r\n                bookingError: ''\r\n            };\r\n        }\r\n\r\n        case BOOKING_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, [])\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingError: action.error\r\n            }\r\n        }\r\n\r\n        case BOOKING_DATA_UPDATE_QUANTITY: {\r\n\r\n            let booking = { ...state.booking }\r\n\r\n            booking[0].BookingProducts = booking[0].BookingProducts.map(prod => {\r\n\r\n                if (prod.TourProductID == action.payload.prodID) {\r\n                    prod.newQuantity = action.payload.quantity;\r\n                    prod.isModify = true;\r\n                }\r\n\r\n                return prod;\r\n            });\r\n\r\n            saveState(sessionKey1, booking);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                booking: booking\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerBooking;","import {\r\n    GITCARD_DISPLAYAREAS_LOADING, GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS,\r\n    GET_GITCARD_DISPLAYAREAS_DATA_ERROR, RESET_GITCARD_DISPLAYAREAS\r\n} from \"../actions/actionGiftCardDisplayAreas\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"GiftCardDisplayAreaNos\";\r\n\r\nconst initialState = {\r\n    giftcardsdisplayAreas: [],\r\n    giftcarddisplayArea: loadState(sessionKey, {}),\r\n    loading: false,\r\n    giftcardsdisplayAreasError: ''\r\n};\r\n\r\nfunction reducerGiftCardDisplayAreas(state = initialState, action) {\r\n    switch (action.type) {\r\n        case GITCARD_DISPLAYAREAS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                giftcardsdisplayAreasError: ''\r\n            };\r\n        }\r\n\r\n        case GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS: {\r\n\r\n            let newObj = {};\r\n\r\n            if (action.id !== null && action.id !== undefined) {\r\n                let newDisplayAreas = JSON.parse(JSON.stringify(action.payload));\r\n                newObj = { ...newDisplayAreas.filter(x => x.DisplayAreaNo == action.id)[0] };\r\n\r\n                saveState(sessionKey, newObj);\r\n            }\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcardsdisplayAreas: action.payload,\r\n                giftcarddisplayArea: newObj,\r\n                giftcardsdisplayAreasError: ''\r\n            };\r\n        }\r\n\r\n        case GET_GITCARD_DISPLAYAREAS_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcardsdisplayAreas: action.payload,\r\n                giftcardsdisplayAreasError: action.error\r\n            }\r\n        }\r\n        case RESET_GITCARD_DISPLAYAREAS: {\r\n\r\n            saveState(sessionKey, {});\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcarddisplayArea: {},\r\n                giftcardsdisplayAreas: [],\r\n                giftcardsdisplayAreasError: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerGiftCardDisplayAreas;","export const GITCARD_DISPLAYAREAS_LOADING = 'REDUX_SAGA_GITCARD_DISPLAYAREAS_LOADING';\r\nexport const GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS = 'REDUX_SAGA_GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS';\r\nexport const RESET_GITCARD_DISPLAYAREAS = \"REDUX_SAGA_RESET_GITCARD_DISPLAYAREAS\";\r\nexport const GET_GITCARD_DISPLAYAREAS_DATA_ERROR = 'REDUX_SAGA_GET_GITCARD_DISPLAYAREAS_DATA_ERROR';\r\n\r\nexport const actionGetGiftCardDisplayAreas = (dispatch) => {\r\n    dispatch({ type: GITCARD_DISPLAYAREAS_LOADING })\r\n};\r\n\r\nexport const actionResetGiftCardDisplayAreas = (dispatch) => {\r\n    dispatch({ type: RESET_GITCARD_DISPLAYAREAS })\r\n};","export const GITCARD_LOADING = 'REDUX_SAGA_GITCARD_LOADING';\r\nexport const GET_GITCARD_DATA_SUCCESS = 'REDUX_SAGA_GET_GITCARD_DATA_SUCCESS';\r\nexport const RESET_GITCARD = \"REDUX_SAGA_RESET_GITCARD\";\r\nexport const GET_GITCARD_DATA_ERROR = 'REDUX_SAGA_GET_GITCARD_DATA_ERROR';\r\nexport const UPATE_GITCARD_DATA = 'REDUX_SAGA_UPATE_GITCARD_DATA';\r\nexport const UPDATE_GIFTCARD_QUANTITY = 'REDUX_SAGA_UPDATE_GIFTCARD_QUANTITY';\r\nexport const UPDATE_GIFTCARD_CUSTOMAMOUNT = 'REDUX_SAGA_UPDATE_GIFTCARD_CUSTOMAMOUNT';\r\nexport const ADDTOCART_GIFTCARD = 'REDUX_SAGA_ADDTOCART_GIFTCARD';\r\nexport const REMOVE_GIFTCARD = 'REDUX_SAGA_REMOVE_GIFTCARD';\r\n\r\nexport const actionGetGiftCards = (dispatch, displayAreaNo) => {\r\n    dispatch({ type: GITCARD_LOADING, payload: { displayAreaNo: displayAreaNo } })\r\n};\r\n\r\nexport const actionUpdateGiftCardDropDown = (dispatch, key, price) => {\r\n    dispatch({ type: UPATE_GITCARD_DATA, payload: { key: key, price: price } })\r\n};\r\n\r\nexport const actionUpdateGiftCrdQuantity = (dispatch, ProductID, Quantity, IsCheckOut) => {\r\n    dispatch({ type: UPDATE_GIFTCARD_QUANTITY, payload: { ProductID, Quantity, IsCheckOut } })\r\n}\r\n\r\nexport const actionUpdateGiftCardCustomAmout = (dispatch, ProductID, Value) => {\r\n    dispatch({ type: UPDATE_GIFTCARD_CUSTOMAMOUNT, payload: { ProductID, Value } })\r\n}\r\n\r\nexport const actionAddToCartGiftCards = (dispatch, DisplayArea) => {\r\n    dispatch({ type: ADDTOCART_GIFTCARD, payload: { DisplayArea } })\r\n};\r\n\r\nexport const actionRemoveGiftCard = (dispatch, ProductID) => {\r\n    dispatch({ type: REMOVE_GIFTCARD, payload: { ProductID } })\r\n}\r\n\r\nexport const actionResetGiftCards = (dispatch) => {\r\n    dispatch({ type: RESET_GITCARD })\r\n};","import {\r\n    GITCARD_LOADING, GET_GITCARD_DATA_SUCCESS,\r\n    RESET_GITCARD, GET_GITCARD_DATA_ERROR, UPATE_GITCARD_DATA, UPDATE_GIFTCARD_QUANTITY,\r\n    UPDATE_GIFTCARD_CUSTOMAMOUNT, REMOVE_GIFTCARD, ADDTOCART_GIFTCARD\r\n} from \"../actions/actionGiftCards\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"GiftCard\";\r\n\r\nconst initialState = {\r\n    giftcards: loadState(sessionKey, []),\r\n    loading: false,\r\n    giftcardsError: ''\r\n};\r\n\r\nfunction reducerGiftCards(state = initialState, action) {\r\n    switch (action.type) {\r\n        case GITCARD_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                giftcardsError: ''\r\n            };\r\n        }\r\n\r\n        case GET_GITCARD_DATA_SUCCESS: {\r\n\r\n            let previousGiftCards = [...state.giftcards];\r\n\r\n            let newGiftCards = action.payload;\r\n\r\n            //if (previousGiftCards.length === 0 || (action.payload.length > 0 && previousGiftCards.length > 0 && action.payload[0].DisplayArea !== previousGiftCards[0].DisplayArea)) {\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n                m.Qty = 0;\r\n                m.CartQty = 0;\r\n                m.TotalAmount = 0;\r\n                m.CartTotalAmount = 0;\r\n                m.AddedToCart = false;\r\n\r\n                if (m.hasOwnProperty('MaxPrice')) {\r\n                    m.CustomAmount = 0;\r\n                    m.InvalidAmount = false;\r\n                }\r\n\r\n                if (previousGiftCards && previousGiftCards.length > 0) {\r\n                    previousGiftCards.push(m);\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            if (previousGiftCards && previousGiftCards.length > 0) {\r\n                saveState(sessionKey, previousGiftCards);\r\n            }\r\n            else {\r\n                saveState(sessionKey, newGiftCards);\r\n            }\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcards: previousGiftCards && previousGiftCards.length > 0 ? previousGiftCards : newGiftCards,\r\n                giftcardsError: ''\r\n            };\r\n        }\r\n\r\n        case UPATE_GITCARD_DATA: {\r\n\r\n            let newGiftCards = [...state.giftcards];\r\n            let prevQty = 0;\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n\r\n                if (m.ProductImageURL === action.payload.key) {\r\n\r\n                    if (m.Qty > 0) {\r\n                        prevQty = m.Qty;\r\n                    }\r\n\r\n                    if (m.Price === action.payload.price) {\r\n                        m.isSelected = true;\r\n                        m.Qty = prevQty;\r\n\r\n                        m.TotalAmount = m.Price * m.Qty;\r\n                    }\r\n                    else {\r\n                        m.Qty = 0;\r\n                        m.TotalAmount = 0;\r\n                        m.isSelected = false;\r\n                    }\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            saveState(sessionKey, newGiftCards);\r\n\r\n            return {\r\n                ...state, giftcards: newGiftCards\r\n            }\r\n        }\r\n\r\n        case UPDATE_GIFTCARD_QUANTITY: {\r\n\r\n            let newGiftCards = [...state.giftcards];\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n\r\n                if (m.ProductID === action.payload.ProductID) {\r\n                    m.Qty = action.payload.Quantity;\r\n                    m.TotalAmount = m.Price * m.Qty;\r\n\r\n                    if (m.AddedToCart && action.payload.IsCheckOut) {\r\n                        m.CartQty = action.payload.Quantity;\r\n                        m.CartTotalAmount = m.Price * m.CartQty;\r\n\r\n                        m.Qty = m.TotalAmount = 0;\r\n                    }\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            saveState(sessionKey, newGiftCards);\r\n\r\n            return {\r\n                ...state, giftcards: newGiftCards\r\n            }\r\n\r\n        }\r\n\r\n        case UPDATE_GIFTCARD_CUSTOMAMOUNT: {\r\n\r\n            let newGiftCards = [...state.giftcards];\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n\r\n                if (m.ProductID === action.payload.ProductID) {\r\n                    m.TotalAmount = action.payload.Value;\r\n                    m.CartTotalAmount = action.payload.Value;\r\n                    m.Qty = 1;\r\n                    m.CartQty = 1;\r\n                    m.InvalidAmount = false;\r\n\r\n                    if ((action.payload.Value > m.MaxPrice) || (action.payload.Value < m.Price)) {\r\n                        m.InvalidAmount = true;\r\n                    }\r\n\r\n                    if (m.AddedToCart && action.payload.IsCheckOut) {\r\n                        m.CartTotalAmount = action.payload.Value;\r\n                        m.Qty = m.TotalAmount = 0;\r\n                    }\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            saveState(sessionKey, newGiftCards);\r\n\r\n            return {\r\n                ...state, giftcards: newGiftCards\r\n            }\r\n        }\r\n        case ADDTOCART_GIFTCARD: {\r\n\r\n            let newGiftCards = [...state.giftcards];\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n\r\n                if (m.DisplayArea === action.payload.DisplayArea) {\r\n\r\n                    if (!m.hasOwnProperty('MaxPrice')) {\r\n\r\n                        m.AddedToCart = true;\r\n                        m.CartQty += m.Qty;\r\n                        m.CartTotalAmount = m.Price * m.CartQty;\r\n\r\n                        m.Qty = m.TotalAmount = 0;\r\n                    }\r\n                    else if (m.hasOwnProperty('MaxPrice')) {\r\n                        m.AddedToCart = true;\r\n                        m.Qty = m.TotalAmount = 0;\r\n                    }\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            saveState(sessionKey, newGiftCards);\r\n\r\n            return {\r\n                ...state, giftcards: newGiftCards\r\n            }\r\n        }\r\n\r\n        case REMOVE_GIFTCARD: {\r\n\r\n            let newGiftCards = [...state.giftcards];\r\n\r\n            newGiftCards = newGiftCards.map(m => {\r\n\r\n                if (m.ProductID === action.payload.ProductID) {\r\n                    m.TotalAmount = 0;\r\n                    m.CartTotalAmount = 0;\r\n                    m.Qty = 0;\r\n                    m.CartQty = 0;\r\n                    m.AddedToCart = false;\r\n                }\r\n\r\n                return m;\r\n            })\r\n\r\n            if (newGiftCards && newGiftCards.filter(x => x.CartQty > 0).length < 1) {\r\n                newGiftCards = newGiftCards.map(m => {\r\n\r\n                    m.AddedToCart = false;\r\n                    return m;\r\n                })\r\n            }\r\n\r\n            saveState(sessionKey, newGiftCards);\r\n\r\n            return {\r\n                ...state, giftcards: newGiftCards\r\n            }\r\n\r\n        }\r\n\r\n        case GET_GITCARD_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcards: action.payload,\r\n                giftcardsError: action.error\r\n            }\r\n        }\r\n        case RESET_GITCARD: {\r\n\r\n            saveState(sessionKey, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                giftcards: [],\r\n                giftcardsError: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerGiftCards;","export const COSTRATE_LOADING = 'REDUX_SAGA_COSTRATE_LOADING';\r\nexport const GET_COSTRATE_DATA_SUCCESS = 'REDUX_SAGA_GET_COSTRATE_DATA_SUCCESS';\r\nexport const GET_COSTRATE_DATA_ERROR = 'REDUX_SAGA_GET_COSTRATE_DATA_ERROR';\r\nexport const COSTRATE_END_LOADING = 'REDUX_SAGA_COSTRATE_END_LOADING';\r\nexport const RESET_COSTRATE = 'REDUX_SAGA_RESET_COSTRATE';\r\n\r\nexport const actionGetCostRate = (dispatch, groupname, subgroup) => {\r\n    dispatch({\r\n        type: COSTRATE_LOADING, payload:\r\n            { groupname: groupname, subgroup: subgroup }\r\n    })\r\n};\r\n\r\nexport const actionResetCostRate = (dispatch) => {\r\n    dispatch({ type: RESET_COSTRATE })\r\n}","import {\r\n    COSTRATE_LOADING, GET_COSTRATE_DATA_SUCCESS,\r\n    GET_COSTRATE_DATA_ERROR, COSTRATE_END_LOADING, RESET_COSTRATE\r\n} from \"../actions/actionCostRate\";\r\n\r\nconst initialState = {\r\n    costrate: {},\r\n    loading: false,\r\n    costraterror: ''\r\n};\r\n\r\nfunction reducerCostRate(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case COSTRATE_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                costraterror: ''\r\n            };\r\n        }\r\n\r\n        case GET_COSTRATE_DATA_SUCCESS: {\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                costrate: action.payload.length > 0 ? action.payload[0] : null,\r\n                costraterror: ''\r\n            };\r\n        }\r\n\r\n\r\n        case GET_COSTRATE_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                costrate: {},\r\n                costraterror: action.error\r\n            }\r\n        }\r\n\r\n        case COSTRATE_END_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case RESET_COSTRATE: {\r\n            return {\r\n                ...state,\r\n                costrate: {},\r\n                loading: false,\r\n                costraterror: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCostRate;","export const IDMEUSERDATA_LOADING = 'REDUX_SAGA_IDMEUSERDATA_LOADING';\r\nexport const GET_IDMEUSERDATA_DATA_SUCCESS = 'REDUX_SAGA_GET_IDMEUSERDATA_DATA_SUCCESS';\r\nexport const GET_IDMEUSERDATA_DATA_ERROR = 'REDUX_SAGA_GET_IDMEUSERDATA_DATA_ERROR';\r\nexport const IDMEUSERDATA_END_LOADING = 'REDUX_SAGA_IDMEUSERDATA_END_LOADING';\r\nexport const RESET_IDMEUSERDATA = 'REDUX_SAGA_RESET_IDMEUSERDATA';\r\n\r\nexport const actionGetIDMEUSERDATA = (dispatch, token) => {\r\n    dispatch({\r\n        type: IDMEUSERDATA_LOADING, payload:\r\n            { token: token }\r\n    })\r\n};\r\n\r\nexport const actionResetIDMEUSERDATA = (dispatch) => {\r\n    dispatch({ type: RESET_IDMEUSERDATA })\r\n}","import {\r\n    IDMEUSERDATA_LOADING, GET_IDMEUSERDATA_DATA_SUCCESS,\r\n    GET_IDMEUSERDATA_DATA_ERROR, IDMEUSERDATA_END_LOADING, RESET_IDMEUSERDATA\r\n} from \"../actions/actionIDMeUserData\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"userdata\";\r\n\r\nconst initialState = {\r\n    userdata: loadState(sessionKey, {}),\r\n    loading: false,\r\n    userdataerror: ''\r\n};\r\n\r\n\r\nfunction reducerIDMeUserData(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case IDMEUSERDATA_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                userdataerror: ''\r\n            };\r\n        }\r\n\r\n        case GET_IDMEUSERDATA_DATA_SUCCESS: {\r\n\r\n            saveState(sessionKey, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                userdata: action.payload,\r\n                userdataerror: ''\r\n            };\r\n        }\r\n\r\n        case GET_IDMEUSERDATA_DATA_ERROR: {\r\n\r\n            saveState(sessionKey, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                userdata: {},\r\n                userdataerror: action.error\r\n            }\r\n        }\r\n\r\n        case IDMEUSERDATA_END_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case RESET_IDMEUSERDATA: {\r\n\r\n            saveState(sessionKey, {});\r\n\r\n            return {\r\n                ...state,\r\n                userdata: {},\r\n                loading: false,\r\n                userdataerror: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerIDMeUserData;","export const USERDEFINEDFIELDS_LOADING = 'REDUX_SAGA_USERDEFINEDFIELDS_LOADING';\r\nexport const USERDEFINEDFIELDS_DATA_SUCCESS = 'REDUX_SAGA_USERDEFINEDFIELDS_DATA_SUCCESS';\r\nexport const USERDEFINEDFIELDS_ADD_UDF_TO_TOUREVENT = 'REDUX_SAGA_USERDEFINEDFIELDS_ADD_UDF_TO_TOUREVENT';\r\nexport const UPDATE_USERDEFINEDFIELD = 'REDUX_SAGA_UPDATE_USERDEFINEDFIELD';\r\nexport const RESET_USERDEFINEDFIELDS = \"REDUX_SAGA_RESET_USERDEFINEDFIELDS\";\r\nexport const USERDEFINEDFIELDS_DATA_ERROR = 'REDUX_SAGA_USERDEFINEDFIELDS_DATA_ERROR';\r\n\r\nexport const actionGetUserDefinedFields = (dispatch, type, id, listOfIds) => {\r\n    dispatch({ type: USERDEFINEDFIELDS_LOADING, payload: { type: type, id: id, listOfIds: listOfIds } })\r\n};\r\n\r\nexport const actionAddUDFToTourEvent = (dispatch, bookingID, toureventID) => {\r\n    dispatch({ type: USERDEFINEDFIELDS_ADD_UDF_TO_TOUREVENT, payload: { bookingID: bookingID, toureventID: toureventID } })\r\n}\r\n\r\nexport const actionUpdateUDF = (dispatch, bookingID, toureventID, categoryName, udfID, value) => {\r\n    dispatch({ type: UPDATE_USERDEFINEDFIELD, payload: { bookingID: bookingID, toureventID: toureventID, categoryName: categoryName, udfID: udfID, value: value } })\r\n};\r\n\r\nexport const actionResetUDFs = (dispatch) => {\r\n    dispatch({ type: RESET_USERDEFINEDFIELDS })\r\n};\r\n","import {\r\n    USERDEFINEDFIELDS_LOADING, USERDEFINEDFIELDS_DATA_SUCCESS, USERDEFINEDFIELDS_ADD_UDF_TO_TOUREVENT,\r\n    UPDATE_USERDEFINEDFIELD, RESET_USERDEFINEDFIELDS, USERDEFINEDFIELDS_DATA_ERROR\r\n} from \"../actions/actionBookingUserDefinedFields\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"userdefinedfields\";\r\nconst sessionKey2 = \"udfIDNo\";\r\n\r\nconst initialState = {\r\n    bookingUDFs: loadState(sessionKey1, []),\r\n    udfIDNo: loadState(sessionKey2, 0),\r\n    loading: false,\r\n    bookingUDFsError: ''\r\n};\r\n\r\nfunction reducerBookingUserDefinedFields(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n\r\n        case USERDEFINEDFIELDS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case USERDEFINEDFIELDS_DATA_SUCCESS: {\r\n\r\n            let udfID = 0;\r\n            let oldBookingUdfs = JSON.parse(JSON.stringify(state.bookingUDFs));\r\n            let bkngUdfs = JSON.parse(JSON.stringify(action.payload));\r\n\r\n\r\n            if (oldBookingUdfs && oldBookingUdfs.length > 0) {\r\n                udfID = JSON.parse(JSON.stringify(state.udfIDNo));\r\n\r\n                oldBookingUdfs.map(oldBkng => {\r\n\r\n                    if (bkngUdfs && bkngUdfs.length > 0 && bkngUdfs.filter(x => x.BookingTypeID === oldBkng.BookingTypeID).length < 1) {\r\n\r\n                        let oldBooking = oldBookingUdfs.filter(x => x.BookingTypeID == oldBkng.BookingTypeID)[0];\r\n\r\n                        if (oldBooking) {\r\n                            bkngUdfs.push(oldBooking);\r\n                        }\r\n                    }\r\n                });\r\n            }\r\n\r\n            bkngUdfs = bkngUdfs.filter(x => x.UDFCategories).map(booking => {\r\n\r\n                if (oldBookingUdfs && oldBookingUdfs.length > 0 && oldBookingUdfs.filter(x => x.BookingTypeID === booking.BookingTypeID).length > 0) {\r\n                    let oldBooking = oldBookingUdfs.filter(x => x.BookingTypeID == booking.BookingTypeID)[0];\r\n                    return oldBooking;\r\n                }\r\n\r\n                booking.UDFCategories.map(udfCategories => {\r\n\r\n                    let udfCat = { ...udfCategories };\r\n                    udfCategories.UserDefinedFields = [];\r\n\r\n                    if (udfCat.UserDefinedFields && udfCat.UserDefinedFields.length > 0) {\r\n                        udfCat.UserDefinedFields.map(UDF => {\r\n\r\n                            udfID = udfID + 1;\r\n                            UDF.UDFID = udfID;\r\n                            UDF.Value = '';\r\n                            UDF.toureventID = 0;\r\n                            udfCategories.UserDefinedFields.push(UDF);\r\n                        });\r\n                    }\r\n                });\r\n\r\n                return booking;\r\n            });\r\n\r\n            saveState(sessionKey1, bkngUdfs);\r\n            saveState(sessionKey2, udfID);\r\n\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingUDFs: bkngUdfs,\r\n                udfIDNo: udfID,\r\n                bookingUDFsError: ''\r\n            };\r\n        }\r\n\r\n        case USERDEFINEDFIELDS_ADD_UDF_TO_TOUREVENT: {\r\n\r\n            let bkngUdfs = JSON.parse(JSON.stringify(state.bookingUDFs));\r\n            let booking = bkngUdfs.find(x => x.BookingTypeID === action.payload.bookingID);\r\n\r\n            booking.UDFCategories = booking.UDFCategories.map(udfCategories => {\r\n\r\n                if (udfCategories.UserDefinedFields.filter(x => x.toureventID === action.payload.toureventID).length < 1) {\r\n                    udfCategories.UserDefinedFields.filter(x => x.toureventID === 0).map(UDF => {\r\n                        var newUDF = Object.assign({}, UDF);\r\n                        newUDF.toureventID = action.payload.toureventID;\r\n                        udfCategories.UserDefinedFields.push(newUDF);\r\n                    });\r\n                }\r\n\r\n                return udfCategories;\r\n            });\r\n\r\n            bkngUdfs = bkngUdfs.filter(x => x.BookingTypeID !== action.payload.bookingID);\r\n\r\n            bkngUdfs.push(booking);\r\n\r\n            saveState(sessionKey1, bkngUdfs);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingUDFs: bkngUdfs,\r\n                bookingUDFsError: ''\r\n            };\r\n        }\r\n\r\n\r\n        case UPDATE_USERDEFINEDFIELD: {\r\n\r\n            let bkngUdfs = JSON.parse(JSON.stringify(state.bookingUDFs));\r\n            let booking = bkngUdfs.find(x => x.BookingTypeID === action.payload.bookingID);\r\n\r\n            booking.UDFCategories = booking.UDFCategories.map(udfCategories => {\r\n\r\n                if (udfCategories.UDFCategoryName === action.payload.categoryName) {\r\n                    udfCategories.UserDefinedFields.map(UDF => {\r\n\r\n                        if (UDF.UDFID === action.payload.udfID && UDF.toureventID === action.payload.toureventID) {\r\n                            UDF.Value = action.payload.value;\r\n                        }\r\n                    });\r\n                }\r\n\r\n                return udfCategories;\r\n            });\r\n\r\n            bkngUdfs = bkngUdfs.filter(x => x.BookingTypeID !== action.payload.bookingID);\r\n\r\n            bkngUdfs.push(booking);\r\n\r\n            saveState(sessionKey1, bkngUdfs);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingUDFs: bkngUdfs,\r\n                bookingUDFsError: ''\r\n            };\r\n        }\r\n\r\n        case USERDEFINEDFIELDS_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                bookingUDFsError: action.error\r\n            }\r\n        }\r\n\r\n        case RESET_USERDEFINEDFIELDS: {\r\n\r\n            saveState(sessionKey1, []);\r\n            saveState(sessionKey2, 0);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                udfIDNo: 0,\r\n                bookingUDFs: [],\r\n                bookingUDFsError: ''\r\n            };\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerBookingUserDefinedFields;","export const ORDERLOCATIONS_LOADING = 'REDUX_SAGA_ORDERLOCATIONS_LOADING';\r\nexport const SET_ORDERLOCATIONS = 'REDUX_SAGA_SET_ORDERLOCATIONS';\r\nexport const ORDERLOCATIONS_SUCCESS = 'REDUX_SAGA_ORDERLOCATIONS_SUCCESS';\r\nexport const ORDERLOCATIONS_ERROR = 'REDUX_SAGA_ORDERLOCATIONS_ERROR';\r\n\r\nexport const actionGetOrderLocationsByDisplayArea = (dispatch, displayArea) => {\r\n    dispatch({ type: ORDERLOCATIONS_LOADING, payload: displayArea })\r\n};\r\n\r\nexport const actionSetOrderLocation = (dispatch, orderLocation) => {\r\n    dispatch({ type: SET_ORDERLOCATIONS, payload: orderLocation })\r\n};","import {\r\n    ORDERLOCATIONS_LOADING, SET_ORDERLOCATIONS, ORDERLOCATIONS_SUCCESS, ORDERLOCATIONS_ERROR\r\n} from \"../actions/actionOrderLocations\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"orderLocations\";\r\nconst sessionKey2 = \"orderLocation\";\r\n\r\nconst initialState = {\r\n    orderLocations: loadState(sessionKey, []),\r\n    orderLocation: loadState(sessionKey2, null),\r\n    loading: false,\r\n    error: ''\r\n};\r\n\r\nfunction reducerOrderLocations(state = initialState, action) {\r\n    switch (action.type) {\r\n        case ORDERLOCATIONS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                error: ''\r\n            };\r\n        }\r\n\r\n        case ORDERLOCATIONS_SUCCESS: {\r\n\r\n            let orderLocations = [\r\n                ...action.payload\r\n            ]\r\n\r\n            saveState(sessionKey, orderLocations);\r\n\r\n            return {\r\n                ...state,\r\n                orderLocations: orderLocations,\r\n                loading: false,\r\n                error: ''\r\n            };\r\n        }\r\n        case SET_ORDERLOCATIONS: {\r\n\r\n            let orderLocation = {\r\n                ...action.payload\r\n            }\r\n\r\n            saveState(sessionKey2, orderLocation);\r\n\r\n            return {\r\n                ...state,\r\n                orderLocation: orderLocation\r\n            };\r\n        }\r\n        case ORDERLOCATIONS_ERROR: {\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                error: error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerOrderLocations;","export const ORDER_MENU_LOADING = 'REDUX_SAGA_ORDER_MENU_LOADING';\r\nexport const ORDER_MENU_SUCCESS = 'REDUX_SAGA_ORDER_MENU_SUCCESS';\r\nexport const ORDER_MENU_ERROR = 'REDUX_SAGA_ORDER_MENU_ERROR';\r\n\r\nexport const actionGetOrderMenuByDisplayArea = (dispatch, displayArea) => {\r\n    dispatch({ type: ORDER_MENU_LOADING, payload: displayArea })\r\n};","import {\r\n    ORDER_MENU_LOADING, ORDER_MENU_SUCCESS, ORDER_MENU_ERROR\r\n} from \"actions/actionOrdersMenu\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"orderMenu\";\r\n\r\nconst initialState = {\r\n    orderMenu: loadState(sessionKey, []),\r\n    loading: false,\r\n    error: ''\r\n};\r\n\r\nfunction reducerOrderMenu(state = initialState, action) {\r\n    switch (action.type) {\r\n        case ORDER_MENU_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                error: ''\r\n            };\r\n        }\r\n\r\n        case ORDER_MENU_SUCCESS: {\r\n\r\n            let orderMenu = [\r\n                ...action.payload\r\n            ]\r\n\r\n            saveState(sessionKey, orderMenu);\r\n\r\n            return {\r\n                ...state,\r\n                orderMenu: orderMenu,\r\n                loading: false,\r\n                error: ''\r\n            };\r\n        }\r\n        case ORDER_MENU_ERROR: {\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            saveState(sessionKey, []);\r\n\r\n            return {\r\n                ...state,\r\n                orderMenu: [],\r\n                loading: false,\r\n                error: error\r\n            }\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerOrderMenu;","export const MEMBERSHIP_USERDEFINEDFIELDS_LOADING = 'REDUX_SAGA_MEMBERSHIP_USERDEFINEDFIELDS_LOADING';\r\nexport const MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS = 'REDUX_SAGA_MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS';\r\nexport const MEMBERSHIP_USERDEFINEDFIELDS_RESET = \"REDUX_SAGA_MEMBERSHIP_USERDEFINEDFIELDS_RESET\";\r\nexport const MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR = 'REDUX_SAGA_MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR';\r\nexport const UPDATE_MEMBER_USERDEFINEDFIELD = 'REDUX_SAGA_UPDATE_MEMBER_USERDEFINEDFIELD';\r\nexport const UPDATE_MEMBERSHIP_USERDEFINEDFIELD_RENEW = 'REDUX_SAGA_UPDATE_MEMBERSHIP_USERDEFINEDFIELD_RENEW';\r\nexport const UPDATE_USERDEFINEDFIELDS_MEMBER_ONEDIT_WHEN_CLICK_CANCEL_BUTTON = 'REDUX_SAGA_UPDATE_USERDEFINEDFIELDS_MEMBER_ONEDIT_WHEN_CLICK_CANCEL_BUTTON';\r\nexport const UPDATE_USERDEFINEDFIELDS_MEMBER_ON_SAVE = 'REDUX_SAGA_UPDATE_USERDEFINEDFIELDS_MEMBER_ON_SAVE';\r\n\r\n\r\nexport const actionGetMembershipUserDefinedFields = (dispatch, type, id, listOfIds) => {\r\n    dispatch({ type: MEMBERSHIP_USERDEFINEDFIELDS_LOADING, payload: { type: type, id: id, listOfIds: listOfIds } })\r\n};\r\n\r\nexport const actionUpdateMemberUDF = (dispatch, membershipTypeID, userNo, categoryName, udfID, value, isEdit) => {\r\n    dispatch({\r\n        type: UPDATE_MEMBER_USERDEFINEDFIELD, payload:\r\n            { membershipTypeID: membershipTypeID, userNo: userNo, categoryName: categoryName, udfID: udfID, value: value, isEdit: isEdit }\r\n    })\r\n};\r\n\r\nexport const actionResetMembershipUDFs = (dispatch) => {\r\n    dispatch({ type: MEMBERSHIP_USERDEFINEDFIELDS_RESET });\r\n}\r\n\r\nexport const actionUpdateMembershipUdfsWithCustomerUdfsValues = (dispatch, membershipPackage, customerUdfs) => {\r\n    dispatch({ type: UPDATE_MEMBERSHIP_USERDEFINEDFIELD_RENEW, payload: { membershipPackage: membershipPackage, customerUdfs: customerUdfs } })\r\n};\r\n\r\n\r\nexport const actionUpdateUdfsOnEditCancel = (dispatch, membershipTypeID, userNo, isEdit) => {\r\n    dispatch({\r\n        type: UPDATE_USERDEFINEDFIELDS_MEMBER_ONEDIT_WHEN_CLICK_CANCEL_BUTTON,\r\n        payload: { membershipTypeID: membershipTypeID, userNo: userNo, isEdit: isEdit }\r\n    })\r\n};\r\n\r\nexport const actionUpdateMemberTypeUDfsOnSave = (dispatch, membershipTypeID, userNo) => {\r\n    dispatch({\r\n        type: UPDATE_USERDEFINEDFIELDS_MEMBER_ON_SAVE,\r\n        payload: { membershipTypeID: membershipTypeID, userNo: userNo }\r\n    })\r\n};\r\n\r\n\r\n","import {\r\n    MEMBERSHIP_USERDEFINEDFIELDS_LOADING,\r\n    MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS,\r\n    MEMBERSHIP_USERDEFINEDFIELDS_RESET,\r\n    MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR,\r\n    UPDATE_MEMBER_USERDEFINEDFIELD,\r\n    UPDATE_MEMBERSHIP_USERDEFINEDFIELD_RENEW,\r\n    UPDATE_USERDEFINEDFIELDS_MEMBER_ONEDIT_WHEN_CLICK_CANCEL_BUTTON,\r\n    UPDATE_USERDEFINEDFIELDS_MEMBER_ON_SAVE\r\n\r\n} from \"../actions/actionMembershipUserDefinedFeilds\";\r\nimport { UDFs } from 'helpers';\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"membershipUdfs\";\r\nconst sessionKey2 = \"updatemembersudfonrenew\";\r\n\r\n\r\nconst initialState = {\r\n    membershipUdfs: loadState(sessionKey1, []),\r\n    loading: false,\r\n    membershipUDFsError: '',\r\n    updateMemberRecordsOnRenew: loadState(sessionKey2, false)\r\n};\r\n\r\nfunction reducerMembershipUserDefinedFields(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n\r\n        case MEMBERSHIP_USERDEFINEDFIELDS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS: {\r\n\r\n            let membershipsUdfs = JSON.parse(JSON.stringify(action.payload));\r\n\r\n            membershipsUdfs = membershipsUdfs.filter(x => x.UDFCategories).map(membershipTypes => {\r\n\r\n                membershipTypes.UDFCategories.map(udfCategories => {\r\n\r\n                    let udfCat = { ...udfCategories };\r\n                    udfCategories.UserDefinedFields = [];\r\n\r\n                    if (udfCat.UserDefinedFields && udfCat.UserDefinedFields.length > 0) {\r\n                        udfCat.UserDefinedFields.map(UDF => {\r\n\r\n                            UDF.UDFID = Math.floor(100000 + Math.random() * 900000);\r\n                            UDF.Value = '';\r\n                            UDF.Users = [];\r\n                            udfCategories.UserDefinedFields.push(UDF);\r\n                        });\r\n                    }\r\n                });\r\n\r\n                return membershipTypes;\r\n            });\r\n\r\n\r\n            saveState(sessionKey1, membershipsUdfs);\r\n            saveState(sessionKey2, false);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                updateMemberRecordsOnRenew: false,\r\n                membershipUdfs: membershipsUdfs,\r\n                membershipUDFsError: ''\r\n            };\r\n        }\r\n\r\n        case UPDATE_MEMBER_USERDEFINEDFIELD: {\r\n\r\n            let membershipsUdfs = JSON.parse(JSON.stringify(state.membershipUdfs));\r\n            let membershipType = membershipsUdfs.find(x => x.MembershipTypeID === action.payload.membershipTypeID);\r\n\r\n            membershipType.UDFCategories = membershipType.UDFCategories.map(udfCategories => {\r\n\r\n                udfCategories.UserDefinedFields.filter(x => x.UDFID === action.payload.udfID).map(udf => {\r\n\r\n                    if (udf.Users && udf.Users.length > -1 && udf.Users.filter(x => x.userID === action.payload.userNo).length == 0) {\r\n                        let u = { userID: action.payload.userNo, userUDFValue: action.payload.value };\r\n                        udf.Users.push(u)\r\n                    }\r\n                    else if (udf.Users && udf.Users.length > -1 && udf.Users.filter(x => x.userID === action.payload.userNo).length > 0) {\r\n                        let u = udf.Users.find(x => x.userID == action.payload.userNo);\r\n\r\n                        if (action.payload.isEdit && u.previousValue === undefined) {\r\n                            u.isEdit = true;\r\n                            u.previousValue = u.userUDFValue;\r\n                        }\r\n\r\n                        u.userUDFValue = action.payload.value;\r\n                        udf.Users = udf.Users.filter(x => x.userID !== action.payload.userNo);\r\n\r\n                        udf.Users.push(u)\r\n                    }\r\n                });\r\n\r\n                return udfCategories;\r\n            });\r\n\r\n            membershipsUdfs = membershipsUdfs.filter(x => x.MembershipTypeID !== action.payload.membershipTypeID);\r\n            membershipsUdfs.push(membershipType);\r\n\r\n            saveState(sessionKey1, membershipsUdfs);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershipUdfs: membershipsUdfs,\r\n                membershipUDFsError: ''\r\n            };\r\n        }\r\n\r\n\r\n\r\n        case UPDATE_MEMBERSHIP_USERDEFINEDFIELD_RENEW: {\r\n\r\n            let membershipsUdfs = JSON.parse(JSON.stringify(state.membershipUdfs));\r\n            let membershipPackage = JSON.parse(JSON.stringify(action.payload.membershipPackage));\r\n            let customerUdfs = JSON.parse(JSON.stringify(action.payload.customerUdfs));\r\n\r\n            membershipsUdfs = UDFs.UpdateMembershipUDFsWithCustomerUDFValue(membershipPackage, membershipsUdfs, customerUdfs);\r\n\r\n            saveState(sessionKey1, membershipsUdfs);\r\n            saveState(sessionKey2, true);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                updateMemberRecordsOnRenew: true,\r\n                membershipUdfs: membershipsUdfs,\r\n                membershipUDFsError: ''\r\n            }\r\n        }\r\n\r\n        case MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR: {\r\n\r\n            saveState(sessionKey1, action.payload);\r\n            saveState(sessionKey2, false);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                updateMemberRecordsOnRenew: false,\r\n                membershipUDFsError: action.error\r\n            }\r\n        }\r\n\r\n        case MEMBERSHIP_USERDEFINEDFIELDS_RESET: {\r\n\r\n            saveState(sessionKey1, []);\r\n            saveState(sessionKey2, false);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                updateMemberRecordsOnRenew: false,\r\n                membershipUdfs: [],\r\n                membershipUDFsError: ''\r\n            };\r\n        }\r\n\r\n        case UPDATE_USERDEFINEDFIELDS_MEMBER_ONEDIT_WHEN_CLICK_CANCEL_BUTTON: {\r\n\r\n            let membershipsUdfs = JSON.parse(JSON.stringify(state.membershipUdfs));\r\n            let membershipType = membershipsUdfs.find(x => x.MembershipTypeID === action.payload.membershipTypeID);\r\n\r\n\r\n            if (membershipType && membershipType.UDFCategories && membershipType.UDFCategories.length > 0) {\r\n                membershipType.UDFCategories = membershipType.UDFCategories.map(udfCategories => {\r\n\r\n                    udfCategories.UserDefinedFields.map(udf => {\r\n\r\n                        if (udf.Users && udf.Users.length > -1 && udf.Users.filter(x => x.userID === action.payload.userNo && x.isEdit).length > 0) {\r\n                            if (udf.IsRequired === false ||\r\n                                (udf.IsRequired === true && ((udf.Picklist && udf.Picklist.length > 0) || udf.UDFType === \"Decimal\" || udf.UDFType === \"Text\" || udf.UDFType === \"Date\"))) {\r\n\r\n                                let u = udf.Users.find(x => x.userID == action.payload.userNo && x.isEdit);\r\n\r\n                                if (u) {\r\n                                    u.userUDFValue = u.previousValue;\r\n                                    udf.Users = udf.Users.filter(x => x.userID !== action.payload.userNo);\r\n                                    udf.Users.push(u)\r\n                                }\r\n                            }\r\n                        }\r\n                    });\r\n\r\n                    return udfCategories;\r\n                });\r\n            }\r\n\r\n\r\n            if (membershipType) {\r\n                membershipsUdfs = membershipsUdfs.filter(x => x.MembershipTypeID !== action.payload.membershipTypeID);\r\n                membershipsUdfs.push(membershipType);\r\n\r\n                saveState(sessionKey1, membershipsUdfs);\r\n            }\r\n\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershipUdfs: membershipsUdfs,\r\n                membershipUDFsError: ''\r\n            };\r\n        }\r\n\r\n        case UPDATE_USERDEFINEDFIELDS_MEMBER_ON_SAVE: {\r\n\r\n            let membershipsUdfs = JSON.parse(JSON.stringify(state.membershipUdfs));\r\n            let membershipType = membershipsUdfs.find(x => x.MembershipTypeID === action.payload.membershipTypeID);\r\n\r\n\r\n            if (membershipType && membershipType.UDFCategories && membershipType.UDFCategories.length > 0) {\r\n                membershipType.UDFCategories = membershipType.UDFCategories.map(udfCategories => {\r\n\r\n                    udfCategories.UserDefinedFields.map(udf => {\r\n\r\n                        if (udf.Users && udf.Users.length > -1 && udf.Users.filter(x => x.userID === action.payload.userNo && x.isEdit).length > 0) {\r\n\r\n                            let u = udf.Users.find(x => x.userID == action.payload.userNo && x.isEdit);\r\n\r\n                            if (u) {\r\n                                u.previousValue = undefined;\r\n                                u.isEdit = false;\r\n                                udf.Users = udf.Users.filter(x => x.userID !== action.payload.userNo);\r\n                                udf.Users.push(u)\r\n                            }\r\n                        }\r\n\r\n                    });\r\n\r\n                    return udfCategories;\r\n                });\r\n            }\r\n\r\n\r\n            if (membershipType) {\r\n                membershipsUdfs = membershipsUdfs.filter(x => x.MembershipTypeID !== action.payload.membershipTypeID);\r\n                membershipsUdfs.push(membershipType);\r\n\r\n                saveState(sessionKey1, membershipsUdfs);\r\n            }\r\n\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                membershipUdfs: membershipsUdfs,\r\n                membershipUDFsError: ''\r\n            };\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerMembershipUserDefinedFields;\r\n","\r\nexport const CUSTOMER_UDFS_LOADING = 'REDUX_SAGA_CUSTOMER_UDFS_LOADING';\r\nexport const CUSTOMER_UDFS_SUCCESS = 'REDUX_SAGA_CUSTOMER_UDFS_SUCCESS';\r\nexport const CUSTOMER_UDFS_ERROR = 'REDUX_SAGA_CUSTOMER_UDFS_ERROR';\r\nexport const RESET_CUSTOMER_UDFS = 'REDUX_SAGA_RESET_CUSTOMER_UDFS';\r\n\r\nexport const actionGetCustomerUdfs = (dispatch, customerIdList) => {\r\n    dispatch({ type: CUSTOMER_UDFS_LOADING, customerIdList: customerIdList });\r\n};\r\n\r\nexport const actionResetCustomerUdfs = (dispatch) => {\r\n    dispatch({ type: RESET_CUSTOMER_UDFS })\r\n};\r\n","import {\r\n    CUSTOMER_UDFS_LOADING, CUSTOMER_UDFS_SUCCESS, CUSTOMER_UDFS_ERROR,\r\n    RESET_CUSTOMER_UDFS\r\n} from \"../actions/actionCustomerUDFs\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"customerUdfs\";\r\n\r\nconst initialState = {\r\n    customerUDFs: loadState(sessionKey1, []),\r\n    loading: false,\r\n    customerUDFError: ''\r\n};\r\n\r\nfunction reducerCustomerUDFs(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n\r\n        case CUSTOMER_UDFS_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_UDFS_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerUDFs: action.payload,\r\n                customerUDFError: ''\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_UDFS_ERROR: {\r\n\r\n            saveState(sessionKey1, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerUDFs: [],\r\n                customerUDFError: action.error\r\n            }\r\n        }\r\n\r\n        case RESET_CUSTOMER_UDFS: {\r\n\r\n            saveState(sessionKey1, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerUDFs: [],\r\n                customerUDFError: ''\r\n            };\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCustomerUDFs;","export const COUNTRYANDSTATE_LOADING = 'REDUX_SAGA_COUNTRYANDSTATE_LOADING';\r\nexport const GET_COUNTRYANDSTATE_DATA_SUCCESS = 'REDUX_SAGA_GET_COUNTRYANDSTATE_DATA_SUCCESS';\r\nexport const GET_COUNTRYANDSTATE_DATA_ERROR = 'REDUX_SAGA_GET_COUNTRYANDSTATE_DATA_ERROR';\r\nexport const COUNTRYANDSTATE_END_LOADING = 'REDUX_SAGA_COUNTRYANDSTATE_END_LOADING';\r\nexport const RESET_COUNTRYANDSTATE = 'REDUX_SAGA_RESET_COUNTRYANDSTATE';\r\n\r\nexport const actionGetCountryAndState = (dispatch) => {\r\n    dispatch({ type: COUNTRYANDSTATE_LOADING})\r\n};\r\n\r\nexport const actionResetCountryAndState = (dispatch) => {\r\n    dispatch({ type: RESET_COUNTRYANDSTATE })\r\n}\r\n\r\n\r\n\r\n\r\n","import {\r\n    COUNTRYANDSTATE_LOADING, GET_COUNTRYANDSTATE_DATA_SUCCESS,\r\n    GET_COUNTRYANDSTATE_DATA_ERROR, COUNTRYANDSTATE_END_LOADING, RESET_COUNTRYANDSTATE\r\n} from \"../actions/actionCountryAndState\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"countryandstates\";\r\n\r\nconst initialState = {\r\n    countryandstate: loadState(sessionKey, []),\r\n    loading: false,\r\n    countryandstaterror: ''\r\n};\r\n\r\nfunction reducerCountryAndState(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case COUNTRYANDSTATE_LOADING: {\r\n            saveState(sessionKey, []);\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                countryandstate: [],\r\n                countryandstaterror: ''\r\n            };\r\n        }\r\n\r\n        case GET_COUNTRYANDSTATE_DATA_SUCCESS: {\r\n            let cs = [\r\n                ...action.payload\r\n            ]\r\n\r\n            saveState(sessionKey, cs);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                countryandstate: cs,\r\n                countryandstaterror: ''\r\n            };\r\n        }\r\n\r\n\r\n        case GET_COUNTRYANDSTATE_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                countryandstate: [],\r\n                countryandstaterror: action.error\r\n            }\r\n        }\r\n\r\n        case COUNTRYANDSTATE_END_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case RESET_COUNTRYANDSTATE: {\r\n            return {\r\n                ...state,\r\n                countryandstate: [],\r\n                loading: false,\r\n                countryandstaterror: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCountryAndState;","export const ORGANIZATIONSECTION_LOADING = 'REDUX_SAGA_ORGANIZATIONSECTION_LOADING';\r\nexport const GET_ORGANIZATIONSECTION_DATA_SUCCESS = 'REDUX_SAGA_GET_ORGANIZATIONSECTION_DATA_SUCCESS';\r\nexport const GET_ORGANIZATIONSECTION_DATA_ERROR = 'REDUX_SAGA_GET_ORGANIZATIONSECTION_DATA_ERROR';\r\nexport const ORGANIZATIONSECTION_END_LOADING = 'REDUX_SAGA_ORGANIZATIONSECTION_END_LOADING';\r\nexport const RESET_ORGANIZATIONSECTION = 'REDUX_SAGA_RESET_ORGANIZATIONSECTION';\r\n\r\nexport const actionGetOrganizationSection = (dispatch, costRateList) => {\r\n    dispatch({ type: ORGANIZATIONSECTION_LOADING, payload: { costRateList } })\r\n};\r\n\r\nexport const actionResetOrganizationSection = (dispatch) => {\r\n    dispatch({ type: RESET_ORGANIZATIONSECTION })\r\n}\r\n\r\n","import {\r\n    ORGANIZATIONSECTION_LOADING, GET_ORGANIZATIONSECTION_DATA_SUCCESS,\r\n    GET_ORGANIZATIONSECTION_DATA_ERROR, ORGANIZATIONSECTION_END_LOADING, RESET_ORGANIZATIONSECTION\r\n} from \"../actions/actionOrganizationSection\";\r\n\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"organizationlist\";\r\n\r\nconst initialState = {\r\n    organizationlist: loadState(sessionKey, []),\r\n    loading: false,\r\n    organizationlisterror: ''\r\n};\r\n\r\nfunction reducerOrganizationSection(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n        case ORGANIZATIONSECTION_LOADING: {\r\n            saveState(sessionKey, []);\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                organizationlist: [],\r\n                organizationlisterror: ''\r\n            };\r\n        }\r\n\r\n        case GET_ORGANIZATIONSECTION_DATA_SUCCESS: {\r\n            let orglist = [\r\n                ...action.payload\r\n            ]\r\n\r\n            saveState(sessionKey, orglist);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                organizationlist: orglist,\r\n                organizationlisterror: ''\r\n            };\r\n        }\r\n\r\n\r\n        case GET_ORGANIZATIONSECTION_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                organizationlist: [],\r\n                organizationlisterror: action.error\r\n            }\r\n        }\r\n\r\n        case ORGANIZATIONSECTION_END_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: false\r\n            }\r\n        }\r\n\r\n        case RESET_ORGANIZATIONSECTION: {\r\n            return {\r\n                ...state,\r\n                organizationlist: [],\r\n                loading: false,\r\n                organizationlisterror: ''\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerOrganizationSection;\r\n","import {\r\n    PRODUCTS_BY_TYPE_LOADING, PRODUCTS_DATA_SUCCESS, PRODUCTS_DATA_ERROR\r\n} from \"../actions/actionProduct\";\r\n\r\nconst initialState = {\r\n    products: [],\r\n    loading: false,\r\n    error: ''\r\n};\r\n\r\nfunction reducerProduct(state = initialState, action) {\r\n    switch (action.type) {\r\n        case PRODUCTS_BY_TYPE_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                products:[],\r\n                error: ''\r\n            };\r\n        }\r\n\r\n        case PRODUCTS_DATA_SUCCESS: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                products: action.payload,\r\n                error: ''\r\n            };\r\n        }\r\n\r\n        case PRODUCTS_DATA_ERROR: {\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                products: [],\r\n                error: action.error\r\n            }\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerProduct;","export const PRODUCTS_BY_TYPE_LOADING = 'REDUX_SAGA_PRODUCTS_BY_TYPE_LOADING';\r\nexport const PRODUCTS_DATA_SUCCESS = 'REDUX_SAGA_PRODUCTS_DATA_SUCCESS';\r\nexport const PRODUCTS_DATA_ERROR = 'REDUX_SAGA_PRODUCTS_DATA_ERROR';\r\n\r\nexport const actionGetProductsByTypeAndDisplayAreas = (dispatch, type, displayAreaNo) => {\r\n    dispatch({ type: PRODUCTS_BY_TYPE_LOADING, productType: type, displayAreaNo })\r\n};","export const VALIDATE_RECAPTCHA_LOADING = 'REDUX_SAGA_VALIDATE_RECAPTCHA_LOADING';\r\nexport const VALIDATE_RECAPTCHA_SUCCESS = 'REDUX_SAGA_VALIDATE_RECAPTCHA_SUCCESS';\r\nexport const VALIDATE_RECAPTCHA_ERROR = 'REDUX_SAGA_VALIDATE_RECAPTCHA_ERROR';\r\nexport const VALIDATE_RECAPTCHA_RESET = 'REDUX_SAGA_VALIDATE_RECAPTCHA_RESET';\r\n\r\n\r\nexport const actionValidateRecaptchaToken = (dispatch, recaptchaToken, sessionID) => {\r\n    dispatch({ type: VALIDATE_RECAPTCHA_LOADING, payload: { recaptchaToken: recaptchaToken, sessionID: sessionID } })\r\n};\r\n\r\nexport const actionValidateRecaptchaReset = (dispatch) => {\r\n    dispatch({ type: VALIDATE_RECAPTCHA_RESET })\r\n};\r\n","import {\r\n    VALIDATE_RECAPTCHA_LOADING, VALIDATE_RECAPTCHA_SUCCESS,\r\n    VALIDATE_RECAPTCHA_ERROR, VALIDATE_RECAPTCHA_RESET\r\n} from \"../actions/actionRecaptcha\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey = \"validRecaptcha\";\r\n\r\nconst initialState = {\r\n    validToken: loadState(sessionKey, false),\r\n    loading: false,\r\n    validTokenError: ''\r\n};\r\n\r\nfunction reducerRecaptcha(state = initialState, action) {\r\n    switch (action.type) {\r\n        case VALIDATE_RECAPTCHA_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true,\r\n                validToken: false,\r\n                validTokenError: ''\r\n            };\r\n        }\r\n        case VALIDATE_RECAPTCHA_SUCCESS: {\r\n\r\n            saveState(sessionKey, true);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                validToken: true,\r\n                validTokenError: ''\r\n            };\r\n        }\r\n        case VALIDATE_RECAPTCHA_ERROR: {\r\n\r\n\r\n            saveState(sessionKey, false);\r\n\r\n            let error = \"\";\r\n            if (action.error.Errors) {\r\n                error = action.error.Errors[0].ErrorMessage\r\n            }\r\n            else\r\n                error = action.error.message;\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                validToken: false,\r\n                validTokenError: error\r\n            }\r\n        }\r\n        case VALIDATE_RECAPTCHA_RESET: {\r\n\r\n            saveState(sessionKey, false);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                validToken: false,\r\n                validTokenError: ''\r\n            }\r\n\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerRecaptcha;","export const GENERATE_USER_SESSION_ID = 'GENERATE_USER_SESSION_ID';\r\nexport const STOP_USER_TO_PURCHASE = 'STOP_USER_TO_PURCHASE';\r\nexport const RESET_STOP_USER_TO_PURCHASE = 'RESET_STOP_USER_TO_PURCHASE';\r\n\r\nexport const actionGenerateUserSessionID = (dispatch) => {\r\n    dispatch({ type: GENERATE_USER_SESSION_ID });\r\n};\r\n\r\nexport const actionStopUserToPurchase = (dispatch) => {\r\n    dispatch({ type: STOP_USER_TO_PURCHASE });\r\n};\r\n\r\nexport const actionResetStopUserToPurchase = (dispatch) => {\r\n    dispatch({ type: RESET_STOP_USER_TO_PURCHASE });\r\n};","(function (_0x2b7923, _0x294440) { var _0x5a892a = _0x52dc, _0x3a8b8c = _0x2b7923(); while (!![]) { try { var _0x5e9e64 = parseInt(_0x5a892a(0xe8)) / 0x1 + -parseInt(_0x5a892a(0xe3)) / 0x2 * (-parseInt(_0x5a892a(0xe4)) / 0x3) + -parseInt(_0x5a892a(0xe0)) / 0x4 + parseInt(_0x5a892a(0xdf)) / 0x5 + -parseInt(_0x5a892a(0xe1)) / 0x6 + -parseInt(_0x5a892a(0xeb)) / 0x7 + parseInt(_0x5a892a(0xe9)) / 0x8 * (parseInt(_0x5a892a(0xe5)) / 0x9); if (_0x5e9e64 === _0x294440) break; else _0x3a8b8c['push'](_0x3a8b8c['shift']()); } catch (_0x4243c0) { _0x3a8b8c['push'](_0x3a8b8c['shift']()); } } }(_0x300e, 0xca6c1)); function create_UUID() { var _0x32fadd = _0x52dc, _0x4ce6d1 = new Date()['getTime'](), _0x469f72 = _0x32fadd(0xe2)[_0x32fadd(0xea)](/[xy]/g, function (_0x396905) { var _0x266726 = _0x32fadd, _0x5755c3 = (_0x4ce6d1 + Math[_0x266726(0xe6)]() * 0x10) % 0x10 | 0x0; return _0x4ce6d1 = Math['floor'](_0x4ce6d1 / 0x10), (_0x396905 == 'x' ? _0x5755c3 : _0x5755c3 & 0x3 | 0x8)[_0x266726(0xe7)](0x10); }); return _0x469f72; } function _0x52dc(_0x19ff0e, _0x347acd) { var _0x300e48 = _0x300e(); return _0x52dc = function (_0x52dc21, _0x394d2f) { _0x52dc21 = _0x52dc21 - 0xdf; var _0x5c136f = _0x300e48[_0x52dc21]; return _0x5c136f; }, _0x52dc(_0x19ff0e, _0x347acd); } export default create_UUID; function _0x300e() { var _0x43e114 = ['3637371fXUWnJ', '2236959FgbVqC', 'random', 'toString', '895055fouSCb', '32RWanjT', 'replace', '10294718ohFvmw', '4665890ONwkYR', '2602284UfHVIr', '6507168kXbomc', 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx', '2rhsWlY']; _0x300e = function () { return _0x43e114; }; return _0x300e(); }","import { GENERATE_USER_SESSION_ID, STOP_USER_TO_PURCHASE,RESET_STOP_USER_TO_PURCHASE } from \"../actions/actionGlobal\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\nimport create_UUID from '../helpers/userIdentifier';\r\n\r\nconst USER_IDENTIFIER = \"userIdentifierID\";\r\nconst STOP_USER = \"stopUserToPur\";\r\n\r\nconst initialState = {\r\n    sessionID: loadState(USER_IDENTIFIER, ''),\r\n    stopUserToPurchase: loadState(STOP_USER, false)\r\n};\r\n\r\nfunction reducerGlobal(state = initialState, action) {\r\n    switch (action.type) {\r\n        case GENERATE_USER_SESSION_ID: {\r\n\r\n            let userIdentifyID = create_UUID();\r\n            saveState(USER_IDENTIFIER, userIdentifyID);\r\n\r\n            return {\r\n                ...state,\r\n                sessionID: userIdentifyID\r\n            };\r\n        }\r\n        case STOP_USER_TO_PURCHASE: {\r\n\r\n            saveState(STOP_USER, true);\r\n\r\n            return {\r\n                ...state,\r\n                stopUserToPurchase: true\r\n            };\r\n        }\r\n        case RESET_STOP_USER_TO_PURCHASE :{\r\n\r\n            saveState(STOP_USER, false);\r\n\r\n            return {\r\n                ...state,\r\n                stopUserToPurchase: false\r\n            };\r\n\r\n        }\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerGlobal;","\r\nexport const CUSTOMER_ADDRESSES_LOADING = 'REDUX_SAGA_CUSTOMER_ADDRESSES_LOADING';\r\nexport const CUSTOMER_ADDRESSES_SUCCESS = 'REDUX_SAGA_CUSTOMER_ADDRESSES_SUCCESS';\r\nexport const CUSTOMER_ADDRESSES_ERROR = 'REDUX_SAGA_CUSTOMER_ADDRESSES_ERROR';\r\nexport const RESET_CUSTOMER_ADDRESSES = 'REDUX_SAGA_RESET_CUSTOMER_ADDRESSES';\r\n\r\nexport const actionGetCustomerAddresses = (dispatch, customerIdList) => {\r\n    dispatch({ type: CUSTOMER_ADDRESSES_LOADING, customerIdList: customerIdList });\r\n};\r\n\r\nexport const actionResetCustomerAddresses = (dispatch) => {\r\n    dispatch({ type: RESET_CUSTOMER_ADDRESSES })\r\n};\r\n","import {\r\n    CUSTOMER_ADDRESSES_LOADING, CUSTOMER_ADDRESSES_SUCCESS, CUSTOMER_ADDRESSES_ERROR,\r\n    RESET_CUSTOMER_ADDRESSES\r\n} from \"../actions/actionCustomerAddresses\";\r\nimport { loadState, saveState } from \"../helpers/sessionStorage\";\r\n\r\nconst sessionKey1 = \"CustomerAddresses\";\r\n\r\nconst initialState = {\r\n    customerAddresses: loadState(sessionKey1, []),\r\n    loading: false,\r\n    customerAddressesError: ''\r\n};\r\n\r\nfunction reducerCustomerAddresses(state = initialState, action) {\r\n\r\n    switch (action.type) {\r\n\r\n        case CUSTOMER_ADDRESSES_LOADING: {\r\n            return {\r\n                ...state,\r\n                loading: true\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_ADDRESSES_SUCCESS: {\r\n\r\n            saveState(sessionKey1, action.payload);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerAddresses: action.payload,\r\n                customerAddressesError: ''\r\n            };\r\n        }\r\n\r\n        case CUSTOMER_ADDRESSES_ERROR: {\r\n\r\n            saveState(sessionKey1, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerAddresses: [],\r\n                customerAddressesError: action.error\r\n            }\r\n        }\r\n\r\n        case RESET_CUSTOMER_ADDRESSES: {\r\n\r\n            saveState(sessionKey1, []);\r\n\r\n            return {\r\n                ...state,\r\n                loading: false,\r\n                customerAddresses: [],\r\n                customerAddressesError: ''\r\n            };\r\n        }\r\n\r\n        default: {\r\n            return state;\r\n        }\r\n    }\r\n}\r\n\r\nexport default reducerCustomerAddresses;","import { combineReducers } from 'redux';\nimport reducerAuthenticationToken from './reducerAuthenticationToken';\nimport reducerBookingTypes from './reducerBookingTypes';\nimport reducerAppLoader from './reducerAppLoader';\nimport reducerShopCart from './reducerShopCart'\nimport reducerExtraItems from './reducerExtraItems';\nimport reducerMember from './reducerMember';\nimport reducerPaymentTransaction from './reducerPaymentTransaction'\nimport reducerIP from './reducerIP'\nimport reducerCalendarView from './reducerCalendarView'\nimport reducerCardDiscardTime from './reducerCardDiscardTime'\nimport reducerDisplayAreas from './reducerDisplayAreas';\nimport reducerCoupon from './reducerCoupon';\nimport reducerTourProduct from './reducerTourProduct';\nimport reducerGiftCardHold from './reducerGiftCardHold';\nimport reducerUniqueCouponHolds from './reducerUniqueCouponHolds';\nimport reducerMemberValidation from './reducerMemberValidation';\nimport reducerFormError from './reducerFormError';\nimport reducerDonation from './reducerDonation';\nimport reducerTransactionFee from './reducerTransactionFee';\nimport reducerMembershipPackages from './reducerMembershipPackages';\nimport reducerGaTicket from './reducerGaTicket';\nimport reducerLostMember from './reducerLostMember';\nimport reducerMemberMemberships from './reducerMemberMemberships';\nimport reducerCustomer from './reducerCustomer';\nimport reducerBooking from './reducerBooking';\nimport reducerGiftCardDisplayAreas from './reducerGiftCardDisplayAreas';\nimport reducerGiftCards from './reducerGiftCards';\nimport reducerCostRate from './reducerCostRate';\nimport reducerIDMeUserData from './reducerIDMeUserData';\nimport reducerBookingUserDefinedFields from './reducerBookingUserDefinedFields';\nimport reducerOrderLocations from './reducerOrderLocations';\nimport reducerOrderMenu from './reducerOrderMenu';\nimport reducerMembershipUserDefinedFields from './reducerMembershipUserDefinedFields';\nimport reducerCustomerUDFs from './reducerCustomerUDFs';\nimport reducerCountryAndState from './reducerCountryAndState';\nimport reducerOrganizationSection from './reducerOrganizationSection';\nimport reducerProduct from './reducerProduct';\nimport reducerRecaptcha from './reducerRecaptcha';\nimport reducerGlobal from './reducerGlobal';\nimport reducerCustomerAddresses from './reducerCustomerAddresses';\n\n\n\nconst rootReducer = combineReducers({\n    reducerAuthenticationToken, reducerBookingTypes, reducerAppLoader,\n    reducerShopCart, reducerMember, reducerPaymentTransaction,\n    reducerExtraItems, reducerIP, reducerCalendarView, reducerCardDiscardTime,\n    reducerDisplayAreas, reducerGiftCardHold, reducerCoupon, reducerTourProduct,\n    reducerUniqueCouponHolds, reducerMemberValidation, reducerFormError, reducerDonation,\n    reducerTransactionFee, reducerMembershipPackages, reducerGaTicket, reducerLostMember, reducerMemberMemberships,\n    reducerCustomer, reducerBooking, reducerGiftCardDisplayAreas, reducerGiftCards, reducerCostRate, reducerIDMeUserData,\n    reducerBookingUserDefinedFields, reducerOrderLocations, reducerOrderMenu, reducerMembershipUserDefinedFields,\n    reducerCustomerUDFs, reducerCountryAndState, reducerProduct, reducerOrganizationSection, reducerRecaptcha,\n    reducerGlobal, reducerCustomerAddresses\n});\n\nexport default rootReducer;","import CryptoAES from 'crypto-js/aes'\nimport CryptoENC from 'crypto-js/enc-utf8';\n\nconst { apiUrl, userName, password, middlewareUrl, middlewareUserName, middlewarePassword } = window['runConfig'];\n\nconst DataAccess = {\n  apiUrl: CryptoAES.decrypt(apiUrl, '1271').toString(CryptoENC),\n  userName: CryptoAES.decrypt(userName, '1271').toString(CryptoENC),\n  password: CryptoAES.decrypt(password, '1271').toString(CryptoENC),\n  middlewareUrl: CryptoAES.decrypt(middlewareUrl, '1271').toString(CryptoENC),\n  middlewareUserName: CryptoAES.decrypt(middlewareUserName, '1271').toString(CryptoENC),\n  middlewarePassword: CryptoAES.decrypt(middlewarePassword, '1271').toString(CryptoENC)\n}\n\nexport default DataAccess;\n","import DataAccess from './constants';\n\nconst path = 'token/'\n\nconst apiAuthentication = () => {\n   const url = DataAccess.apiUrl + path + '?username=' + DataAccess.userName + '&password=' + DataAccess.password;\n   fetch(url)\n      .then(response => response.json)\n      .then((result) => {\n         return result.token;\n      }\n         , (error) => {\n            throw new Error(error);\n         });\n}\n\nexport default apiAuthentication;\n","import { put, takeEvery } from 'redux-saga/effects'\nimport { LOAD_AUTHENTICATIONTOKEN_ERROR, LOAD_AUTHENTICATIONTOKEN_SUCCESS, LOAD_AUTHENTICATIONTOKEN_LOADING } from \"../actions/actionAuthentication\";\nimport apiAuthentication from '../api/apiAuthentication';\n\nasync function fetchAsync(func) {\n  const response = await func();\n  if (response.ok) {\n    return await response.json();\n  }\n  throw new Error(\"Unexpected error!!!\");\n}\n\n\nfunction* fetchAuthenticationToken() {\n  try {\n    const token = yield fetchAsync(apiAuthentication);\n    yield put({ type: LOAD_AUTHENTICATIONTOKEN_SUCCESS, token: token });\n  } catch (e) {\n    yield put({ type: LOAD_AUTHENTICATIONTOKEN_ERROR, error: e.message });\n  }\n}\nexport const sagaAuthenticationToken = [  // Allows concurrent fetches\n  takeEvery(LOAD_AUTHENTICATIONTOKEN_LOADING, fetchAuthenticationToken)\n  // Does not allow concurrent fetches\n  // yield takeLatest(LOAD_USERS_LOADING, fetchUser);\n];\n\n\n//export default authenticationTokenSaga;\n","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'bookings?bookingid=';\r\n\r\nexport const apiBooking = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params.bookingID + \"&Email=\" + encodeURIComponent(params.email) + \"&LastName=\" + params.lastName;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\nconst path = 'BookingTypes'\r\n\r\nexport const apiBookingTypes = (id, isDisplayArea) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let newID = typeof id === 'object' && id !== null ? id.DisplayAreaNo : id;\r\n    let newIsDisArea = typeof id === 'object' && id !== null ? id.isDisplay : isDisplayArea;\r\n\r\n    const url = DataAccess.apiUrl + path + (newIsDisArea ? \"?DisplayArea=\" + newID : \"?BookingTypeID=\" + newID)\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'costrates'\r\n\r\nexport const apiCostRate = (costrateObj) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let gpName = costrateObj.groupname !== undefined && costrateObj.groupname.length > 0 ? costrateObj.groupname : \"\";\r\n    let subGpName = costrateObj.subgroup !== undefined && costrateObj.subgroup.length > 0 ? costrateObj.subgroup : \"\";\r\n\r\n    let url = DataAccess.apiUrl + path;\r\n\r\n    if (gpName && gpName.length > 0) {\r\n        url += \"?GroupName=\" + gpName;\r\n    }\r\n\r\n    if (gpName && gpName.length > 0 && subGpName && subGpName.length > 0) {\r\n        url += \"&SubGroupName=\" + subGpName;\r\n    }\r\n\r\n    if (gpName && gpName.length == 0 && subGpName && subGpName.length > 0) {\r\n        url += \"?SubGroupName=\" + subGpName;\r\n    }\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'customers?CustomerID=';\r\n\r\nexport const apiCustomer = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params.customerId + \"&Email=\" + params.cstemail;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import _0x303548 from'crypto-js';\r\nvar _0x4be2=['000000000','chain','264365QditFG','counter','Utf8','decrypt','hostname','34AIUgEd','enc','random','input','Pkcs7','mode','constructor','11402sFcTnf','debu','stateObject','location','function\\x20*\\x5c(\\x20*\\x5c)','test','call','init','parse',':::','1009818sDIMAN','pad','AES','\\x5c+\\x5c+\\x20*(?:[a-zA-Z_$][0-9a-zA-Z_$]*)','encrypt','while\\x20(true)\\x20{}','substr','stringify','126627YNeOmC','CBC','action','gger','string','toString','139AfASgJ','167443zBytFJ','355125hOQbpD','localhost','apply','length','1233NdsiEd','11jSzbeV','7061939323383233'];var _0x1925=function(_0x5d2900,_0x3234fc){_0x5d2900=_0x5d2900-0x179;var _0xba06e2=_0x4be2[_0x5d2900];return _0xba06e2;};var _0x7e87d6=_0x1925;(function(_0x5e77ad,_0x4bf7d7){var _0x15f863=_0x1925;while(!![]){try{var _0x1e2b77=-parseInt(_0x15f863(0x195))+-parseInt(_0x15f863(0x17c))+parseInt(_0x15f863(0x19a))*-parseInt(_0x15f863(0x1a1))+parseInt(_0x15f863(0x18c))+parseInt(_0x15f863(0x190))*parseInt(_0x15f863(0x18a))+-parseInt(_0x15f863(0x184))+-parseInt(_0x15f863(0x191))*-parseInt(_0x15f863(0x18b));if(_0x1e2b77===_0x4bf7d7)break;else _0x5e77ad['push'](_0x5e77ad['shift']());}catch(_0x1757ae){_0x5e77ad['push'](_0x5e77ad['shift']());}}}(_0x4be2,0x8d943));var _0x3dfa16=function(){var _0x101f63=!![];return function(_0x6e356b,_0x364d0f){var _0xe0277c=_0x101f63?function(){var _0x4ae118=_0x1925;if(_0x364d0f){var _0x1ab943=_0x364d0f[_0x4ae118(0x18e)](_0x6e356b,arguments);return _0x364d0f=null,_0x1ab943;}}:function(){};return _0x101f63=![],_0xe0277c;};}();(function(){_0x3dfa16(this,function(){var _0x58c8bf=_0x1925,_0x24e3b0=new RegExp(_0x58c8bf(0x1a5)),_0x507ad3=new RegExp(_0x58c8bf(0x17f),'i'),_0x467d63=_0x533da6(_0x58c8bf(0x179));!_0x24e3b0[_0x58c8bf(0x1a6)](_0x467d63+_0x58c8bf(0x194))||!_0x507ad3[_0x58c8bf(0x1a6)](_0x467d63+_0x58c8bf(0x19d))?_0x467d63('0'):_0x533da6();})();}());var key=_0x303548['enc'][_0x7e87d6(0x197)][_0x7e87d6(0x17a)](_0x7e87d6(0x192)),iv=_0x303548[_0x7e87d6(0x19b)][_0x7e87d6(0x197)]['parse']('7061939323383233');export default{'CreateGuid'(){function _0x5f1197(_0x25447e){var _0xc851aa=_0x1925,_0x3e1e8e=(Math[_0xc851aa(0x19c)]()[_0xc851aa(0x189)](0x10)+_0xc851aa(0x193))[_0xc851aa(0x182)](0x2,0x8);return _0x25447e?'-'+_0x3e1e8e['substr'](0x0,0x4)+'-'+_0x3e1e8e['substr'](0x4,0x4):_0x3e1e8e;}return _0x5f1197()+_0x5f1197(!![])+_0x5f1197(!![])+_0x5f1197();},'GenerateRequest'(_0x3a7e0d){var _0x5e5d75=_0x7e87d6,_0x2d28fd=this['CreateGuid'](),_0x157d91=window[_0x5e5d75(0x1a4)][_0x5e5d75(0x199)]==''||window[_0x5e5d75(0x1a4)][_0x5e5d75(0x199)]==undefined?_0x5e5d75(0x18d):window[_0x5e5d75(0x1a4)][_0x5e5d75(0x199)],_0x5a946c=_0x2d28fd+_0x5e5d75(0x17b)+JSON[_0x5e5d75(0x183)](_0x3a7e0d)+_0x5e5d75(0x17b)+_0x157d91;return _0x5a946c;},'encrypt'(_0x36b562){var _0xef09cd=_0x7e87d6,_0x6ea7d4=_0x303548['AES'][_0xef09cd(0x180)](_0x303548['enc']['Utf8'][_0xef09cd(0x17a)](_0x36b562),key,{'keySize':0x80/0x8,'iv':iv,'mode':_0x303548[_0xef09cd(0x19f)]['CBC'],'padding':_0x303548['pad'][_0xef09cd(0x19e)]});return _0x6ea7d4;},'decrypt'(_0x81c5f0){var _0x2d53f8=_0x7e87d6,_0x518689=_0x303548[_0x2d53f8(0x17e)][_0x2d53f8(0x198)](_0x81c5f0,key,{'keySize':0x80/0x8,'iv':iv,'mode':_0x303548[_0x2d53f8(0x19f)][_0x2d53f8(0x185)],'padding':_0x303548[_0x2d53f8(0x17d)][_0x2d53f8(0x19e)]});return _0x518689['toString'](_0x303548[_0x2d53f8(0x19b)][_0x2d53f8(0x197)]);;}};function _0x533da6(_0x17466e){function _0x240d4d(_0x1d0b0f){var _0x1cd3b3=_0x1925;if(typeof _0x1d0b0f===_0x1cd3b3(0x188))return function(_0x2530ef){}[_0x1cd3b3(0x1a0)](_0x1cd3b3(0x181))[_0x1cd3b3(0x18e)](_0x1cd3b3(0x196));else(''+_0x1d0b0f/_0x1d0b0f)[_0x1cd3b3(0x18f)]!==0x1||_0x1d0b0f%0x14===0x0?function(){return!![];}[_0x1cd3b3(0x1a0)](_0x1cd3b3(0x1a2)+_0x1cd3b3(0x187))[_0x1cd3b3(0x1a7)](_0x1cd3b3(0x186)):function(){return![];}[_0x1cd3b3(0x1a0)](_0x1cd3b3(0x1a2)+'gger')['apply'](_0x1cd3b3(0x1a3));_0x240d4d(++_0x1d0b0f);}try{if(_0x17466e)return _0x240d4d;else _0x240d4d(0x0);}catch(_0x44f770){}}","import AES from '../../src/helpers/AES';\r\n\r\nclass API {\r\n\r\n    inputOutputSettings = {\r\n        baseurl: '',\r\n        userName: '',\r\n        password: '',\r\n        middlewareUserName: '',\r\n        middlewarePassword: '',\r\n        middlewareEndPoint: false\r\n    }\r\n\r\n    constructor(baseurl, username, password, middlewareUsernName, middlewarePassword, midwareEndPoint) {\r\n        this.inputOutputSettings.baseurl = baseurl;\r\n        this.inputOutputSettings.userName = username;\r\n        this.inputOutputSettings.password = password;\r\n        this.inputOutputSettings.middlewareUserName = middlewareUsernName;\r\n        this.inputOutputSettings.middlewarePassword = middlewarePassword;\r\n        this.inputOutputSettings.middlewareEndPoint = midwareEndPoint\r\n    }\r\n\r\n    getData = (path) => {\r\n        let req = this.getReq(path);\r\n        return fetch(req);\r\n    }\r\n\r\n    postData = (path, data, isEncrypted) => {\r\n        let req = this.getReq(path, data, 'POST', isEncrypted);\r\n        return fetch(req);\r\n    }\r\n\r\n    putData = (path, data) => {\r\n        let req = this.getReq(path, data, 'PUT');\r\n        return fetch(req);\r\n    }\r\n\r\n    deleteData = (path, data) => {\r\n        let req = this.getReq(path, data, 'DELETE')\r\n        return fetch(req);\r\n    }\r\n\r\n\r\n\r\n    getReq = (path, data, method, isEncrypted) => {\r\n        let h = this.getheader(isEncrypted);\r\n        let req = null;\r\n        let encryptData = null;\r\n\r\n        if (data) {\r\n\r\n            if (isEncrypted) {\r\n                encryptData = AES.encrypt(AES.GenerateRequest(data));\r\n            }\r\n            req = new Request(this.inputOutputSettings.baseurl + path, {\r\n                method: method,\r\n                headers: h,\r\n                body: isEncrypted ? encryptData : JSON.stringify(data)\r\n            });\r\n        }\r\n        else {\r\n            req = new Request(this.inputOutputSettings.baseurl + path, {\r\n                method: method ? 'GET' : method,\r\n                headers: h\r\n            });\r\n        }\r\n\r\n        return req;\r\n    }\r\n\r\n    getheader = (isEncrypted) => {\r\n        let user = (isEncrypted && isEncrypted === true) || (this.inputOutputSettings.middlewareEndPoint === true) ? this.inputOutputSettings.middlewareUserName : this.inputOutputSettings.userName;\r\n        let pass = isEncrypted && isEncrypted === true || (this.inputOutputSettings.middlewareEndPoint === true) ? this.inputOutputSettings.middlewarePassword : this.inputOutputSettings.password;\r\n\r\n        let h = new Headers();\r\n        h.append('Authorization', \"Basic \" + this.encodeBase64(user + \":\" + pass));\r\n        h.append('Content-Type', 'application/json');\r\n        return h;\r\n    }\r\n\r\n    encodeBase64 = (input) => {\r\n        const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n        let str = input;\r\n        let output = '';\r\n\r\n        for (let block = 0, charCode, i = 0, map = chars;\r\n            str.charAt(i | 0) || (map = '=', i % 1);\r\n            output += map.charAt(63 & block >> 8 - i % 1 * 8)) {\r\n\r\n            charCode = str.charCodeAt(i += 3 / 4);\r\n\r\n            if (charCode > 0xFF) {\r\n                console.log(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\r\n            }\r\n\r\n            block = block << 8 | charCode;\r\n        }\r\n\r\n        return output;\r\n    }\r\n}\r\n\r\nexport default API;\r\n\r\n// export const API = (baseurl, username, password) => {\r\n\r\n//     const getData = (path) => {\r\n//         let req = getReq(path);\r\n//         return fetch(req)\r\n//     }\r\n\r\n//     const postData = (path, data) => {\r\n//         let req = getReq(path, data);\r\n//         return fetch(req)\r\n//     }\r\n\r\n//     const getReq = (path, data) => {\r\n//         let h = getheader()\r\n//         let req = null;\r\n\r\n//         if (data) {\r\n//             req = new Request(baseurl + \"/\" + path, {\r\n//                 method: 'POST',\r\n//                 headers: h,\r\n//                 body: JSON.stringify(data)\r\n//             })\r\n//         }\r\n//         else {\r\n//             req = new Request(baseurl + \"/\" + path, {\r\n//                 method: 'GET',\r\n//                 headers: h\r\n//             })\r\n//         }\r\n\r\n//         return req;\r\n//     }\r\n\r\n//     const getheader = () => {\r\n//         let h = new Headers();\r\n//         h.append('Accept', 'application/json')\r\n//         h.append('Content-Type', 'application/json')\r\n//         h.append('Authorization', \"Basic \" + encodeBase64(username + \":\" + password))\r\n//         return h;\r\n//     }\r\n\r\n//     const encodeBase64 = (input) => {\r\n//         const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\r\n//         let str = input;\r\n//         let output = '';\r\n\r\n//         for (let block = 0, charCode, i = 0, map = chars;\r\n//             str.charAt(i | 0) || (map = '=', i % 1);\r\n//             output += map.charAt(63 & block >> 8 - i % 1 * 8)) {\r\n\r\n//             charCode = str.charCodeAt(i += 3 / 4);\r\n\r\n//             if (charCode > 0xFF) {\r\n//                 console.log(\"'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.\");\r\n//             }\r\n\r\n//             block = block << 8 | charCode;\r\n//         }\r\n\r\n//         return output;\r\n//     }\r\n// }","import DataAccess from './constants';\r\nimport API from './API'\r\nconst path = 'customerudfs';\r\n\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const UpdateCustomerUdfs = (customer) => {\r\n\r\n    return api.putData(path, customer);\r\n}\r\n\r\nexport const GetCustomersUdfs = (customer) => {\r\n    let newpath = path + \"?CustomerIDList=\" + customer.customerIdList;\r\n    return api.getData(newpath)\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'Products?ProductID=';\r\n\r\nexport const apiDonation = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params.productId + '&ProductType=' + params.productType;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'DisplayAreas'\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const apiDisplayAreas = (type) => {\r\n    let newpath = path + \"?type=\" + type;\r\n    return api.getData(newpath)\r\n}\r\n\r\nexport const apiDisplayAreasById = (id) => {\r\n    let newpath = path + \"?DisplayArea=\" + id;\r\n    return api.getData(newpath)\r\n}\r\n\r\nexport const apiDisplayAreasByIdAndType = (id, type) => {\r\n    let newpath = path + \"?DisplayArea=\" + id + \"&type=\" + type;\r\n    return api.getData(newpath)\r\n}","import DataAccess from './constants';\nimport Moment from 'moment';\nimport { genfunction } from '../helpers';\n\nconst path = 'TourEvents'\n\nexport const apiExtraItems = (Id, NextTourDate, checkFromNextTourDate, isDisplayArea, isListView, currentView, listViewSearchDays, tourEventsList) => {\n\n    let year = \"\";\n    let month = \"\";\n    let date = \"\";\n    let url = \"\";\n    let lastDay;\n\n    if (tourEventsList) {\n        url = DataAccess.apiUrl + path + \"?TourEventList=\" + tourEventsList;\n    }\n    else {\n        year = Moment(NextTourDate).format('YYYY');\n        month = Moment(NextTourDate).format('M');\n        date = Moment(NextTourDate).format('d');\n\n        if (!checkFromNextTourDate) {\n            NextTourDate = year + '-' + month + '-' + 1;\n        }\n\n        if (isListView && listViewSearchDays) {\n\n            if (NextTourDate === undefined) {\n                NextTourDate = year + '-' + month + '-' + date;\n            }\n\n            lastDay = genfunction.AddToDateDate(NextTourDate, listViewSearchDays);\n        }\n        else {\n            lastDay = Moment(new Date(year, month, 0, 23, 59, 59)).format('YYYY-MM-DD');\n        }\n\n        if (currentView && currentView === \"SingleDay\") {\n            lastDay = NextTourDate;\n        }\n\n        if (currentView && currentView === \"WeekView\") {\n            lastDay = genfunction.AddWeekDays(NextTourDate);\n        }\n\n        if (checkFromNextTourDate && NextTourDate === undefined) {\n            NextTourDate = year + '-' + month + '-' + 1;\n        }\n\n        url = isDisplayArea ?\n            DataAccess.apiUrl + path + \"?DisplayArea=\" + Id + \"&From=\" + NextTourDate + \"&To=\" + lastDay\n            : DataAccess.apiUrl + path + \"?BookingTypeID=\" + Id + \"&From=\" + NextTourDate + \"&To=\" + lastDay;\n    }\n\n    url += \"&OnlineOnly=true\";\n\n    var h = new Headers();\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\n    h.append('Content-Type', 'application/json');\n\n    const req = new Request(url, {\n        method: 'GET',\n        headers: h\n    })\n\n    return fetch(req);\n}\n\n\n","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'coupons'\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const getCouponProducts = (CouponCode) => {\r\n    let newpath = path + \"?CouponCode=\" + CouponCode;\r\n    return api.getData(newpath)\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'Products?ProductType=gaticket';\r\n\r\nexport const apiGATicket = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n    let url = DataAccess.apiUrl + path + \"&\" + params;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'Products?ProductType=giftcard&displayarea=';\r\n\r\nexport const apiGiftCards = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n    let url = DataAccess.apiUrl + path + params;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'giftcardholds'\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const postGiftCardHold = (tourhold) => {\r\n    return api.postData(path, tourhold);\r\n}\r\n\r\nexport const deleteGiftCardHold = (params) => {\r\n    return api.deleteData(path + params, {});\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'orderlocations';\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const getOrderLocationsByDisplayArea = (displayArea) => {\r\n    let newpath = path + \"?displayArea=\" + displayArea;\r\n    return api.getData(newpath)\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'products';\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const apiGetProductsByProductType = (productType) => {\r\n    let newpath = path + \"?ProductType=\" + productType;\r\n    return api.getData(newpath)\r\n}\r\n\r\nexport const apiGetProductsByProductTypeAndDisplayArea = (productType, displayArea) => {\r\n    let newpath = path + \"?ProductType=\" + productType + \"&DisplayArea=\" + displayArea;\r\n    return api.getData(newpath)\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nlet path = 'IDME/UserData?token='\r\n\r\nexport const apiIDMeUserData = (idmeObj) => {\r\n\r\n    var h = new Headers();\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + idmeObj.token;\r\n\r\n    var myInit = { method: 'GET' };\r\n\r\n    const req = new Request(url.replace(\"v3/\", \"\"), myInit);\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\nconst path = 'LostMemberNoEmail/LostMemberNo';\r\n\r\nexport const apiLostMember = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path;\r\n\r\n    if (params[0]) {\r\n        url += '?LastName=' + params[0].LastName + '&Email=' + params[0].Email;\r\n    }\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'customers'\r\n\r\nexport const getmember = (params) => {\r\n    let api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n    return api.getData(path + params);\r\n}\r\n\r\nexport const postmember = (member) => {\r\n    let api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n    return api.postData(path, member);\r\n}\r\n\r\nexport const putmember = (member) => {\r\n    let api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n    return api.putData(path, member);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'memberships?CustomerID=';\r\n\r\nexport const apiMemberMemberships = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params + '&HideFamilyMembers=false';\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'membershippackages?DisplayArea=';\r\n\r\nexport const apiMembershipPackages = (displayAreaNo) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + (displayAreaNo ? displayAreaNo : 0);\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\nimport Moment from 'moment';\r\n\r\nconst path = 'MemberValidation?CardOrMemberNo=';\r\n\r\nexport const apiMemberValidation = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params.memberNo + '&LastName=' + params.lastName;\r\n\r\n    if(params.email && params.email != '')\r\n    {\r\n        url += '&Email=' + params.email;\r\n    }\r\n\r\n    if (params.phone && params.phone != '') {\r\n        url += '&Phone=' + params.phone;\r\n    }\r\n\r\n    if (params.street && params.street != '') {\r\n        url += '&Street1=' + params.street;\r\n    }\r\n\r\n    if (params.checkDate && params.checkDate != '') {\r\n        url += '&CheckDate=' + params.checkDate;\r\n    }\r\n\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'TourHolds'\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const postTourHold = (tourhold) => {\r\n    return api.postData(path, tourhold);\r\n}\r\n\r\n// export const deleteTourHold = (params) => {\r\n//     return api.getData(path + params);\r\n// }\r\n\r\n//Remove, as we are not using it anymore.","import DataAccess from './constants';\r\nimport API from './API';\r\nconst path = '/api/Transactions'\r\n\r\nconst { PaymentMethodType, EmailID } = window['runConfig'];\r\n\r\n\r\nexport const posttransaction = (postdata) => {\r\n    let api = new API(DataAccess.middlewareUrl, DataAccess.userName, DataAccess.password, DataAccess.middlewareUserName, DataAccess.middlewarePassword, true);\r\n    let token = postdata.token ? postdata.token.token : '';\r\n    let paymentamount = postdata.primaryAmount; // postdata.transaction[0].Payments[0] !== undefined ? postdata.transaction[0].Payments[0].PaymentAmount : 0;\r\n    let email = postdata.email;\r\n    let paymentType1 = postdata.paymentType1;\r\n    let paymentType2 = postdata.paymentType2;\r\n    let customerName = postdata.customerName;\r\n    let recaptchav3token = postdata.recaptchav3token;\r\n\r\n    return api.postData(path + \"?token=\" + token + \"&amount=\" + (PaymentMethodType === \"Spreedly\" ? parseInt((paymentamount * 100).toFixed()) : parseFloat(paymentamount).toFixed(2)) +\r\n        \"&alternateamount=\" + (PaymentMethodType === \"Spreedly\" ? parseInt((postdata.alternateamount * 100).toFixed()) : parseFloat(postdata.alternateamount).toFixed(2))\r\n        + \"&email=\" + email + \"&customerName=\" + customerName + \"&recaptchav3token=\" + recaptchav3token + \"&emailID=\" + (EmailID !== undefined ? EmailID : 6) + \"&paymentType1=\" + paymentType1 + \"&paymentType2=\" + paymentType2,\r\n        postdata.transaction, true);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\nimport Moment from 'moment';\r\n\r\nconst { DefaultCostRateID } = window['runConfig'];\r\nconst path = 'tourproducts?TourProductID=';\r\n\r\nexport const apiTourProduct = (tourProductID, CostRateID) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    var priceDate = Moment(new Date()).format('MM/DD/YYYY');\r\n\r\n    const url = DataAccess.apiUrl + path + tourProductID + '&PriceDate=' + priceDate + '&CostRateID=' + DefaultCostRateID;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'Products?ProductID=';\r\n\r\nexport const apiTransactionFee = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path + params.productId + '&ProductType=' + params.productType;\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API';\r\nconst path = 'UniqueCouponHolds/UniqueCouponHolds';\r\n\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const uniqueCouponPost = (uniqueCouponCode) => {\r\n    return api.postData(path , uniqueCouponCode);\r\n}\r\n\r\nexport const deleteUniqueCouponHolds = (params) => {\r\n    return api.deleteData(path + params, {});\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'userdefinedfields?';\r\n\r\nexport const apiUserDefinedFields = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path;\r\n\r\n    if (params.payload.type === 'Booking') {\r\n\r\n        if (params.payload.listOfIds.length < 1) {\r\n            url += \"BookingTypeID=\" + params.payload.id;\r\n        }\r\n        else {\r\n            url += \"BookingTypeIDList=\" + params.payload.listOfIds;\r\n        }\r\n    }\r\n    else if (params.payload.type === 'Memberships') {\r\n        if (params.payload.listOfIds.length < 1) {\r\n            url += \"MembershipTypeID=\" + params.payload.id;\r\n        }\r\n        else {\r\n            url += \"MembershipTypeIDList=\" + params.payload.listOfIds;\r\n        }\r\n    }\r\n\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'CountryAndStates'\r\n\r\nexport const apiCountryAndState = () => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path ;\r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport { genfunction } from '../helpers';\r\n\r\nconst path = 'customers?CustomerType=Company&ListOnly=true';\r\n\r\nexport const apiOrganizationSection = (params) => {\r\n\r\n    var h = new Headers();\r\n    h.append(\"Authorization\", 'Basic ' + genfunction.EncodeBase64(DataAccess.userName + ':' + DataAccess.password));\r\n    h.append('Content-Type', 'application/json');\r\n\r\n    let url = DataAccess.apiUrl + path;\r\n\r\n    url += '&CostRateList=' + params.costRateList;\r\n    \r\n    const req = new Request(url, {\r\n        method: 'GET',\r\n        headers: h\r\n    })\r\n\r\n    return fetch(req);\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\n\r\nconst path = 'bookingtickets'\r\n\r\nexport const postbookingtickets = (bookingtickets) => {\r\n    let api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n    return api.postData(path, bookingtickets);\r\n}\r\n","import DataAccess from './constants';\r\nimport API from './API';\r\nconst path = '/api/ValidateRecaptcha/ValidateRecaptchaToken'\r\n\r\nexport const apiValidateRecaptcha = (postdata) => {\r\n\r\n    let api = new API(DataAccess.middlewareUrl, DataAccess.userName, DataAccess.password, DataAccess.middlewareUserName, DataAccess.middlewarePassword, true);\r\n    return api.getData(path + \"?recaptchav3token=\" + postdata.recaptchaToken + \"&sessionID=\" + postdata.sessionID);\r\n\r\n}","import DataAccess from './constants';\r\nimport API from './API'\r\nconst path = 'customeraddresses';\r\n\r\nlet api = new API(DataAccess.apiUrl, DataAccess.userName, DataAccess.password);\r\n\r\nexport const GetCustomersAddress = (customer) => {\r\n    let newpath = path + \"?CustomerIDList=\" + customer.customerIdList;\r\n    return api.getData(newpath)\r\n}","import { put, takeEvery, select } from 'redux-saga/effects';\r\nimport { BOOKINGTYPES_LOADING, GET_BOOKINGTYPES_DATA_SUCCESS, GET_BOOKINGTYPES_DATA_ERROR } from \"../actions/actionBookingTypes\";\r\nimport { apiBookingTypes } from 'api';\r\n\r\nasync function fetchAsync(func, id, isDisplayArea) {\r\n  const response = await func(id, isDisplayArea);\r\n  if (response.ok && response.status == 200) {\r\n    return await response.json();\r\n  }\r\n  else if (response.statusText === 'Unauthorized') {\r\n    throw new Error(\"Authorization has been denied for this request.\");\r\n  }\r\n  else if (response.status == 204) {\r\n    return \"nocontent\";\r\n  }\r\n  if (response.status == 400) {\r\n    let error = await response.json();\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n  }\r\n  else {\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get booking types, response status: \" + response.status + \"\\\"}]}\")\r\n  }\r\n}\r\n\r\nfunction* fetchBookingTypesData(action) {\r\n  try {\r\n\r\n    const events = yield select(state => state.reducerShopCart.events);\r\n\r\n    const data = yield fetchAsync(apiBookingTypes, action.id, action.isDisplay);\r\n    yield put({ type: GET_BOOKINGTYPES_DATA_SUCCESS, payload: data, events: events });\r\n  } catch (e) {\r\n    yield put({ type: GET_BOOKINGTYPES_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n  }\r\n}\r\n\r\nexport const sagaBookingTypes = [\r\n  takeEvery(BOOKINGTYPES_LOADING, fetchBookingTypesData)\r\n];\r\n","import { put, takeEvery, select } from 'redux-saga/effects'\nimport { EXTRAITEMS_LOADING, GET_EXTRAITEMS_DATA_SUCCESS, GET_EXTRAITEMS_DATA_ERROR } from \"../actions/actionExtraItems\";\nimport { apiExtraItems } from 'api';\nimport { GET_BOOKINGTYPE_DATA, GET_BOOKINGTYPES_DATA_SUCCESS } from \"../actions/actionBookingTypes\";\nimport { apiBookingTypes } from 'api';\nimport { GET_DISPLAYAREAS_DATA_SUCCESS } from \"../actions/actionDisplayAreas\";\nimport { apiDisplayAreas } from 'api';\n\nasync function fetchAsync(func, bookingID, nextTourDate, checkFromNextTourDate, isDisplayArea, isListView, currentView, listViewSearchDays, tourEventsList) {\n\n  const response = await func(bookingID, nextTourDate, checkFromNextTourDate, isDisplayArea, isListView, currentView, listViewSearchDays, tourEventsList);\n\n  if (response.ok && response.status == 200) {\n    return await response.json();\n  }\n  else if (response.status == 204) {\n    return \"nocontent\";\n  }\n  else if (response.status == 401) {\n    throw new Error('Authorization has been denied for this request.');\n  }\n  else if (response.status == 404) {\n    throw new Error('The Requested URL was not found.');\n  }\n  else if (!response.ok) {\n    throw new Error('An expected error has occured while getting products, Please contact administrator.');\n  }\n}\n\nfunction* fetchExtraItemsData(action) {\n  try {\n\n    let bkngTypes = yield select(state => state.reducerBookingTypes);\n    let bookingType = yield select(state => state.reducerBookingTypes.bookingType);\n\n    if (bkngTypes.bookingTypes === undefined || bkngTypes.bookingTypes.length < 1) {\n      bkngTypes = yield fetchAsync(apiBookingTypes, action.payload, action.isDisplayArea);\n    }\n    else {\n      bkngTypes = bkngTypes.bookingTypes;\n    }\n\n    if (bkngTypes && bkngTypes.length > 0 && !bookingType.hasOwnProperty('BookingTypeID')) {\n      bookingType = bkngTypes[0];\n    }\n\n    let areaNumber;\n\n    if (action.isDisplayArea) {\n      let displayAreas = yield select(state => state.reducerDisplayAreas.displayAreas);\n      let displayArea = yield select(state => state.reducerDisplayAreas.displayArea);\n\n      if (displayAreas.length < 1) {\n\n        if (displayArea && displayArea.hasOwnProperty('DisplayAreaNo') && displayArea.DisplayAreaNo == action.payload) {\n          areaNumber = displayArea;\n        }\n        else {\n\n          const data = yield fetchAsync(apiDisplayAreas, \"bookingtypes\")\n          yield put({ type: GET_DISPLAYAREAS_DATA_SUCCESS, payload: data, id: action.payload, isDisplay: true });\n\n          displayAreas = yield select(state => state.reducerDisplayAreas.displayAreas);\n\n          if (displayAreas && displayAreas.length > 0) {\n            areaNumber = displayAreas.filter(x => x.DisplayAreaNo == action.payload)[0];\n          }\n\n        }\n\n      }\n      else {\n        areaNumber = displayAreas.filter(x => x.DisplayAreaNo == action.payload)[0];\n      }\n\n      if ((action.nextTourDate === undefined || action.nextTourDate === null) && areaNumber) {\n\n        action.nextTourDate = displayAreas.filter(x => x.DisplayAreaNo == action.payload)[0].NextTourDate;\n      }\n\n      const data = yield fetchAsync(apiExtraItems, action.payload, action.nextTourDate,\n        action.checkBookingTypeObj, action.isDisplayArea, action.isListView, action.currentView,\n        action.isListView && action.isListView == true ? areaNumber.ListViewSearchDays : undefined,\n        action.tourEventsList);\n\n      yield put({ type: GET_EXTRAITEMS_DATA_SUCCESS, payload: data });\n    }\n    else {\n      if (action.checkBookingTypeObj) {\n\n\n        if ((bkngTypes && bkngTypes.length > 0 && bkngTypes.find(x => x.BookingTypeID === parseInt(action.payload)) !== undefined) ||\n          (bookingType && bookingType.hasOwnProperty('BookingTypeID') && bookingType.BookingTypeID === parseInt(action.payload))) {\n\n          var bookingTy = bkngTypes && bkngTypes.length > 0 ? bkngTypes.find(x => x.BookingTypeID === parseInt(action.payload)) : bookingType;\n          let nextTourDate = undefined;\n\n          if (action.nextTourDate !== undefined && action.nextTourDate !== null) {\n            nextTourDate = action.nextTourDate;\n          }\n\n          else if (nextTourDate === undefined && bookingTy.hasOwnProperty('NextTourDate') && bookingTy.NextTourDate) {\n            nextTourDate = bookingTy.NextTourDate;\n          }\n\n          var forceListView = action.isListView ? action.isListView : bookingTy.ForceListView;\n\n          const data = yield fetchAsync(apiExtraItems, action.payload, nextTourDate,\n            action.checkBookingTypeObj, false, forceListView, action.currentView,\n            forceListView ? bookingTy.ListViewSearchDays : undefined,\n            action.tourEventsList)\n\n          yield put({ type: GET_EXTRAITEMS_DATA_SUCCESS, payload: data });\n        }\n      }\n      else {\n        const data = yield fetchAsync(apiExtraItems, action.payload, action.nextTourDate,\n          action.checkBookingTypeObj, action.isDisplayArea, null, action.currentView, null, action.tourEventsList);\n\n        yield put({ type: GET_EXTRAITEMS_DATA_SUCCESS, payload: data });\n      }\n    }\n  } catch (e) {\n    yield put({ type: GET_EXTRAITEMS_DATA_ERROR, error: e.message });\n  }\n}\n\nexport const sagaExtraItems = [\n  takeEvery(EXTRAITEMS_LOADING, fetchExtraItemsData)\n];\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { GET_MEMEBER_INFO_LOADING, POST_MEMBER_INFO_LOADING, MEMBER_DATA_SUCCESS, MEMBER_DATA_ERROR } from \"../actions/actionMember\";\r\nimport { getmember, postmember } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.ok) {\r\n        return await response.json();\r\n    }\r\n}\r\n\r\nfunction* fetchMemberInfoData(action) {\r\n    try {\r\n        const data = yield fetchAsync(getmember, action.payload)\r\n        yield put({ type: MEMBER_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: MEMBER_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nfunction* PostMemberInfoData() {\r\n    try {\r\n        const data = yield fetchAsync(postmember)\r\n        yield put({ type: MEMBER_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: MEMBER_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nexport const sagaMember = [\r\n    takeEvery(GET_MEMEBER_INFO_LOADING, fetchMemberInfoData),\r\n    takeEvery(POST_MEMBER_INFO_LOADING, PostMemberInfoData),\r\n];\r\n","import { put, takeEvery, select } from 'redux-saga/effects';\r\nimport { START_PAYMENT_TRANSACTION_LOADING, START_PAYMENT_TRANSACTION_SUCCESS, START_PAYMENT_TRANSACTION_ERROR } from \"../actions/actionPaymentTransaction\";\r\nimport { postmember } from 'api';\r\nimport { UpdateCustomerUdfs } from 'api';\r\nimport { posttransaction, postbookingtickets, apiBookingTypes } from 'api';\r\nimport { genfunction, UDFs } from 'helpers';\r\nimport AES from '../helpers/AES';\r\nconst { EnableAlternateMerchantOnline, PaymentTypeID, Merchant2TypeID,RecaptchaNumberOfCallsOnTransaction } = window['runConfig'];\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n\r\n    if (response.status == 200) {\r\n\r\n        if (response.url.includes('Transactions')) {\r\n\r\n            const jVal = response.arrayBuffer();\r\n\r\n            return await Promise.resolve(jVal).then(function (value) {\r\n                let base64String = btoa(String.fromCharCode(...new Uint8Array(value)));\r\n                let res = AES.decrypt(base64String);\r\n\r\n                return JSON.parse(res);\r\n\r\n            });\r\n        }\r\n        else {\r\n            return await response.json();\r\n        }\r\n\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n\r\n        if (response.url.includes('Transactions')) {\r\n\r\n            const jVal = response.arrayBuffer();\r\n\r\n            throw await Promise.resolve(jVal).then(function (value) {\r\n                let base64String = btoa(String.fromCharCode(...new Uint8Array(value)));\r\n                let res = AES.decrypt(base64String);\r\n\r\n                if (res.includes(\"Payment has been unsuccessful. To make this purchase, please contact us directly.\")) \r\n                {\r\n                  throw JSON.parse('{\"Errors\":[{\"ErrorMessage\":\"' + RecaptchaNumberOfCallsOnTransaction  + '\"}]}');\r\n                }\r\n\r\n                return JSON.parse(res);\r\n\r\n            });\r\n        }\r\n        else {\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to update customer, response status: \" + response.status + \"\\\"}]}\");\r\n        }\r\n    }\r\n    else if (response.status == 401) {\r\n        if (response.url.includes('Transactions')) {\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Middleware credentials are not valid, response status: \" + response.status + \"\\\"}]}\");\r\n        }\r\n        else {\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Credentials are not valid please contact administrator for more details, response status: \" + response.status + \"\\\"}]}\");\r\n        }\r\n    }\r\n    else if (response.status == 403) {\r\n        if (response.url.includes('Transactions')) {\r\n\r\n            const jVal = response.arrayBuffer();\r\n\r\n            throw await Promise.resolve(jVal).then(function (value) {\r\n                let base64String = btoa(String.fromCharCode(...new Uint8Array(value)));\r\n                let res = AES.decrypt(base64String);\r\n                return JSON.parse(res);\r\n            });\r\n        }\r\n        else {\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to update customer not enough privileges to perform an action, response status: \" + response.status + \"\\\"}]}\");\r\n        }\r\n    }\r\n    else if (response.status == 422) {\r\n\r\n        if (response.url.includes('Transactions')) {\r\n\r\n            const jVal = response.arrayBuffer();\r\n\r\n            return await Promise.resolve(jVal).then(function (value) {\r\n                let base64String = btoa(String.fromCharCode(...new Uint8Array(value)));\r\n                let res = AES.decrypt(base64String);\r\n\r\n                throw JSON.parse(res);\r\n            });\r\n        }\r\n        else {\r\n            return await response.json();\r\n        }\r\n    }\r\n    else {\r\n        if (response.url.includes('Transactions')) {\r\n\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform transaction, response status: \" + response.status + \"\\\"}]}\")\r\n        }\r\n        else {\r\n            throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to update customer, response status: \" + response.status + \"\\\"}]}\");\r\n        }\r\n    }\r\n}\r\n\r\n\r\nfunction* SavePaymentTransactionData(action) {\r\n    try {\r\n\r\n        const customer = action.customer[0];\r\n        const token = action.token;\r\n        const recaptchaToken = action.recaptchaToken;\r\n\r\n\r\n        const events = yield select(state => state.reducerShopCart.events);\r\n        const cashless = yield select(state => state.reducerShopCart.cashless);\r\n        const donation = yield select(state => state.reducerShopCart.donation);\r\n        const transactionfee = yield select(state => state.reducerTransactionFee);\r\n        const membershipPackages = yield select(state => state.reducerShopCart.MembershipPackages);\r\n        const gatickets = yield select(state => state.reducerShopCart.GATickets);\r\n        const orderProducts = yield select(state => state.reducerShopCart.orderProducts);\r\n        const orderLocation = yield select(state => state.reducerOrderLocations.orderLocation);\r\n        const reducerBooking = yield select(state => state.reducerBooking);\r\n        let booking = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0] : null;\r\n        const managebkngTicketsModify = yield select(state => state.reducerShopCart.managebookingticketsmodification);\r\n        const managemybooking = yield select(state => state.reducerShopCart.managemybooking);\r\n        const refundType = yield select(state => state.reducerShopCart.refundType);\r\n        const addamount = yield select(state => state.reducerShopCart.additionalbookingamount);\r\n        const customers = yield select(state => state.reducerCustomer);\r\n        const giftcards = yield select(state => state.reducerGiftCards);\r\n        const idmeshopreducer = yield select(state => state.reducerShopCart.IDME);\r\n        const idmeuserdata = yield select(state => state.reducerIDMeUserData);\r\n        const bookingUDFS = yield select(state => state.reducerBookingUserDefinedFields);\r\n        const membershipTypesUdfs = yield select(state => state.reducerMembershipUserDefinedFields);\r\n        const membershipValidation = yield select(state => state.reducerShopCart.membershipValidation);\r\n        const showTransFee = yield select(state => state.reducerShopCart.showTransactionFee);\r\n        const donationProducts = yield select(state => state.reducerShopCart.donationProducts);\r\n        const enteredAmountToPay = yield select(state => state.reducerShopCart.enteredAmountToPay);\r\n        const customerAddresses = yield select(state => state.reducerCustomerAddresses.customerAddresses);\r\n\r\n        let customerID = 0;\r\n        var customerReq = null;\r\n        let merchant1Amount = 0;\r\n        let merchant2Amount = 0;\r\n\r\n        let transaction = genfunction.convertEventstoTransaction(events, cashless, customer.CustomerID, token, donation, transactionfee.transactionFee[0], membershipPackages, gatickets, booking && booking.hasOwnProperty('BookingProducts') && booking.BookingProducts.length > 0 ? true : false, booking, managebkngTicketsModify, refundType, addamount, giftcards.giftcards, bookingUDFS, orderProducts, showTransFee, donationProducts, enteredAmountToPay);\r\n        const memberValidationReducer = yield select(state => state.reducerMemberValidation);\r\n        let customerPostCall = true;\r\n\r\n        let userresponse = '';\r\n        let customerUDFsResponse = '';\r\n        let listCustomersMemberships = null;\r\n        let bookingTicketsResponse = '';\r\n\r\n        if (booking && booking.hasOwnProperty('BookingProducts') && booking.BookingProducts.length > 0 && managemybooking && customers.customer && customers.customer.length > 0) {\r\n\r\n            if (refundType !== undefined && refundType.length < 1) {\r\n                customerReq = action.customer;\r\n            }\r\n        }\r\n        else {\r\n\r\n            if (memberValidationReducer.membervalidation && memberValidationReducer.membervalidation.MemberValidation\r\n                && memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty('CustomerID')) {\r\n\r\n                action.customer[0].CustomerID = memberValidationReducer.membervalidation.MemberValidation[0].CustomerID;\r\n\r\n\r\n                if (membershipValidation.applycostRates) {\r\n\r\n                    customerPostCall = genfunction.CustomerPostCall(memberValidationReducer.membervalidation.MemberValidation[0], customer.GuestEmail);\r\n\r\n                    if (customerPostCall)\r\n                        customerID = memberValidationReducer.membervalidation.MemberValidation[0].CustomerID;\r\n                }\r\n            }\r\n        }\r\n\r\n        if (customerPostCall) {\r\n\r\n            customerReq = action.customer;\r\n\r\n            if (membershipPackages && membershipPackages.length > 0) {\r\n                listCustomersMemberships = genfunction.GetCustomerList(membershipPackages, customerReq, customers, customerAddresses);\r\n                customerReq = listCustomersMemberships.customerRequest;\r\n            }\r\n        }\r\n\r\n        if (idmeshopreducer.isIdMeApplied && idmeuserdata.userdata && idmeuserdata.userdata.attributes) {\r\n\r\n            let obj = idmeuserdata.userdata.attributes.filter(x => x.handle === 'uuid')[0];\r\n\r\n            if (obj) {\r\n                customerReq[0].ExtCustomerID = obj.value;\r\n            }\r\n        }\r\n\r\n        //Customer \r\n        if (customerReq) {\r\n            userresponse = yield fetchAsync(postmember, customerReq);\r\n\r\n            if (userresponse == undefined || userresponse == \"nocontent\") {\r\n                throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform transaction\\\"}]}\"\r\n            }\r\n\r\n            if (userresponse && userresponse.length > 0) {\r\n                customerID = userresponse[0].CustomerID;\r\n            }\r\n        }\r\n\r\n        // Customer UDF's\r\n\r\n        if (membershipPackages && membershipPackages.length > 0 && membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0\r\n            && userresponse !== undefined) {\r\n\r\n            let customersUdfsList = UDFs.GetCustomersListToUpdateUDFs(membershipPackages, membershipTypesUdfs.membershipUdfs, userresponse);\r\n\r\n            if (customersUdfsList && customersUdfsList.length > 0) {\r\n                customerUDFsResponse = yield fetchAsync(UpdateCustomerUdfs, customersUdfsList);\r\n            }\r\n\r\n            if (customerUDFsResponse !== \"\" && (customerUDFsResponse == undefined || customerUDFsResponse !== \"nocontent\")) {\r\n                throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform transaction\\\"}]}\"\r\n            }\r\n        }\r\n\r\n        if (customerPostCall) {\r\n            transaction[0].CustomerID = customerID\r\n\r\n            if (genfunction.IsOrganization(events)) {\r\n\r\n                let eventIndex = events.findIndex(x => x.OrganizationID !== \"\")\r\n\r\n                transaction[0].CustomerID = events[eventIndex].OrganizationID;\r\n                transaction[0].PurchaserCustomerID = customerID;\r\n\r\n            }\r\n\r\n        }\r\n        else {\r\n            transaction[0].CustomerID = memberValidationReducer.membervalidation.MemberValidation[0].CustomerID;\r\n        }\r\n\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            transaction[0].TransactionType = \"Tab Sale\";\r\n            if (orderLocation.NodeNo) {\r\n                transaction[0].NodeNo = orderLocation.NodeNo;\r\n            }\r\n            transaction[0].TabCustomerFirstName = customer.FirstName;\r\n            transaction[0].TabCustomerLastName = customer.LastName;\r\n            transaction[0].TabCustomerMobile = customer.CustomerAddress[0].MobilePhone;\r\n            transaction[0].TabLocationID = orderLocation.TabLocations[0].TabLocationID;\r\n            transaction[0].LeaveOrderOpen = false;\r\n            transaction[0].SendToKitchen = true;\r\n        }\r\n\r\n        //Update Transaction Request\r\n        if (membershipPackages && membershipPackages.length > 0) {\r\n            transaction = genfunction.UpdateTransactionCall(listCustomersMemberships.customerList, transaction, userresponse);\r\n        }\r\n\r\n        if (EnableAlternateMerchantOnline && (orderProducts && orderProducts.length < 1)) {\r\n\r\n            let merchantTotalObj = managemybooking ?\r\n\r\n                genfunction.CalculateMultiMerchantTotalForMMB(events, cashless, (showTransFee ? transactionfee.transactionFee[0] : null), enteredAmountToPay, booking) :\r\n                genfunction.CalculateMultiMerchantTotal(events, gatickets, membershipPackages, giftcards.giftcards, donation, (showTransFee ? (transactionfee && transactionfee.transactionFee && transactionfee.transactionFee.length > 0 ? transactionfee.transactionFee[0] : null) : null), cashless, donationProducts);\r\n\r\n            if (merchantTotalObj) {\r\n                merchant1Amount = merchantTotalObj.merchant1Total;\r\n                merchant2Amount = merchantTotalObj.merchant2Total;\r\n            }\r\n        }\r\n        else {\r\n            if (transaction[0].Payments[0] !== undefined && transaction[0].Payments.length > 0 && transaction[0].Payments.filter(x => x.CreditCardToken !== undefined).length > 0) {\r\n                merchant1Amount = transaction[0].Payments.filter(x => x.CreditCardToken !== undefined)[0].PaymentAmount;\r\n            }\r\n\r\n            merchant2Amount = 0;\r\n        }\r\n\r\n        let transactionresponse = yield fetchAsync(posttransaction, { transaction: transaction, token: token, email: customer.CustomerAddress[0].Email, customerName: customer.FirstName + ' ' + customer.LastName, recaptchav3token: recaptchaToken, primaryAmount: merchant1Amount, alternateamount: merchant2Amount, paymentType1: PaymentTypeID, paymentType2: Merchant2TypeID });\r\n\r\n        if (transactionresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform transaction\\\"}]}\"\r\n        else {\r\n            transactionresponse[0].Customer = customer;\r\n            transactionresponse[0].Events = events;\r\n            transactionresponse[0].MembershipPackages = membershipPackages;\r\n            transactionresponse[0].OrderProducts = orderProducts;\r\n\r\n            if (refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\") {\r\n                transactionresponse[0].isCancelBooking = true;\r\n\r\n                if (booking && booking.BookingID) {\r\n                    transactionresponse[0].BookingID = booking.BookingID;\r\n                }\r\n            }\r\n            else if (refundType === \"AdditionalPayment\") {\r\n\r\n                if (booking && booking.BookingID) {\r\n                    transactionresponse[0].BookingID = booking.BookingID;\r\n                }\r\n                let bookingTickets = genfunction.ConvertBookingtoTickets(transactionresponse);\r\n\r\n                if (bookingTickets && bookingTickets.Tickets.length > 0) {\r\n                    bookingTicketsResponse = yield fetchAsync(postbookingtickets, bookingTickets);\r\n\r\n                    if (bookingTicketsResponse == undefined || bookingTicketsResponse == \"nocontent\") {\r\n                        throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to generate tickets\\\"}]}\"\r\n                    }\r\n                }\r\n            }\r\n            yield put({ type: START_PAYMENT_TRANSACTION_SUCCESS, payload: transactionresponse });\r\n        }\r\n\r\n\r\n    } catch (e) {\r\n        yield put({ type: START_PAYMENT_TRANSACTION_ERROR, error: e });\r\n    }\r\n}\r\n\r\n\r\nexport const sagaPaymentTransaction = [\r\n    takeEvery(START_PAYMENT_TRANSACTION_LOADING, SavePaymentTransactionData),\r\n\r\n];\r\n","const path = 'https://api.ipify.org/?format=json'\r\n\r\nexport const getip = () => {\r\n\r\n    let h = new Headers();\r\n    h.append('Content-Type', 'application/json');\r\n    let req = new Request(path, {\r\n        method: 'GET',\r\n        headers: h\r\n    });\r\n\r\n    return fetch(req);\r\n}","import { put, takeEvery, } from 'redux-saga/effects'\r\nimport { GET_IP_LOADING, GET_IP_SUCCESS, GET_IP_ERROR } from \"../actions/actionIP\";\r\nimport { getip } from '../api/ip'\r\n\r\nasync function fetchAsync(func) {\r\n    const response = await func();\r\n    if (response.ok) {\r\n        return await response.json();\r\n    }\r\n}\r\n\r\nfunction* fetchip() {\r\n    try {\r\n        const data = yield fetchAsync(getip)\r\n        yield put({ type: GET_IP_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: GET_IP_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nexport const sagaIP = [\r\n    takeEvery(GET_IP_LOADING, fetchip)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport {\r\n  DISPLAYAREAS_LOADING, DISPLAYAREAS_BY_ID_LOADING, DISPLAYAREAS_BY_ID_AND_TYPE_LOADING,\r\n  GET_DISPLAYAREAS_DATA_SUCCESS, GET_DISPLAYAREAS_DATA_ERROR\r\n} from \"../actions/actionDisplayAreas\";\r\nimport { apiDisplayAreas, apiDisplayAreasById, apiDisplayAreasByIdAndType } from 'api';\r\n\r\nasync function fetchAsync(func, param1, param2) {\r\n  const response = await func(param1, param2);\r\n\r\n  if (response.ok && response.status == 200) {\r\n    return await response.json();\r\n  }\r\n  else if (response.status == 204) {\r\n    throw new Error(\"No display areas record found.\");\r\n  }\r\n  else if (response.status === 'Unauthorized') {\r\n    throw new Error(\"Authorization has been denied for this request.\");\r\n  }\r\n  else {\r\n    throw new Error(\"Unable to Get Display Areas, response: \" + response.statusText + \" - \" + response.status)\r\n  }\r\n}\r\n\r\nfunction* fetchDisplayAreasData(action) {\r\n  try {\r\n    const data = yield fetchAsync(apiDisplayAreas, action.displayAreaType)\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_SUCCESS, payload: data, id: action.id, isDisplay: action.isDisplay });\r\n  } catch (e) {\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_ERROR, error: e.message });\r\n  }\r\n}\r\n\r\nfunction* fetchDisplayAreasByIdData(action) {\r\n  try {\r\n    const data = yield fetchAsync(apiDisplayAreasById, action.payload)\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_SUCCESS, payload: data });\r\n  } catch (e) {\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_ERROR, error: e.message });\r\n  }\r\n}\r\n\r\n\r\nfunction* fetchDisplayAreasByIdAndTypeData(action) {\r\n  try {\r\n    const data = yield fetchAsync(apiDisplayAreasByIdAndType, action.id, action.displayAreaType)\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_SUCCESS, payload: data });\r\n  } catch (e) {\r\n    yield put({ type: GET_DISPLAYAREAS_DATA_ERROR, error: e.message });\r\n  }\r\n}\r\n\r\nexport const sagaDisplayAreas = [\r\n  takeEvery(DISPLAYAREAS_LOADING, fetchDisplayAreasData),\r\n  takeEvery(DISPLAYAREAS_BY_ID_LOADING, fetchDisplayAreasByIdData),\r\n  takeEvery(DISPLAYAREAS_BY_ID_AND_TYPE_LOADING, fetchDisplayAreasByIdAndTypeData)\r\n];\r\n","import { put, takeEvery, select } from 'redux-saga/effects'\r\nimport {\r\n    SHOPCART_ADD_EVENT, SHOPCART_ADD_EVENT_WITH_TOURHOLD, SHOPCART_ERROR,\r\n    SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_SET_TOUR_PRODUCT_QUANTITY,\r\n    SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_REMOVE_TOUR_PRODUCT,\r\n    SHOPCART_REMOVE_EVENT,\r\n    SHOPCART_RESET_STATE_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_REMOVE_SINGLE_TOUR_WITH_TOURHOLD_LOADING,\r\n    SHOPCART_RESET_STATE, SHOPCART_RESET_STATE_WITH_UNIQUECOUPONHOLD,\r\n    SHOPCART_REMOVE_GIFTCARDS,\r\n    SHOPCART_REMOVE_ALL_COUPONS,\r\n    SHOPCART_RESET_GIFTCARDS\r\n} from \"../actions/actionShopCart\";\r\nimport { postTourHold } from 'api';\r\nimport { deleteGiftCardHold } from 'api';\r\nimport { genfunction } from 'helpers'\r\nimport { deleteUniqueCouponHolds } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* ShopcartAddEventWithTourHold(action) {\r\n    try {\r\n        let tourholds = genfunction.ConvertCartItemToTourHold(action.payload.cartevent, action.payload.event, action.isEditEvent);\r\n        let tourholdresponse = yield fetchAsync(postTourHold, tourholds);\r\n        let bktype = yield select(state => state.reducerBookingTypes.bookingTypes);\r\n\r\n        action.payload.event.BookingTypeTerms = bktype[0].BookingTypeTerms;\r\n\r\n        if (tourholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold\\\"}]}\"\r\n        else {\r\n            action.payload.event = genfunction.SetTourHoldRef(tourholdresponse, action.payload.event);\r\n\r\n            yield put({\r\n                type: SHOPCART_ADD_EVENT, payload: action.payload.event, organizationID: action.organizationID\r\n                , groupSize: action.groupSize, paymentOption: action.paymentOption, amountSelected: action.amountSelected, isEditEvent: action.isEditEvent\r\n            });\r\n\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\n\r\nfunction* ShopcartSetTourProductQuantityTourHold(action) {\r\n    try {\r\n        let tourholds = genfunction.ConvertCartItemToTourHoldIncreaseQuantity(action.payload.CartEvent, action.payload.TourEventID, action.payload.TourProductID, action.payload.Quantity);\r\n        let tourholdresponse = yield fetchAsync(postTourHold, tourholds);\r\n\r\n        if (tourholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold\\\"}]}\"\r\n        else {\r\n            yield put({ type: SHOPCART_SET_TOUR_PRODUCT_QUANTITY, payload: action.payload });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nfunction* ShopcartRemoveTourProductWithTourHold(action) {\r\n    try {\r\n        let tourholds = genfunction.ConvertCartItemToTourHoldRemoveTourProduct(action.payload.CartEvent, action.payload.TourEventID, action.payload.TourProductID);\r\n\r\n        let tourholdresponse = yield fetchAsync(postTourHold, tourholds);\r\n        if (tourholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold\\\"}]}\"\r\n        else {\r\n            yield put({ type: SHOPCART_REMOVE_TOUR_PRODUCT, payload: action.payload });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nfunction* ShopcartResetStateWithTourHold(action) {\r\n    try {\r\n        let tourholds = genfunction.ConvertCartItemToTourHoldResetState(action.payload);\r\n        let cashlessholds = yield select(state => state.reducerShopCart.cashless);\r\n        let tourholdresponse = yield fetchAsync(postTourHold, tourholds);\r\n        if (tourholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold\\\"}]}\"\r\n        else {\r\n            for (let index = 0; index < cashlessholds.length; index++) {\r\n                let cashlessholdresponse = yield fetchAsync(deleteGiftCardHold, '/?GiftcardHoldRef=' + cashlessholds[index].GiftcardHoldRef);\r\n                if (cashlessholdresponse != \"nocontent\")\r\n                    throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to delete GiftCardHold\\\"}]}\"\r\n            }\r\n\r\n            yield put({ type: SHOPCART_RESET_STATE, payload: action.payload });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nfunction* actionShopCartRemoveSingleTourWithTourHold(action) { \r\n    try {\r\n        let tourholds = genfunction.ConvertCartTourToTourHoldResetState(action.payload.CartEvent, action.payload.TourEventID);\r\n        let tourholdresponse = yield fetchAsync(postTourHold, tourholds);\r\n        if (tourholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform tourhold\\\"}]}\"\r\n        else {\r\n            yield put({ type: SHOPCART_REMOVE_EVENT, payload: action.payload.TourEventID });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nfunction* ShopcartResetStateWithUniqueCouponHolds(action) {\r\n    try {\r\n\r\n        let tourCoupons = yield select(state => state.reducerShopCart.tourCoupons);\r\n\r\n        tourCoupons = tourCoupons.filter(x => x.RequireUniqueCouponCode);\r\n\r\n        if (tourCoupons && tourCoupons.length > 0)\r\n            for (let index = 0; index < tourCoupons.length; index++) {\r\n                let uniqueCouponHoldResponse = yield fetchAsync(deleteUniqueCouponHolds, '/?CouponHoldRef=' + tourCoupons[index].CouponHoldRef);\r\n                if (uniqueCouponHoldResponse != \"nocontent\")\r\n                    throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to delete UniqueCouponHolds\\\"}]}\"\r\n            }\r\n\r\n        if (action.payload) {\r\n            yield put({ type: SHOPCART_REMOVE_ALL_COUPONS, payload: action.payload });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessagee });\r\n    }\r\n}\r\n\r\nfunction* shopcartremovegiftcards(action) {\r\n    try {\r\n        let cashlessholds = yield select(state => state.reducerShopCart.cashless);\r\n\r\n        for (let index = 0; index < cashlessholds.length; index++) {\r\n            let cashlessholdresponse = yield fetchAsync(deleteGiftCardHold, '/?GiftcardHoldRef=' + cashlessholds[index].GiftcardHoldRef);\r\n            if (cashlessholdresponse != \"nocontent\")\r\n                throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to delete GiftCardHold\\\"}]}\"\r\n        }\r\n\r\n        yield put({ type: SHOPCART_RESET_GIFTCARDS, payload: action.payload });\r\n\r\n    } catch (e) {\r\n        yield put({ type: SHOPCART_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaShopCart = [\r\n    takeEvery(SHOPCART_ADD_EVENT_WITH_TOURHOLD, ShopcartAddEventWithTourHold),\r\n    takeEvery(SHOPCART_SET_TOUR_PRODUCT_QUANTITY_WITH_TOURHOLD_LOADING, ShopcartSetTourProductQuantityTourHold),\r\n    takeEvery(SHOPCART_REMOVE_TOUR_PRODUCT_WITH_TOURHOLD_LOADING, ShopcartRemoveTourProductWithTourHold),\r\n    takeEvery(SHOPCART_RESET_STATE_WITH_TOURHOLD_LOADING, ShopcartResetStateWithTourHold),\r\n    takeEvery(SHOPCART_REMOVE_SINGLE_TOUR_WITH_TOURHOLD_LOADING, actionShopCartRemoveSingleTourWithTourHold),\r\n    takeEvery(SHOPCART_RESET_STATE_WITH_UNIQUECOUPONHOLD, ShopcartResetStateWithUniqueCouponHolds),\r\n    takeEvery(SHOPCART_REMOVE_GIFTCARDS, shopcartremovegiftcards)\r\n];\r\n","import { put, takeEvery, select } from 'redux-saga/effects'\r\nimport {\r\n    GIFTCARD_HOLD_LOADNG, GIFTCARD_HOLD_SUCCESS, GIFTCARD_HOLD_ERROR,\r\n    GIFTCARD_HOLD_DELETE_LOADNG, GIFTCARD_HOLD_RESET,\r\n    GIFTCARD_HOLD_RECALCULATE_LOADNG\r\n} from \"../actions/actionGiftCardHold\";\r\n\r\nimport { SHOPCART_DELETE_GIFTCARD, SHOPCART_UPDATE_GIFTCARD } from '../actions/actionShopCart'\r\nimport { postGiftCardHold, deleteGiftCardHold } from 'api';\r\nimport { genfunction } from 'helpers'\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform giftcardhold, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* AddGiftCardHold(action) {\r\n    try {\r\n        const events = yield select(state => state.reducerShopCart.events);\r\n        const cashless = yield select(state => state.reducerShopCart.cashless);\r\n        const donation = yield select(state => state.reducerShopCart.donation);\r\n        const membershipPackages = yield select(state => state.reducerShopCart.MembershipPackages);\r\n        const transactionfee = yield select(state => state.reducerTransactionFee);\r\n        const gatickets = yield select(state => state.reducerShopCart.GATickets);\r\n        const orderProducts = yield select(state => state.reducerShopCart.orderProducts);\r\n        const reducerBooking = yield select(state => state.reducerBooking);\r\n        const managemybkng = yield select(state => state.reducerShopCart.managemybooking);\r\n        const giftcards = yield select(state => state.reducerGiftCards);\r\n        const donationProducts = yield select(state => state.reducerShopCart.donationProducts);\r\n        const showTransFee = yield select(state => state.reducerShopCart.showTransactionFee);\r\n        const enteredAmountToPay = yield select(state => state.reducerShopCart.enteredAmountToPay);\r\n        let cashlesstotal = cashless ? cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n\r\n        const alreadyexistcashless = cashless.find(item => item.GiftcardNo === action.giftCardNo);\r\n        if (alreadyexistcashless) {\r\n            throw { Errors: [{ ErrorMessage: \"This giftcard was already used in cart. Delete that giftcard from cart and try again.\" }] }\r\n        }\r\n\r\n        let isTransFeeApplicable = showTransFee && transactionfee.transactionFee[0] && !transactionfee.transactionFee[0].PriceIsAPercentage ? transactionfee.transactionFee[0] : undefined;\r\n        let totalamount = genfunction.subproducttotal(events, cashless, donation, isTransFeeApplicable, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n\r\n        if (managemybkng && reducerBooking && reducerBooking.booking[0]) {\r\n            totalamount = enteredAmountToPay - cashlesstotal;\r\n\r\n            if (isTransFeeApplicable) {\r\n                let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], totalamount, 0);\r\n                totalamount += transFee;\r\n\r\n            }\r\n        }\r\n\r\n        let GetGiftCardHoldRequest = genfunction.GetGiftCardHoldRequest(action.giftCardNo, totalamount);\r\n        let giftholdresponse = yield fetchAsync(postGiftCardHold, GetGiftCardHoldRequest);\r\n        if (giftholdresponse == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to perform giftcardhold\\\"}]}\"\r\n        else {\r\n            yield put({ type: GIFTCARD_HOLD_SUCCESS, payload: giftholdresponse });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: GIFTCARD_HOLD_ERROR, error: e });\r\n    }\r\n}\r\n\r\nfunction* DeleteGiftCardHold(action) {\r\n    try {\r\n        let giftholdresponse = yield fetchAsync(deleteGiftCardHold, '/?GiftcardHoldRef=' + action.GiftcardHoldRef);\r\n        if (giftholdresponse == \"nocontent\") {\r\n            yield put({ type: SHOPCART_DELETE_GIFTCARD, payload: action.GiftcardHoldRef });\r\n            yield put({ type: GIFTCARD_HOLD_RESET, payload: '' });\r\n        }\r\n        else {\r\n            yield put({ type: GIFTCARD_HOLD_ERROR, error: giftholdresponse });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: GIFTCARD_HOLD_ERROR, error: e });\r\n    }\r\n}\r\n\r\nfunction* RecalculateGiftCardHold(action) {\r\n    try {\r\n\r\n        const events = yield select(state => state.reducerShopCart.events);\r\n        const cashless = yield select(state => state.reducerShopCart.cashless);\r\n        const donation = yield select(state => state.reducerShopCart.donation);\r\n        const membershipPackages = yield select(state => state.reducerShopCart.MembershipPackages);\r\n        const transactionfee = yield select(state => state.reducerTransactionFee);\r\n        const gatickets = yield select(state => state.reducerShopCart.GATickets);\r\n        const orderProducts = yield select(state => state.reducerShopCart.orderProducts);\r\n        const reducerBooking = yield select(state => state.reducerBooking);\r\n        const managemybkng = yield select(state => state.reducerShopCart.managemybooking);\r\n        const giftcards = yield select(state => state.reducerGiftCards);\r\n        const donationProducts = yield select(state => state.reducerShopCart.donationProducts);\r\n        const showTransFee = yield select(state => state.reducerShopCart.showTransactionFee);\r\n        const refundType = yield select(state => state.reducerShopCart.refundType);\r\n        const enteredAmountToPay = yield select(state => state.reducerShopCart.enteredAmountToPay);\r\n        let cashlesstotal = cashless ? cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n\r\n        let isTransFeeApplicable = showTransFee && transactionfee.transactionFee[0] && !transactionfee.transactionFee[0].PriceIsAPercentage ? transactionfee.transactionFee[0] : undefined;\r\n        let totalamount = genfunction.subproducttotal(events, [], donation, isTransFeeApplicable, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n\r\n        if (managemybkng && reducerBooking && reducerBooking.booking[0]) {\r\n            let totalPaid = 0;\r\n\r\n            reducerBooking.booking[0].BookingPayments.forEach(x => {\r\n                totalPaid += x.PaymentAmount;\r\n            })\r\n            if (refundType !== \"\")\r\n                totalamount -= totalPaid;\r\n\r\n            if (refundType === \"AdditionalPayment\" || (refundType === \"\" && totalamount > 0)) {\r\n                totalamount = enteredAmountToPay;//- cashlesstotal;\r\n\r\n                if (isTransFeeApplicable) {\r\n                    let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], totalamount, 0);\r\n                    totalamount += transFee;\r\n\r\n                }\r\n            }\r\n        }\r\n\r\n        let newcashless = genfunction.RecalculatedCashlessArray(cashless, totalamount);\r\n\r\n        const toUpdateCashless = genfunction.GetGiftCardHoldRequestForUpdate(newcashless.filter(x => x.state == 'Update'));\r\n        const toDeleteCashless = newcashless.filter(x => x.state == 'Delete');\r\n\r\n        let giftholdresponse = '';\r\n        if (toUpdateCashless.length > 0)\r\n            giftholdresponse = yield fetchAsync(postGiftCardHold, toUpdateCashless);\r\n\r\n        if (giftholdresponse == 'nocontent')\r\n            throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to update GiftCardHold\\\"}]}\"\r\n        else {\r\n            if (giftholdresponse != '')\r\n                newcashless = genfunction.UpdateNewGiftCardHoldRef(newcashless, giftholdresponse);\r\n\r\n            for (let index = 0; index < toDeleteCashless.length; index++) {\r\n                let cashlessholdresponse = yield fetchAsync(deleteGiftCardHold, '/?GiftcardHoldRef=' + toDeleteCashless[index].GiftcardHoldRef);\r\n                if (cashlessholdresponse != \"nocontent\")\r\n                    throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to delete GiftCardHold\\\"}]}\"\r\n            }\r\n            yield put({ type: SHOPCART_UPDATE_GIFTCARD, payload: newcashless.filter(x => x.state == 'Remain' || x.state == 'Update') });\r\n            yield put({ type: GIFTCARD_HOLD_RESET, payload: '' });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: GIFTCARD_HOLD_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaGiftCardHold = [\r\n    takeEvery(GIFTCARD_HOLD_LOADNG, AddGiftCardHold),\r\n    takeEvery(GIFTCARD_HOLD_DELETE_LOADNG, DeleteGiftCardHold),\r\n    takeEvery(GIFTCARD_HOLD_RECALCULATE_LOADNG, RecalculateGiftCardHold)\r\n];\r\n\r\n\r\n\r\n","import { put, takeEvery, select } from 'redux-saga/effects'\r\nimport { COUPON_LOADING, GET_COUPON_DATA_SUCCESS, GET_COUPON_DATA_ERROR, COUPON_END_LOADING } from \"../actions/actionCoupon\";\r\nimport { GET_TOURPRODUCT_DATA_SUCCESS } from \"../actions/actionTourProduct\";\r\nimport { SHOPCART_APPLYCOUPON_TO_EVENTS, SHOPCART_APPLYCOUPON_TO_GATICKETS, SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE } from \"../actions/actionShopCart\";\r\nimport { START_POST_UNIQUECOUPON_HOLDS_SUCCESS, START_POST_UNIQUECOUPON_HOLDS_ERROR } from \"../actions/actionUniqueCouponHolds\";\r\nimport { getCouponProducts } from 'api';\r\nimport { apiTourProduct } from 'api';\r\nimport Moment from 'moment';\r\nimport { genfunction } from 'helpers';\r\nimport { uniqueCouponPost } from 'api';\r\nimport { CouponManager } from 'helpers';\r\nimport { RestaurantMenu } from '@material-ui/icons';\r\n\r\nconst { CouponExpiryMsg, MaxTimesCouponUsed, OneCouponAllowedForMembership, NewMembershipNotAllowed, RenewMembershipNotAllowed } = window['runConfig'];\r\n\r\nasync function fetchAsync(func, code) {\r\n\r\n    const response = await func(code);\r\n    if (response.ok && response.statusText !== 'No Content') {\r\n        return await response.json();\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw new Error(\"Unable to apply Coupon, \" + error.Errors[0].ErrorMessage.replace('Error: ', ''));\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.statusText === 'Unauthorized') {\r\n        throw new Error(\"Authorization has been denied for this request.\");\r\n    }\r\n    else {\r\n        throw new Error(\"Unable to apply Coupon, response : \" + response.statusText + \" - \" + response.status)\r\n    }\r\n}\r\n\r\nfunction* fetchCouponData(action) {\r\n    try {\r\n        const couponData = null;\r\n        let bookingCoupons = [];\r\n\r\n        let events = yield select(state => state.reducerShopCart.events);\r\n        let membershipPackages = yield select(state => state.reducerShopCart.MembershipPackages);\r\n        let gaTickets = yield select(state => state.reducerShopCart.GATickets);\r\n\r\n        let couponv3Data = yield fetchAsync(getCouponProducts, action.coupnCode);\r\n        if (couponData == undefined && couponv3Data == undefined\r\n            && couponData.length == 0 && couponv3Data.length == 0) {\r\n            throw new Error(\"Coupon Code not found, please try again with an valid Coupon Code.\");\r\n        }\r\n        else if (couponv3Data && couponv3Data.length > 0 && couponv3Data[0].GATickets) {\r\n            let isCouponValid = false;\r\n\r\n            gaTickets.map(ticket => {\r\n                let couponproduct = couponv3Data[0].GATickets.find(x => x.ProductID === ticket.ProductID);\r\n                if (couponproduct)\r\n                    isCouponValid = true\r\n\r\n            })\r\n            if (isCouponValid) {\r\n                yield put({ type: GET_COUPON_DATA_SUCCESS, payload: couponv3Data });\r\n                yield put({ type: SHOPCART_APPLYCOUPON_TO_GATICKETS, payload: { GATickets: couponv3Data[0].GATickets, CouponCode: action.coupnCode } });\r\n            }\r\n            else\r\n                yield put({ type: GET_COUPON_DATA_ERROR, error: \"Coupon Code not found against \" + ( gaTickets.length == 1 ? \"this ticket.\" : \"these tickets.\") });\r\n        }\r\n        else if (couponv3Data && couponv3Data.length > 0 && couponv3Data[0].MembershipPackages && membershipPackages && membershipPackages.length > 0) {\r\n            \r\n            const membershipPackages = yield select(state => state.reducerShopCart.MembershipPackages);\r\n            const membershipIsRenew = yield select(state => state.reducerShopCart.membershipIsRenew);\r\n\r\n            let membershippackID = membershipPackages && membershipPackages.length > 0 ? membershipPackages[0].MembershipPackageID : 0;\r\n            let apiMembershipPackage = genfunction.GetMembershipPackageFromApi(couponv3Data, membershippackID);\r\n\r\n            if (apiMembershipPackage === null || apiMembershipPackage.MembershipPackageID !== membershippackID) {\r\n                yield put({ type: GET_COUPON_DATA_ERROR, error: \"Coupon Code not found against this membership package, please try again with an valid Coupon Code.\" });\r\n            }\r\n            else {\r\n                if (apiMembershipPackage.AllowDiscountOnJoin == false && membershipIsRenew == false) {\r\n                    yield put({ type: GET_COUPON_DATA_ERROR, error: NewMembershipNotAllowed });\r\n                }\r\n                else if (apiMembershipPackage.AllowDiscountOnRenewal == false && membershipIsRenew) {\r\n                    yield put({ type: GET_COUPON_DATA_ERROR, error: RenewMembershipNotAllowed });\r\n                }\r\n                else {\r\n                    if (membershipPackages && membershipPackages[0].MembershipProducts && membershipPackages[0].MembershipProducts.filter(x => x.CouponCodeApplied).length == 0) {\r\n                        yield put({ type: GET_COUPON_DATA_SUCCESS, payload: couponv3Data });\r\n                        yield put({ type: SHOPCART_APPLYCOUPON_TO_MEMBERSHIP_PACKAGE, payload: { MembershipPackages: apiMembershipPackage, CouponCode: action.coupnCode } });\r\n                    }\r\n                    else {\r\n                        yield put({ type: GET_COUPON_DATA_ERROR, error: OneCouponAllowedForMembership });\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (couponv3Data && couponv3Data.length > 0 && couponv3Data[0].TourProducts && events && events.length > 0) {\r\n            var couponFrom = genfunction.ReturnDateOnly(couponv3Data[0].UseCouponFrom);\r\n            var couponTill = genfunction.ReturnDateOnly(couponv3Data[0].UseCouponTill);\r\n            var CurrentDateTimeAtLocation = genfunction.ReturnDateOnly(couponv3Data[0].CurrentDateTimeAtLocation);\r\n\r\n            if (CurrentDateTimeAtLocation >= couponFrom && CurrentDateTimeAtLocation <= couponTill) {\r\n\r\n                let applyDisProdID = couponv3Data[0].TourProducts && couponv3Data[0].TourProducts.length > 0 ? couponv3Data[0].TourProducts[0].ApplyDiscountToTourProductID : 0;\r\n\r\n                const data = yield fetchAsync(apiTourProduct, applyDisProdID);\r\n                yield put({ type: GET_TOURPRODUCT_DATA_SUCCESS, payload: data });\r\n\r\n                let couponHoldRef = '';\r\n                if (couponv3Data[0].RequireUniqueCouponCode) {\r\n\r\n                    if (couponv3Data[0].MaxProductsPerPurchase < 1) {\r\n                        yield put({ type: GET_COUPON_DATA_ERROR, error: \"Please check your unique coupon configuration, Max User Per Day must be greater than 0.\" });\r\n                        return;\r\n                    }\r\n\r\n                    if (couponv3Data[0].TimesUsed >= couponv3Data[0].MaxTransactionsPerCoupon) {\r\n                        yield put({ type: START_POST_UNIQUECOUPON_HOLDS_ERROR, error: MaxTimesCouponUsed });\r\n                        return;\r\n                    }\r\n\r\n                    //Generate UniqueCouponHold Request\r\n                    let uniqueCouponObj = CouponManager.UniqueCouponPostRequest(couponv3Data[0], events, bookingCoupons);\r\n\r\n                    if (uniqueCouponObj.Error.length > 0) {\r\n                        yield put({ type: START_POST_UNIQUECOUPON_HOLDS_ERROR, error: MaxTimesCouponUsed });\r\n                        return;\r\n                    }\r\n\r\n                    let uniqueCouponHoldsRes = yield fetchAsync(uniqueCouponPost, uniqueCouponObj.UniqueCoupon[0]);\r\n\r\n                    if (uniqueCouponHoldsRes == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to apply unique coupon.\\\"}]}\"\r\n                    else {\r\n                        couponHoldRef = uniqueCouponHoldsRes[0].CouponHoldRef;\r\n                        yield put({ type: START_POST_UNIQUECOUPON_HOLDS_SUCCESS, payload: uniqueCouponHoldsRes });\r\n                    }\r\n                }\r\n\r\n                yield put({ type: SHOPCART_APPLYCOUPON_TO_EVENTS, tourCoupon: couponv3Data, tourProduct: data, couponCode: action.coupnCode, CouponHoldRef: couponHoldRef });\r\n                yield put({ type: GET_COUPON_DATA_SUCCESS, payload: couponv3Data });\r\n            }\r\n            else {\r\n                yield put({ type: GET_COUPON_DATA_ERROR, error: CouponExpiryMsg });\r\n            }\r\n        }\r\n        else {\r\n            yield put({ type: GET_COUPON_DATA_ERROR, error: \"Coupon Code not found, please try again with an valid Coupon Code.\" });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: GET_COUPON_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\n\r\nexport const sagaCoupon = [\r\n    takeEvery(COUPON_LOADING, fetchCouponData)\r\n];\r\n","import { put, takeEvery, select } from 'redux-saga/effects'\r\nimport {\r\n    START_POST_UNIQUECOUPON_HOLDS_ERROR,\r\n    START_POST_UNIQUECOUPON_HOLDS_DELETE\r\n} from \"../actions/actionUniqueCouponHolds\";\r\nimport { deleteUniqueCouponHolds } from 'api'\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw new Error(\"Unable to perform Coupon Hold, response: \" + response.statusText + \" - \" + response.status)\r\n    }\r\n}\r\n\r\nfunction* DeleteUniqueCouponHolds(action) {\r\n    try {\r\n        let delCoupinRes = yield fetchAsync(deleteUniqueCouponHolds, '?CouponHoldRef=' + action.UniqueCOuponHoldRef);\r\n\r\n    } catch (e) {\r\n        yield put({ type: START_POST_UNIQUECOUPON_HOLDS_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaUniqueCouponHolds = [\r\n    takeEvery(START_POST_UNIQUECOUPON_HOLDS_DELETE, DeleteUniqueCouponHolds)\r\n];","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { GET_MEMBERVALIDATION_INFO_LOADING, MEMBERVALIDATION_DATA_SUCCESS, MEMBERVALIDATION_DATA_ERROR } from \"../actions/actionMemberValidation\";\r\nimport { apiMemberValidation } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n  const response = await func(param);\r\n\r\n  if (response.ok) {\r\n    return await response.json();\r\n  }\r\n  if (response.status == 400) {\r\n    let error = await response.json();\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \"\\\"}]}\")\r\n  }\r\n  else {\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to apply membership, response status: \" + \"\\\"}]}\")\r\n  }\r\n}\r\n\r\nfunction* fetchMemberValidationData(action) {\r\n  try {\r\n    const data = yield fetchAsync(apiMemberValidation, action.payload)\r\n    yield put({ type: MEMBERVALIDATION_DATA_SUCCESS, payload: data });\r\n  } catch (e) {\r\n    yield put({ type: MEMBERVALIDATION_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n  }\r\n}\r\n\r\nexport const sagaMemberValidation = [\r\n  takeEvery(GET_MEMBERVALIDATION_INFO_LOADING, fetchMemberValidationData)\r\n];\r\n","import { GET_DONATION_INFO_LOADING, DONATION_DATA_SUCCESS, DONATION_DATA_ERROR } from \"../actions/actionDonation\";\r\nimport { apiDonation } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get donations, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchDontionsData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiDonation, action.payload)\r\n        yield put({ type: DONATION_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: DONATION_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaDonation = [\r\n    takeEvery(GET_DONATION_INFO_LOADING, fetchDontionsData)\r\n];\r\n","import { GET_TRANSACTIONFEE_INFO_LOADING, TRANSACTIONFEE_DATA_SUCCESS, TRANSACTIONFEE_DATA_ERROR } from \"../actions/actionTransactionFee\";\r\nimport { apiTransactionFee } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get transaction fee, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchTransactionFeeData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiTransactionFee, action.payload)\r\n        yield put({ type: TRANSACTIONFEE_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: TRANSACTIONFEE_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaTransactionFee = [\r\n    takeEvery(GET_TRANSACTIONFEE_INFO_LOADING, fetchTransactionFeeData)\r\n];\r\n","import {\r\n    GET_MEMBERSHIPPACKAGES_INFO_LOADING, MEMBERSHIPPACKAGES_DATA_SUCCESS,\r\n    MEMBERSHIPPACKAGES_DATA_ERROR\r\n} from \"../actions/actionMembershipPackages\";\r\nimport { apiMembershipPackages } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, displayAreaNo) {\r\n    const response = await func(displayAreaNo);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"No membership packages record found, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    if (response.status == 401) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Message + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get membership packages, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchMembershipPackagesData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiMembershipPackages, action.payload.DisplayAreaNo)\r\n        yield put({ type: MEMBERSHIPPACKAGES_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: MEMBERSHIPPACKAGES_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaMembershipPackages = [\r\n    takeEvery(GET_MEMBERSHIPPACKAGES_INFO_LOADING, fetchMembershipPackagesData)\r\n];\r\n","import {\r\n    GET_GATICKET_LOADING, GATICKET_DATA_SUCCESS, GATICKET_DATA_ERROR,\r\n    GATICKETDISPLAYAREA_DATA_SUCCESS\r\n} from \"../actions/actionGATicket\";\r\nimport { apiDisplayAreas } from 'api';\r\nimport { apiGATicket } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get GATickets, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchGaTicketsData(action) {\r\n    try {\r\n        const displayAreasdata = yield fetchAsync(apiDisplayAreas, \"products\")\r\n        let params = \"DisplayArea=\" + action.payload.DisplayArea;\r\n        if (action.payload.GACouponCode)\r\n            params += \"&GACouponCode=\" + action.payload.GACouponCode;\r\n        const gaTickets = yield fetchAsync(apiGATicket, params)\r\n        if (gaTickets == \"nocontent\") throw \"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get GATickets\\\"}]}\"\r\n        else {\r\n            yield put({ type: GATICKETDISPLAYAREA_DATA_SUCCESS, payload: displayAreasdata });\r\n            yield put({ type: GATICKET_DATA_SUCCESS, payload: gaTickets });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: GATICKET_DATA_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaGaTicket = [\r\n    takeEvery(GET_GATICKET_LOADING, fetchGaTicketsData)\r\n];\r\n","import { GET_LOSTMEMBER_INFO_LOADING, LOSTMEMBER_DATA_SUCCESS, LOSTMEMBER_DATA_ERROR } from \"../actions/actionLostMember\";\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\nimport { apiLostMember } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to Send Email, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchLostMemberData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiLostMember, action.payload)\r\n        yield put({ type: LOSTMEMBER_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: LOSTMEMBER_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaLostMember = [\r\n    takeEvery(GET_LOSTMEMBER_INFO_LOADING, fetchLostMemberData)\r\n];\r\n","import { MEMBER_MEMBERSHIP_LOADING, MEMBER_MEMBERSHIP_SUCCESS, MEMBER_MEMBERSHIP_ERROR } from \"../actions/actionMemberMemberships\";\r\nimport { apiMemberMemberships } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get member memberships, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchMemberMemberships(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiMemberMemberships, action.customerId)\r\n        yield put({ type: MEMBER_MEMBERSHIP_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: MEMBER_MEMBERSHIP_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaMemberMemberships = [\r\n    takeEvery(MEMBER_MEMBERSHIP_LOADING, fetchMemberMemberships)\r\n];\r\n","import { CUSTOMER_LOADING, CUSTOMER_SUCCESS, CUSTOMER_ERROR } from \"../actions/actionCustomer\";\r\nimport { apiCustomer } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get customer, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchCustomer(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiCustomer, action)\r\n        yield put({ type: CUSTOMER_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: CUSTOMER_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaCustomer = [\r\n    takeEvery(CUSTOMER_LOADING, fetchCustomer)\r\n];\r\n","import { GET_BOOKING_INFO_LOADING, BOOKING_DATA_SUCCESS, BOOKING_DATA_ERROR } from \"../actions/actionBooking\";\r\nimport { apiBooking } from 'api';\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get booking details, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetachBooking(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiBooking, action.payload);\r\n        yield put({ type: BOOKING_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: BOOKING_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const bookingSaga = [\r\n    takeEvery(GET_BOOKING_INFO_LOADING, fetachBooking)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { GITCARD_DISPLAYAREAS_LOADING, GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS, GET_GITCARD_DISPLAYAREAS_DATA_ERROR } from \"../actions/actionGiftCardDisplayAreas\";\r\nimport { apiDisplayAreas } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok) {\r\n        return await response.json();\r\n    }\r\n    else if (response.statusText === 'Unauthorized') {\r\n        throw new Error(\"Authorization has been denied for this request.\");\r\n    }\r\n    else {\r\n        throw new Error(\"Unable to Get Gift Card Display Areas, response: \" + response.statusText + \" - \" + response.status)\r\n    }\r\n}\r\n\r\nfunction* fetchGiftCardDisplayAreasData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiDisplayAreas, \"giftcard\")\r\n        yield put({ type: GET_GITCARD_DISPLAYAREAS_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: GET_GITCARD_DISPLAYAREAS_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nexport const sagaGiftcarddisplayAreas = [\r\n    takeEvery(GITCARD_DISPLAYAREAS_LOADING, fetchGiftCardDisplayAreasData)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { GITCARD_LOADING, GET_GITCARD_DATA_SUCCESS, GET_GITCARD_DATA_ERROR } from \"../actions/actionGiftCards\";\r\nimport { apiGiftCards } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok) {\r\n        return await response.json();\r\n    }\r\n    else if (response.statusText === 'Unauthorized') {\r\n        throw new Error(\"Authorization has been denied for this request.\");\r\n    }\r\n    else {\r\n        throw new Error(\"Unable to Get Gift Cards, response: \" + response.statusText + \" - \" + response.status)\r\n    }\r\n}\r\n\r\nfunction* fetchGiftCardsData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiGiftCards, action.payload.displayAreaNo)\r\n        yield put({ type: GET_GITCARD_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: GET_GITCARD_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nexport const sagaGiftcards = [\r\n    takeEvery(GITCARD_LOADING, fetchGiftCardsData)\r\n];\r\n","import { COSTRATE_LOADING, GET_COSTRATE_DATA_SUCCESS, GET_COSTRATE_DATA_ERROR } from \"../actions/actionCostRate\";\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\nimport { apiCostRate } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get cost rate, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchCostRate(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiCostRate, action.payload)\r\n        yield put({ type: GET_COSTRATE_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: GET_COSTRATE_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaCostRate = [\r\n    takeEvery(COSTRATE_LOADING, fetchCostRate)\r\n];\r\n","import { IDMEUSERDATA_LOADING, GET_IDMEUSERDATA_DATA_SUCCESS, GET_IDMEUSERDATA_DATA_ERROR } from \"../actions/actionIDMeUserData\";\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\nimport { apiIDMeUserData } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get ID.Me User Data, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchIDMEUserData(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiIDMeUserData, action.payload)\r\n        yield put({ type: GET_IDMEUSERDATA_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: GET_IDMEUSERDATA_DATA_ERROR, error: e }); //.Errors[0].ErrorMessage\r\n    }\r\n}\r\n\r\nexport const sagaIdMeUserData = [\r\n    takeEvery(IDMEUSERDATA_LOADING, fetchIDMEUserData)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { USERDEFINEDFIELDS_LOADING, USERDEFINEDFIELDS_DATA_SUCCESS, USERDEFINEDFIELDS_DATA_ERROR } from \"../actions/actionBookingUserDefinedFields\";\r\nimport { apiUserDefinedFields } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get booking user defined fields, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* GetUserDefinedFields(action) {\r\n    try {\r\n        let udfsresponse = yield fetchAsync(apiUserDefinedFields, action);\r\n        yield put({ type: USERDEFINEDFIELDS_DATA_SUCCESS, payload: udfsresponse });\r\n    } catch (e) {\r\n        yield put({ type: USERDEFINEDFIELDS_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaBookingUserDefinedFields = [\r\n    takeEvery(USERDEFINEDFIELDS_LOADING, GetUserDefinedFields),\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { ORDERLOCATIONS_LOADING, ORDERLOCATIONS_SUCCESS, ORDERLOCATIONS_ERROR } from \"../actions/actionOrderLocations\";\r\nimport { getOrderLocationsByDisplayArea } from 'api'\r\n\r\nasync function fetchAsync(func, param) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get Order Locations, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchOrderLocationsByDisplayArea(action) {\r\n    try {\r\n        const data = yield fetchAsync(getOrderLocationsByDisplayArea, action.payload)\r\n        if (data == \"nocontent\") throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"No Order Locations were found.\\\"}]}\")\r\n        else {\r\n            yield put({ type: ORDERLOCATIONS_SUCCESS, payload: data });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: ORDERLOCATIONS_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaOrderLocations = [\r\n    takeEvery(ORDERLOCATIONS_LOADING, fetchOrderLocationsByDisplayArea)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { ORDER_MENU_LOADING, ORDER_MENU_SUCCESS, ORDER_MENU_ERROR } from \"../actions/actionOrdersMenu\";\r\nimport { apiGetProductsByProductTypeAndDisplayArea } from 'api'\r\n\r\nasync function fetchAsync(func, param1, param2) {\r\n    const response = await func(param1, param2);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get Order Menu, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchOrderMenuByDisplayArea(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiGetProductsByProductTypeAndDisplayArea, \"foodmenusimple\", action.payload);\r\n        if (data == \"nocontent\") throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"No Order Menu were found.\\\"}]}\")\r\n        else {\r\n            yield put({ type: ORDER_MENU_SUCCESS, payload: data });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: ORDER_MENU_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaOrderMenu = [\r\n    takeEvery(ORDER_MENU_LOADING, fetchOrderMenuByDisplayArea)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { MEMBERSHIP_USERDEFINEDFIELDS_LOADING, MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS, MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR } from \"../actions/actionMembershipUserDefinedFeilds\";\r\nimport { apiUserDefinedFields } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get memberships user defined fields, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* GetMembershipsUserDefinedFields(action) {\r\n    try {\r\n        let udfsresponse = yield fetchAsync(apiUserDefinedFields, action);\r\n        yield put({ type: MEMBERSHIP_USERDEFINEDFIELDS_DATA_SUCCESS, payload: udfsresponse });\r\n    } catch (e) {\r\n        yield put({ type: MEMBERSHIP_USERDEFINEDFIELDS_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaMembershipUserDefinedFields = [\r\n    takeEvery(MEMBERSHIP_USERDEFINEDFIELDS_LOADING, GetMembershipsUserDefinedFields),\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { CUSTOMER_UDFS_LOADING, CUSTOMER_UDFS_SUCCESS, CUSTOMER_UDFS_ERROR } from \"../actions/actionCustomerUDFs\";\r\nimport { GetCustomersUdfs } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get customer user defined fields, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* GetCustomerUserDefinedFields(action) {\r\n    try {\r\n        let udfsresponse = yield fetchAsync(GetCustomersUdfs, action);\r\n        yield put({ type: CUSTOMER_UDFS_SUCCESS, payload: udfsresponse });\r\n    } catch (e) {\r\n        yield put({ type: CUSTOMER_UDFS_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaCustomerUDFs = [\r\n    takeEvery(CUSTOMER_UDFS_LOADING, GetCustomerUserDefinedFields),\r\n];\r\n","import { COUNTRYANDSTATE_LOADING, GET_COUNTRYANDSTATE_DATA_SUCCESS, GET_COUNTRYANDSTATE_DATA_ERROR } from \"../actions/actionCountryAndState\";\r\nimport { put, takeEvery } from 'redux-saga/effects';\r\nimport { apiCountryAndState } from 'api';\r\n\r\nasync function fetchAsync(func, param) {\r\n  const response = await func(param);\r\n\r\n  if (response.ok && response.status == 200) {\r\n    return await response.json();\r\n  }\r\n  else if (response.status == 204) {\r\n    return \"nocontent\";\r\n  }\r\n  if (response.status == 400) {\r\n    let error = await response.json();\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n  }\r\n  else {\r\n    throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get countries and states, response status: \" + response.status + \"\\\"}]}\")\r\n  }\r\n}\r\n\r\nfunction* fetchCountryAndState(action) {\r\n  try {\r\n    \r\n    const data = yield fetchAsync(apiCountryAndState)\r\n    yield put({ type: GET_COUNTRYANDSTATE_DATA_SUCCESS, payload: data });\r\n    \r\n  } catch (e) {\r\n    yield put({ type: GET_COUNTRYANDSTATE_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n  }\r\n}\r\n\r\nexport const sagaCountryAndState = [\r\n  takeEvery(COUNTRYANDSTATE_LOADING, fetchCountryAndState)\r\n];\r\n","import {\r\n    ORGANIZATIONSECTION_LOADING, GET_ORGANIZATIONSECTION_DATA_SUCCESS,\r\n    GET_ORGANIZATIONSECTION_DATA_ERROR\r\n} from \"../actions/actionOrganizationSection\";\r\nimport { put, takeEvery, select } from 'redux-saga/effects';\r\nimport { apiOrganizationSection } from 'api';\r\nimport { genfunction } from 'helpers';\r\n\r\nasync function fetchAsync(func, param, organizationTxt) {\r\n    const response = await func(param);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get \" + organizationTxt + \" list, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchOrganizationList(action) {\r\n    try {\r\n        let countryandstates = yield select(state => state.reducerCountryAndState.countryandstate);\r\n        let defaultCountry = countryandstates && countryandstates.length > 0 ? countryandstates[0].Country : \"\";\r\n\r\n        let organizationTxt = genfunction.GetValueFromCountryAndState(countryandstates, defaultCountry, \"OrganizationText\");\r\n\r\n        const data = yield fetchAsync(apiOrganizationSection, action.payload, organizationTxt);\r\n\r\n        yield put({\r\n            type: GET_ORGANIZATIONSECTION_DATA_SUCCESS, payload: data\r\n        });\r\n    } catch (e) {\r\n        yield put({ type: GET_ORGANIZATIONSECTION_DATA_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaOrganizationSection = [\r\n    takeEvery(ORGANIZATIONSECTION_LOADING, fetchOrganizationList)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { PRODUCTS_BY_TYPE_LOADING, PRODUCTS_DATA_SUCCESS, PRODUCTS_DATA_ERROR } from \"../actions/actionProduct\";\r\nimport { apiGetProductsByProductTypeAndDisplayArea } from 'api';\r\n\r\nasync function fetchAsync(func, param1, param2) {\r\n    const response = await func(param1, param2);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400) {\r\n        throw await response.json();\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get products, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchProductDataByType(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiGetProductsByProductTypeAndDisplayArea, action.productType, action.displayAreaNo)\r\n        yield put({ type: PRODUCTS_DATA_SUCCESS, payload: data });\r\n    } catch (e) {\r\n        yield put({ type: PRODUCTS_DATA_ERROR, error: e.message });\r\n    }\r\n}\r\n\r\nexport const sagaProduct = [\r\n    takeEvery(PRODUCTS_BY_TYPE_LOADING, fetchProductDataByType)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { VALIDATE_RECAPTCHA_LOADING, VALIDATE_RECAPTCHA_SUCCESS, VALIDATE_RECAPTCHA_ERROR } from \"../actions/actionRecaptcha\";\r\nimport { apiValidateRecaptcha } from 'api';\r\n\r\nasync function fetchAsync(func, params) {\r\n    const response = await func(params);\r\n\r\n    if (response.ok && response.status == 200) {\r\n        return true;\r\n    }\r\n    else if (response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    else if (response.status == 400 || response.status == 500 ) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Recaptcha : Suspicious activity detected. To make this purchase, please contact us directly.\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* fetchValidateRecaptchaToken(action) {\r\n    try {\r\n        const data = yield fetchAsync(apiValidateRecaptcha, action.payload);\r\n        if (data == \"nocontent\") throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Recaptcha : response was not fetched.\\\"}]}\")\r\n        else {\r\n            yield put({ type: VALIDATE_RECAPTCHA_SUCCESS, payload: data });\r\n        }\r\n    } catch (e) {\r\n        yield put({ type: VALIDATE_RECAPTCHA_ERROR, error: e });\r\n    }\r\n}\r\n\r\nexport const sagaRecaptcha = [\r\n    takeEvery(VALIDATE_RECAPTCHA_LOADING, fetchValidateRecaptchaToken)\r\n];\r\n","import { put, takeEvery } from 'redux-saga/effects'\r\nimport { CUSTOMER_ADDRESSES_LOADING, CUSTOMER_ADDRESSES_SUCCESS, CUSTOMER_ADDRESSES_ERROR } from \"../actions/actionCustomerAddresses\";\r\nimport { GetCustomersAddress } from 'api';\r\n\r\nasync function fetchAsync(func, payload) {\r\n    const response = await func(payload);\r\n    if (response.status == 200) {\r\n        return await response.json();\r\n    }\r\n    else if (response.status == 202 || response.status == 204) {\r\n        return \"nocontent\";\r\n    }\r\n    if (response.status == 400) {\r\n        let error = await response.json();\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"\" + error.Errors[0].ErrorMessage.replace('Error: ', '') + \" response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n    else {\r\n        throw JSON.parse(\"{\\\"Errors\\\":[{\\\"ErrorMessage\\\":\\\"Unable to get customer addresses, response status: \" + response.status + \"\\\"}]}\")\r\n    }\r\n}\r\n\r\nfunction* GetCustomerAddresses(action) {\r\n    try {\r\n        let cstAddressesResponse = yield fetchAsync(GetCustomersAddress, action);\r\n        yield put({ type: CUSTOMER_ADDRESSES_SUCCESS, payload: cstAddressesResponse });\r\n    } catch (e) {\r\n        yield put({ type: CUSTOMER_ADDRESSES_ERROR, error: e.Errors[0].ErrorMessage });\r\n    }\r\n}\r\n\r\nexport const sagaCustomerAddresses = [\r\n    takeEvery(CUSTOMER_ADDRESSES_LOADING, GetCustomerAddresses),\r\n];\r\n","import { all } from 'redux-saga/effects'\nimport { sagaAuthenticationToken } from './sagaAuthenticationToken';\nimport { sagaBookingTypes } from './sagaBookingTypes';\nimport { sagaExtraItems } from './sagaExtraItems';\nimport { sagaMember } from './sagaMember'\nimport { sagaPaymentTransaction } from './sagaPaymentTransaction'\nimport { sagaIP } from './sagaIP';\nimport { sagaDisplayAreas } from './sagaDisplayAreas';\nimport { sagaShopCart } from './sagaShopCart';\nimport { sagaGiftCardHold } from './sagaGiftCardHold';\nimport { sagaCoupon } from './sagaCoupon';\nimport { sagaUniqueCouponHolds } from './sagaUniqueCouponHolds';\nimport { sagaMemberValidation } from './sagaMemberValidation';\nimport { sagaDonation } from './sagaDonation';\nimport { sagaTransactionFee } from './sagaTransactionFee';\nimport { sagaMembershipPackages } from './sagaMembershipPackages';\nimport { sagaGaTicket } from './sagaGaTicket';\nimport { sagaLostMember } from './sagaLostMember';\nimport { sagaMemberMemberships } from './sagaMemberMemberships';\nimport { sagaCustomer } from './sagaCustomer';\nimport { bookingSaga } from './sagaBooking';\nimport { sagaGiftcarddisplayAreas } from './sagaGiftcarddisplayAreas';\nimport { sagaGiftcards } from './sagaGiftcards';\nimport { sagaCostRate } from './sagaCostRate';\nimport { sagaIdMeUserData } from './sagaIdMeUserData';\nimport { sagaBookingUserDefinedFields } from './sagaBookingUserDefinedFields';\nimport { sagaOrderLocations } from './sagaOrderLocations';\nimport { sagaOrderMenu } from './sagaOrderMenu';\nimport { sagaMembershipUserDefinedFields } from './sagaMembershipUserDefinedFields';\nimport { sagaCustomerUDFs } from './sagaCustomerUDFs';\nimport { sagaCountryAndState } from './sagaCountryAndState';\nimport { sagaOrganizationSection } from './sagaOrganizationSection';\nimport { sagaProduct } from './sagaProduct';\nimport { sagaRecaptcha } from './sagaRecaptcha';\nimport { sagaCustomerAddresses } from './sagaCustomerAddresses';\n\n\nexport function* rootSaga() {\n  yield all([\n    ...sagaAuthenticationToken,\n    ...sagaBookingTypes,\n    ...sagaMember,\n    ...sagaPaymentTransaction,\n    ...sagaExtraItems,\n    ...sagaIP,\n    ...sagaDisplayAreas,\n    ...sagaShopCart,\n    ...sagaGiftCardHold,\n    ...sagaCoupon,\n    ...sagaUniqueCouponHolds,\n    ...sagaMemberValidation,\n    ...sagaDonation,\n    ...sagaTransactionFee,\n    ...sagaMembershipPackages,\n    ...sagaGaTicket,\n    ...sagaLostMember,\n    ...sagaMemberMemberships,\n    ...sagaCustomer,\n    ...bookingSaga,\n    ...sagaGiftcarddisplayAreas,\n    ...sagaGiftcards,\n    ...sagaCostRate,\n    ...sagaIdMeUserData,\n    ...sagaBookingUserDefinedFields,\n    ...sagaOrderLocations,\n    ...sagaOrderMenu,\n    ...sagaMembershipUserDefinedFields,\n    ...sagaCustomerUDFs,\n    ...sagaCountryAndState,\n    ...sagaProduct,\n    ...sagaOrganizationSection,\n    ...sagaRecaptcha,\n    ...sagaCustomerAddresses\n  ]);\n}\n\n//export default rootSaga;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n  window.location.hostname === 'localhost' ||\n    // [::1] is the IPv6 localhost address.\n    window.location.hostname === '[::1]' ||\n    // 127.0.0.1/8 is considered localhost for IPv4.\n    window.location.hostname.match(\n      /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n    )\n);\n\nexport function register(config) {\n  if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n    // The URL constructor is available in all browsers that support SW.\n    const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n    if (publicUrl.origin !== window.location.origin) {\n      // Our service worker won't work if PUBLIC_URL is on a different origin\n      // from what our page is served on. This might happen if a CDN is used to\n      // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n      return;\n    }\n\n    window.addEventListener('load', () => {\n      const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n      if (isLocalhost) {\n        // This is running on localhost. Let's check if a service worker still exists or not.\n        checkValidServiceWorker(swUrl, config);\n\n        // Add some additional logging to localhost, pointing developers to the\n        // service worker/PWA documentation.\n        navigator.serviceWorker.ready.then(() => {\n          console.log(\n            'This web app is being served cache-first by a service ' +\n              'worker. To learn more, visit http://bit.ly/CRA-PWA'\n          );\n        });\n      } else {\n        // Is not localhost. Just register service worker\n        registerValidSW(swUrl, config);\n      }\n    });\n  }\n}\n\nfunction registerValidSW(swUrl, config) {\n  navigator.serviceWorker\n    .register(swUrl)\n    .then(registration => {\n      registration.onupdatefound = () => {\n        const installingWorker = registration.installing;\n        if (installingWorker == null) {\n          return;\n        }\n        installingWorker.onstatechange = () => {\n          if (installingWorker.state === 'installed') {\n            if (navigator.serviceWorker.controller) {\n              // At this point, the updated precached content has been fetched,\n              // but the previous service worker will still serve the older\n              // content until all client tabs are closed.\n              console.log(\n                'New content is available and will be used when all ' +\n                  'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n              );\n\n              // Execute callback\n              if (config && config.onUpdate) {\n                config.onUpdate(registration);\n              }\n            } else {\n              // At this point, everything has been precached.\n              // It's the perfect time to display a\n              // \"Content is cached for offline use.\" message.\n              console.log('Content is cached for offline use.');\n\n              // Execute callback\n              if (config && config.onSuccess) {\n                config.onSuccess(registration);\n              }\n            }\n          }\n        };\n      };\n    })\n    .catch(error => {\n      console.error('Error during service worker registration:', error);\n    });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n  // Check if the service worker can be found. If it can't reload the page.\n  fetch(swUrl)\n    .then(response => {\n      // Ensure service worker exists, and that we really are getting a JS file.\n      const contentType = response.headers.get('content-type');\n      if (\n        response.status === 404 ||\n        (contentType != null && contentType.indexOf('javascript') === -1)\n      ) {\n        // No service worker found. Probably a different app. Reload the page.\n        navigator.serviceWorker.ready.then(registration => {\n          registration.unregister().then(() => {\n            window.location.reload();\n          });\n        });\n      } else {\n        // Service worker found. Proceed as normal.\n        registerValidSW(swUrl, config);\n      }\n    })\n    .catch(() => {\n      console.log(\n        'No internet connection found. App is running in offline mode.'\n      );\n    });\n}\n\nexport function unregister() {\n  if ('serviceWorker' in navigator) {\n    navigator.serviceWorker.ready.then(registration => {\n      registration.unregister();\n    });\n  }\n}\n","import { colors } from '@material-ui/core';\nconst { contrastTextColor, darkColor, mainColor, lightColor, backgoundColor, backgoundColorPaper, textColor } = window['runConfig'];\n\nconst white = '#FFFFFF';\nconst black = '#000000';\n\nexport default {\n  black,\n  white,\n  primary: {\n    contrastText: contrastTextColor,\n    dark: darkColor,\n    main: mainColor,\n    light: lightColor\n  },\n  secondary: {\n    contrastText: white,\n    dark: colors.blue[900],\n    main: colors.blue['A400'],\n    light: colors.blue['A400']\n  },\n  success: {\n    contrastText: white,\n    dark: colors.green[900],\n    main: colors.green[600],\n    light: colors.green[400]\n  },\n  info: {\n    contrastText: white,\n    dark: colors.blue[900],\n    main: colors.blue[600],\n    light: colors.blue[400]\n  },\n  warning: {\n    contrastText: white,\n    dark: colors.orange[900],\n    main: colors.orange[600],\n    light: colors.orange[400]\n  },\n  error: {\n    contrastText: white,\n    dark: colors.red[900],\n    main: colors.red[600],\n    light: colors.red[400]\n  },\n  text: {\n    primary: textColor,\n    secondary: textColor,\n    link: colors.blue[600]\n  },\n  background: {\n    default: backgoundColor,\n    paper: backgoundColorPaper\n  },\n  icon: colors.blueGrey[600],\n  divider: colors.grey[200]\n};\n","import palette from './palette';\n\nexport default {\n  h1: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '35px',\n    letterSpacing: '-0.24px',\n    lineHeight: '40px'\n  },\n  h2: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '29px',\n    letterSpacing: '-0.24px',\n    lineHeight: '32px'\n  },\n  h3: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '24px',\n    letterSpacing: '-0.06px',\n    lineHeight: '28px'\n  },\n  h4: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '20px',\n    letterSpacing: '-0.06px',\n    lineHeight: '24px'\n  },\n  h5: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '16px',\n    letterSpacing: '-0.05px',\n    lineHeight: '20px'\n  },\n  h6: {\n    color: palette.text.primary,\n    fontWeight: 500,\n    fontSize: '14px',\n    letterSpacing: '-0.05px',\n    lineHeight: '20px'\n  },\n  subtitle1: {\n    color: palette.text.primary,\n    fontSize: '16px',\n    letterSpacing: '-0.05px',\n    lineHeight: '25px'\n  },\n  subtitle2: {\n    color: palette.text.secondary,\n    fontWeight: 400,\n    fontSize: '14px',\n    letterSpacing: '-0.05px',\n    lineHeight: '21px'\n  },\n  body1: {\n    color: palette.text.primary,\n    fontSize: '14px',\n    letterSpacing: '-0.05px',\n    lineHeight: '21px'\n  },\n  body2: {\n    color: palette.text.secondary,\n    fontSize: '12px',\n    letterSpacing: '-0.04px',\n    lineHeight: '18px'\n  },\n  button: {\n    color: palette.text.primary,\n    fontSize: '14px'\n  },\n  caption: {\n    color: palette.text.secondary,\n    fontSize: '11px',\n    letterSpacing: '0.33px',\n    lineHeight: '13px'\n  },\n  overline: {\n    color: palette.text.secondary,\n    fontSize: '11px',\n    fontWeight: 500,\n    letterSpacing: '0.33px',\n    lineHeight: '13px',\n    textTransform: 'uppercase'\n  }\n};\n","import MuiButton from './MuiButton';\nimport MuiIconButton from './MuiIconButton';\nimport MuiPaper from './MuiPaper';\nimport MuiTableCell from './MuiTableCell';\nimport MuiTableHead from './MuiTableHead';\nimport MuiTypography from './MuiTypography';\nimport MuiCssBaseline from './MuiCssBaseline';\n\nexport default {\n  MuiButton,\n  MuiIconButton,\n  MuiPaper,\n  MuiTableCell,\n  MuiTableHead,\n  MuiTypography,\n  MuiCssBaseline\n};\n","export default {\n  contained: {\n    boxShadow:\n      '0 1px 1px 0 rgba(0,0,0,0.14), 0 2px 1px -1px rgba(0,0,0,0.12), 0 1px 3px 0 rgba(0,0,0,0.20)',\n    backgroundColor: '#FFFFFF'\n  }\n};\n","import palette from '../palette';\n\nexport default {\n  root: {\n    color: palette.icon,\n    '&:hover': {\n      backgroundColor: 'rgba(0, 0, 0, 0.03)'\n    }\n  }\n};\n","export default {\n  elevation1: {\n    boxShadow: '0 0 0 1px rgba(63,63,68,0.05), 0 1px 3px 0 rgba(63,63,68,0.15)'\n  }\n};\n","import palette from '../palette';\nimport typography from '../typography';\n\nexport default {\n  root: {\n    ...typography.body1,\n    borderBottom: `1px solid ${palette.divider}`\n  }\n};\n","import { colors } from '@material-ui/core';\n\nexport default {\n  root: {\n    backgroundColor: colors.grey[50]\n  }\n};\n","export default {\n  gutterBottom: {\n    marginBottom: 8\n  }\n};\n","import palette from '../palette';\r\n\r\nexport default {\r\n    \"@global\": {\r\n        \"::-webkit-scrollbar-thumb\": {\r\n            background: palette.primary.main\r\n        },\r\n    },\r\n};","import { createMuiTheme } from '@material-ui/core';\n\nimport palette from './palette';\nimport typography from './typography';\nimport overrides from './overrides';\n\nconst theme = createMuiTheme({\n  palette,\n  typography,\n  overrides,\n  zIndex: {\n    appBar: 1200,\n    drawer: 1100\n  }\n});\n\nexport default theme;\n","const checked = (value, options) => {\n  if (value !== true) {\n    return options.message || 'must be checked';\n  }\n};\n\nexport default {\n  checked\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport { Paper, Input } from '@material-ui/core';\nimport SearchIcon from '@material-ui/icons/Search';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    borderRadius: '4px',\n    alignItems: 'center',\n    padding: theme.spacing(1),\n    display: 'flex',\n    flexBasis: 420\n  },\n  icon: {\n    marginRight: theme.spacing(1),\n    color: theme.palette.text.secondary\n  },\n  input: {\n    flexGrow: 1,\n    fontSize: '14px',\n    lineHeight: '16px',\n    letterSpacing: '-0.05px'\n  }\n}));\n\nconst SearchInput = props => {\n  const { className, onChange, style, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Paper\n      {...rest}\n      className={clsx(classes.root, className)}\n      style={style}\n    >\n      <SearchIcon className={classes.icon} />\n      <Input\n        {...rest}\n        className={classes.input}\n        disableUnderline\n        onChange={onChange}\n      />\n    </Paper>\n  );\n};\n\nSearchInput.propTypes = {\n  className: PropTypes.string,\n  onChange: PropTypes.func,\n  style: PropTypes.object\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    display: 'inline-block',\n    borderRadius: '50%',\n    flexGrow: 0,\n    flexShrink: 0\n  },\n  sm: {\n    height: theme.spacing(1),\n    width: theme.spacing(1)\n  },\n  md: {\n    height: theme.spacing(2),\n    width: theme.spacing(2)\n  },\n  lg: {\n    height: theme.spacing(3),\n    width: theme.spacing(3)\n  },\n  neutral: {\n    backgroundColor: theme.palette.neutral\n  },\n  primary: {\n    backgroundColor: theme.palette.primary.main\n  },\n  info: {\n    backgroundColor: theme.palette.info.main\n  },\n  warning: {\n    backgroundColor: theme.palette.warning.main\n  },\n  danger: {\n    backgroundColor: theme.palette.error.main\n  },\n  success: {\n    backgroundColor: theme.palette.success.main\n  }\n}));\n\nconst StatusBullet = props => {\n  const { className, size, color, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <span\n      {...rest}\n      className={clsx(\n        {\n          [classes.root]: true,\n          [classes[size]]: size,\n          [classes[color]]: color\n        },\n        className\n      )}\n    />\n  );\n};\n\nStatusBullet.propTypes = {\n  className: PropTypes.string,\n  color: PropTypes.oneOf([\n    'neutral',\n    'primary',\n    'info',\n    'success',\n    'warning',\n    'danger'\n  ]),\n  size: PropTypes.oneOf(['sm', 'md', 'lg'])\n};\n\nStatusBullet.defaultProps = {\n  size: 'md',\n  color: 'default'\n};\n\nexport default StatusBullet;\n","import React from 'react';\nimport { Route } from 'react-router-dom';\nimport PropTypes from 'prop-types';\n\nconst RouteWithLayout = props => {\n  const { layout: Layout, component: Component, ...rest } = props;\n\n  return (\n    <Route\n      {...rest}\n      render={matchProps => (\n        <Layout>\n          <Component {...matchProps} />\n        </Layout>\n      )}\n    />\n  );\n};\n\nRouteWithLayout.propTypes = {\n  component: PropTypes.any.isRequired,\n  layout: PropTypes.any.isRequired,\n  path: PropTypes.string\n};\n\nexport default RouteWithLayout;\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button } from '@material-ui/core';\r\n\r\n\r\nconst DialogeBox = props => {\r\n    const { open, title, message, button1text, button2text, button1clickhandler, button2clickhandler } = props;\r\n\r\n    return (\r\n        <Dialog\r\n            open={open}\r\n            aria-labelledby=\"alert-dialog-title\"\r\n            aria-describedby=\"alert-dialog-description\"\r\n        >\r\n            <DialogTitle id=\"alert-dialog-title\">{title}</DialogTitle>\r\n            <DialogContent>\r\n                <DialogContentText id=\"alert-dialog-description\">\r\n                    {message}\r\n                </DialogContentText>\r\n            </DialogContent>\r\n            <DialogActions>\r\n                {button1text == undefined ? null : (<Button onClick={button1clickhandler} color=\"primary\">\r\n                    {button1text}\r\n                </Button>)}\r\n                {button2text == undefined ? null : (<Button onClick={button2clickhandler} color=\"primary\">\r\n                    {button2text}\r\n                </Button>)}\r\n            </DialogActions>\r\n        </Dialog>\r\n    );\r\n};\r\n\r\nDialogeBox.propTypes = {\r\n    open: PropTypes.bool.isRequired,\r\n    title: PropTypes.string.isRequired,\r\n    //message: PropTypes.string.isRequired,\r\n    button1text: PropTypes.string.isRequired,\r\n    button1clickhandler: PropTypes.func.isRequired\r\n};\r\n\r\nexport default DialogeBox;\r\n","import React from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, DialogActions, Button, TextField } from '@material-ui/core';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { genfunction } from 'helpers'\r\nimport { makeStyles } from '@material-ui/styles';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    wheelChairScreenAssist: {\r\n        bottom: 0,\r\n        position: \"fixed\",\r\n        marginBottom: \"120\"\r\n    }\r\n}));\r\n\r\nconst PinCodeDialogeBox = props => {\r\n    const { open, title, message, button1text, button2text, button1clickhandler, button2clickhandler, pinTextChange } = props;\r\n    const classes = useStyles();\r\n    return (\r\n        <Dialog\r\n            open={open}\r\n            aria-labelledby=\"alert-dialog-title\"\r\n            aria-describedby=\"alert-dialog-description\"\r\n        >\r\n            <DialogTitle id=\"alert-dialog-title\">{title}</DialogTitle>\r\n            <DialogContent>\r\n                <DialogContentText id=\"alert-dialog-description\">\r\n                    {ReactHtmlParser(genfunction.replaceEscapeCharacters(message))}\r\n                    <TextField autoFocus fullWidth label=\"Pin\" onChange={(event) => { pinTextChange(event.target.value) }}></TextField>\r\n                </DialogContentText>\r\n            </DialogContent>\r\n            <DialogActions>\r\n                {button1text == undefined ? null : (<Button onClick={button1clickhandler} variant=\"outlined\" color=\"primary\">\r\n                    {button1text}\r\n                </Button>)}\r\n                {button2text == undefined ? null : (<Button onClick={button2clickhandler} variant=\"contained\" color=\"primary\">\r\n                    {button2text}\r\n                </Button>)}\r\n            </DialogActions>\r\n        </Dialog>\r\n    );\r\n};\r\n\r\nPinCodeDialogeBox.propTypes = {\r\n    open: PropTypes.bool.isRequired,\r\n    title: PropTypes.string.isRequired,\r\n    message: PropTypes.string.isRequired,\r\n    button1text: PropTypes.string.isRequired,\r\n    button1clickhandler: PropTypes.func.isRequired\r\n};\r\n\r\nexport default PinCodeDialogeBox;\r\n","import React from 'react';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\n\r\nconst ErrorHandling = props => {\r\n\r\n  function Alert(props) {\r\n    return <MuiAlert elevation={6} variant=\"filled\" {...props} />;\r\n  }\r\n\r\n  const getcolor = () => {\r\n    if (props.color && props.color != \"\")\r\n      return props.color;\r\n    else\r\n      return \"error\";\r\n  }\r\n\r\n  const getintialtext = () => {\r\n    if (props.color && props.color == \"info\")\r\n      return \"Info\";\r\n    else\r\n      return \"Error\";\r\n  }\r\n\r\n  return (\r\n    <div>\r\n      <Snackbar open={props.open} anchorOrigin={{ vertical: 'bottom', horizontal: 'center' }} onClose={() => { props.handleclose() }}>\r\n        <Alert style={{ fontSize: '15px' }} onClose={() => { props.handleclose() }} color={getcolor()}>          {getintialtext()} : {props.msg}\r\n        </Alert>\r\n      </Snackbar>\r\n    </div >\r\n  );\r\n};\r\n\r\nexport default ErrorHandling;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Input } from '@material-ui/core';\r\nimport {genfunction} from '../../helpers';\r\n\r\nimport theme from '../../theme'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    leftrightbutton: {\r\n        minWidth: \"auto\"\r\n    },\r\n    leftbutton: {\r\n        width: \"20px\",\r\n        borderTopLeftRadius: \"0px\",\r\n        borderBottomLeftRadius: \"0px\"\r\n    },\r\n    rightbutton: {\r\n        width: \"20px\",\r\n        borderTopRightRadius: \"0px\",\r\n        borderBottomRightRadius: \"0px\"\r\n    },\r\n    labelstyle: {\r\n        flex: 1,\r\n        padding: \"0px 5px 0px 5px\",\r\n        verticalAlign: \"middle\",\r\n        textAlign: \"center\"\r\n    },\r\n    box: {\r\n        display: \"flex\",\r\n        width: \"80px\"\r\n    },\r\n    input: {\r\n        textAlign: \"center\"\r\n    },\r\n    boxVisble :{\r\n        pointerEvents: \"none\", \r\n        opacity: \"0.4\",\r\n        backgroundColor:'#808080',\r\n        color:'#000000'\r\n    }\r\n}));\r\n\r\nconst NumberSpinner = props => {\r\n    const classes = useStyles();\r\n\r\n    const buttonClickHandler = (operation) => {\r\n        let newvalue = 0;\r\n        if (operation == \"Add\") {\r\n            newvalue = props.value + props.steps;\r\n        }\r\n        else if (operation == \"Subtract\") {\r\n            newvalue = props.value - props.steps;\r\n        }\r\n\r\n        if (newvalue > props.maxValue)\r\n            newvalue = props.maxValue;\r\n        else if (newvalue < props.minValue)\r\n            newvalue = props.minValue;\r\n\r\n        if (newvalue != props.value)\r\n            props.changeHandler(props.refrence, newvalue);\r\n    }\r\n    const handleFocus = (event) => event.target.select();\r\n\r\n    const textChangeHandler = (event) => {\r\n        if (event.target.value != \"\") {\r\n            if (isNaN(event.target.value))\r\n                event.target.value = 0;\r\n\r\n            let newvalue = parseInt(event.target.value);\r\n            if (newvalue > props.maxValue)\r\n                newvalue = props.maxValue;\r\n            else if (newvalue < props.minValue)\r\n                newvalue = props.minValue;\r\n\r\n            if (newvalue != props.value)\r\n                props.changeHandler(props.refrence, newvalue);\r\n        }\r\n    }\r\n\r\n    const disableButton = (type) => {\r\n\r\n        if (type == \"Max\")\r\n            return props.value >= props.maxValue;\r\n        else if (type == \"Min\")\r\n            return props.value <= props.minValue;\r\n    }\r\n\r\n\r\n    let boxVis = props.disabled ? classes.boxVisble : '';\r\n\r\n    return (\r\n        \r\n        <div className={classes.box }>\r\n            <Button size=\"small\" className={classes.leftrightbutton + \" \" + classes.rightbutton\r\n            + \" \" + boxVis} variant=\"contained\" disabled={disableButton(\"Min\")}\r\n                color=\"primary\" onClick={() => { buttonClickHandler(\"Subtract\") }}>-</Button>\r\n            <div className={classes.labelstyle}>\r\n                <Input value={props.value}\r\n                    inputProps={{\r\n                        className: classes.input,\r\n                    }}\r\n                    onChange={textChangeHandler} onFocus={handleFocus}\r\n                    disabled={genfunction.UniqueCouponApplied(props.refrence.eventCoupons,props.refrence.tourProductID,props.refrence.eventId)}\r\n                    ></Input>\r\n            </div>\r\n            <Button size=\"small\" className={classes.leftrightbutton + \" \" + classes.leftbutton\r\n            + \" \" + boxVis} variant=\"contained\" disabled={disableButton(\"Max\")}\r\n                color=\"primary\" onClick={() => { buttonClickHandler(\"Add\") }}>+</Button>\r\n        </div>\r\n    );\r\n};\r\n\r\nNumberSpinner.propTypes = {\r\n    value: PropTypes.number,\r\n    steps: PropTypes.number,\r\n    minValue: PropTypes.number,\r\n    maxValue: PropTypes.number\r\n};\r\n\r\nexport default NumberSpinner;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport NumberFormat from 'react-number-format';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nconst { Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n  root: {\r\n    // '& > *': {\r\n    //   margin: theme.spacing(1),\r\n    // },\r\n    display: \"unset\"\r\n  }\r\n}));\r\n\r\n\r\nfunction NumberFormatCustom(props) {\r\n  const { inputRef, onChange, ...other } = props;\r\n\r\n  return (\r\n    <NumberFormat\r\n      {...other}\r\n      getInputRef={inputRef}\r\n      onValueChange={(values) => {\r\n        onChange({\r\n          target: {\r\n            name: props.name,\r\n            value: values.value,\r\n          },\r\n        });\r\n      }}\r\n      thousandSeparator\r\n      isNumericString\r\n      prefix={Currency}\r\n    />\r\n  );\r\n}\r\n\r\nNumberFormatCustom.propTypes = {\r\n  inputRef: PropTypes.func.isRequired,\r\n  name: PropTypes.string.isRequired,\r\n  onChange: PropTypes.func.isRequired,\r\n};\r\n\r\nexport default function FormattedInputs(props) {\r\n  const classes = useStyles();\r\n  const [values, setValues] = React.useState({\r\n    amountExceed: false\r\n  });\r\n\r\n  const handleChange = (event) => {\r\n\r\n    if (parseFloat(event.target.value) < props.minValue || parseFloat(event.target.value) > props.maxValue) {\r\n      setValues({ ...values, amountExceed: true });\r\n      props.Validated(false);\r\n    }\r\n    else {\r\n      props.Validated(true);\r\n      setValues({ ...values, amountExceed: false });\r\n    }\r\n\r\n    props.handleOtherPrice(event);\r\n  }\r\n\r\n  return (\r\n    <div className={classes.root}>\r\n      <TextField\r\n        error={values.amountExceed}\r\n        label={props.label ? props.label : (Currency + '' + props.minValue) + ' - ' + (Currency + '' + props.maxValue)}\r\n        onChange={handleChange}\r\n        name={props.productName}\r\n        value={props.donaValue}\r\n        key={props.keyvalue}\r\n        variant={props.variant}\r\n        size={props.size}\r\n        disabled={props.disabled}\r\n        id=\"formatted-numberformat-input\"\r\n        InputProps={{\r\n          inputComponent: NumberFormatCustom,\r\n        }}\r\n      />\r\n    </div>\r\n  );\r\n}\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { TextField, Typography } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingBottom: \"20px\"\r\n    }\r\n}));\r\n\r\nconst UDFText = (props) => {\r\n    const { UDF } = props;\r\n    const classes = useStyles();\r\n\r\n    const onChangeHandler = (event) => {\r\n        props.changecontrolvalue(event, props.bookingID, UDF.UDFCategoryName, UDF.UDFID);\r\n    }\r\n\r\n    const GetUserMemberValue = () => {\r\n        if (props.isMembership) {\r\n            let userV = \"\";\r\n\r\n            if (UDF.Users.filter(x => x.userID == props.usernumber).length > 0) {\r\n                let user = UDF.Users.find(x => x.userID == props.usernumber);\r\n\r\n                if (user && user.hasOwnProperty('userUDFValue')) {\r\n                    userV = user.userUDFValue;\r\n                }\r\n\r\n                return userV;\r\n            }\r\n        }\r\n        else {\r\n            return UDF.Value;\r\n        }\r\n    }\r\n    return (\r\n        <div className={classes.root}>\r\n            <Typography variant=\"subtitle1\">{UDF.UdfDescription}</Typography>\r\n            <TextField\r\n                data={UDF}\r\n                id={UDF.UDFID.toString()}\r\n                name={UDF.UDFName.toString()}\r\n                label={UDF.UDFName}\r\n                required={UDF.IsRequired}\r\n                multiline={UDF.UDFLength && UDF.UDFLength > 200}\r\n                inputProps={{ maxLength: UDF.UDFLength }}\r\n                onChange={onChangeHandler}\r\n                value={GetUserMemberValue()}\r\n                {...props}\r\n                sx={{ p: 4, '& .MuiInputLabel-root': { p: 4 } }}\r\n                variant=\"standard\"\r\n                InputLabelProps={{\r\n                    style: { padding: \"0 0 0 15px\"  }\r\n                }}\r\n            />\r\n        </div>\r\n    );\r\n};\r\n\r\nUDFText.propTypes = {\r\n    udf: PropTypes.object.isRequired\r\n};\r\n\r\nexport default UDFText;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { FormControlLabel, Checkbox, TextField } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingBottom: \"20px\"\r\n    }\r\n}));\r\n\r\nconst UDFCheckBox = (props) => {\r\n    const { UDF } = props;\r\n    const classes = useStyles();\r\n\r\n    const changeCheckBoxValue = (event) => {\r\n        props.changecontrolvalue(event, props.bookingID, UDF.UDFCategoryName, UDF.UDFID);\r\n    }\r\n\r\n    const GetUserMemberValue = () => {\r\n        if (props.isMembership) {\r\n            let userV = \"\";\r\n\r\n            if (UDF.Users.filter(x => x.userID == props.usernumber).length > 0) {\r\n                let user = UDF.Users.find(x => x.userID == props.usernumber);\r\n\r\n                if (user && user.hasOwnProperty('userUDFValue')) {\r\n                    userV = user.userUDFValue;\r\n                }\r\n\r\n                return userV;\r\n            }\r\n        }\r\n        else {\r\n            return UDF.Value;\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className={classes.root}>\r\n\r\n            <Checkbox\r\n                name={UDF.UDFID.toString()}\r\n                id={UDF.UDFID.toString()}\r\n                color=\"primary\"\r\n                checked={GetUserMemberValue()}\r\n                onChange={changeCheckBoxValue}\r\n                InputLabelProps={{\r\n                    style: { padding: \"0 0 0 15px\" },\r\n                }}\r\n                {...props}\r\n            />\r\n        </div>\r\n    );\r\n};\r\n\r\nUDFCheckBox.propTypes = {\r\n    UDF: PropTypes.object.isRequired\r\n};\r\n\r\nexport default UDFCheckBox;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { TextField, Typography } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingBottom: \"20px\",\r\n        paddingLeft: \"15px\"\r\n    },\r\n    input:\r\n        { minWidth: '100%' }\r\n}));\r\n\r\nconst UDFDateTime = (props) => {\r\n    const { UDF } = props;\r\n    const classes = useStyles();\r\n    const [udfValue, setUdfValue] = useState(\"\");\r\n\r\n    useEffect(() => {\r\n        setUdfValue(GetUserMemberValue());\r\n    }, [UDF]);\r\n\r\n    const onChangeHandler = (event) => {\r\n        props.changecontrolvalue(event, props.bookingID, UDF.UDFCategoryName, UDF.UDFID);\r\n    }\r\n\r\n    const onChangeInput = (e) => {\r\n\r\n        if (e.nativeEvent.target.defaultValue === e.nativeEvent.target.value) {\r\n\r\n            e.nativeEvent.target.defaultValue = \"\";\r\n            e.nativeEvent.target.value = \"\";\r\n\r\n            setTimeout(onChangeHandler(e), 0);\r\n\r\n        }\r\n    }\r\n\r\n    const GetUserMemberValue = () => {\r\n        if (props.isMembership) {\r\n            let userV = \"\";\r\n\r\n            if (UDF.Users.filter(x => x.userID == props.usernumber).length > 0) {\r\n                let user = UDF.Users.find(x => x.userID == props.usernumber);\r\n\r\n                if (user && user.hasOwnProperty('userUDFValue')) {\r\n                    userV = user.userUDFValue;\r\n                }\r\n\r\n                return userV;\r\n            }\r\n        }\r\n        else {\r\n            return UDF.Value;\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className={classes.root}>\r\n            <Typography variant=\"subtitle1\">{UDF.UdfDescription}</Typography>\r\n            <TextField\r\n                className={classes.input}\r\n                id={UDF.UDFID.toString()}\r\n                name={UDF.UDFID.toString()}\r\n                label={UDF.Name}\r\n                type=\"date\"\r\n                value={udfValue}\r\n                required={UDF.IsRequired}\r\n                InputLabelProps={{\r\n                    shrink: true,\r\n                    style: { padding: \"0 0 0 15px\" },\r\n                }}\r\n                defaultValue=\"\"\r\n                onChange={onChangeHandler}\r\n                onInput={(e) => onChangeInput(e)}\r\n                {...props}\r\n            />\r\n        </div>\r\n    );\r\n};\r\n\r\nUDFDateTime.propTypes = {\r\n    UDF: PropTypes.object.isRequired\r\n};\r\n\r\nexport default UDFDateTime;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { TextField, Typography } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingBottom: \"20px\"\r\n    }\r\n}));\r\n\r\nconst UDFNumber = (props) => {\r\n    const { UDF } = props;\r\n    const classes = useStyles();\r\n\r\n    const onChangeHandler = (event) => {\r\n        props.changecontrolvalue(event, props.bookingID, UDF.UDFCategoryName, UDF.UDFID);\r\n    }\r\n\r\n    const GetUserMemberValue = () => {\r\n        if (props.isMembership) {\r\n            let userV = \"\";\r\n\r\n            if (UDF.Users.filter(x => x.userID == props.usernumber).length > 0) {\r\n                let user = UDF.Users.find(x => x.userID == props.usernumber);\r\n\r\n                if (user && user.hasOwnProperty('userUDFValue')) {\r\n                    userV = user.userUDFValue;\r\n                }\r\n\r\n                return userV;\r\n            }\r\n        }\r\n        else {\r\n            return UDF.Value;\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className={classes.root}>\r\n            <Typography variant=\"subtitle1\">{UDF.UdfDescription}</Typography>\r\n            <TextField\r\n                id={UDF.UDFID.toString()}\r\n                name={UDF.UDFID.toString()}\r\n                label={UDF.Name}\r\n                type=\"Number\"\r\n                required={UDF.IsRequired}\r\n                onChange={onChangeHandler}\r\n                value={GetUserMemberValue()}\r\n                inputProps={{ maxLength: UDF.UDFLength }}\r\n                InputLabelProps={{\r\n                    style: { padding: \"0 0 0 15px\" },\r\n                }}\r\n                {...props}\r\n            />\r\n        </div>\r\n    );\r\n};\r\n\r\nUDFNumber.propTypes = {\r\n    UDF: PropTypes.object.isRequired\r\n};\r\n\r\nexport default UDFNumber;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Select, MenuItem, Typography } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingBottom: \"20px\",\r\n         marginLeft: \"15px\"\r\n    }\r\n}));\r\n\r\nconst UDFSelect = (props) => {\r\n    const { UDF } = props;\r\n    const classes = useStyles();\r\n\r\n    const onChangeHandler = (event) => {\r\n        props.changecontrolvalue(event, props.bookingID, UDF.UDFCategoryName, UDF.UDFID);\r\n    }\r\n\r\n    const GetUserMemberValue = () => {\r\n        if (props.isMembership) {\r\n            let userV = \"\";\r\n\r\n            if (UDF.Users.filter(x => x.userID == props.usernumber).length > 0) {\r\n                let user = UDF.Users.find(x => x.userID == props.usernumber);\r\n\r\n                if (user && user.hasOwnProperty('userUDFValue')) {\r\n                    userV = user.userUDFValue;\r\n                }\r\n\r\n                return userV;\r\n            }\r\n        }\r\n        else {\r\n            return UDF.Value;\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div className={classes.root}>\r\n            <Typography variant=\"subtitle1\">{UDF.UdfDescription}</Typography>\r\n\r\n            <Select\r\n                fullWidth={true}\r\n                labelId={UDF.UDFID.toString()}\r\n                id={UDF.UDFID.toString()}\r\n                name={UDF.UDFID.toString()}\r\n                displayEmpty\r\n                required={UDF.IsRequired}\r\n                onChange={onChangeHandler}\r\n                {...props}\r\n                value={GetUserMemberValue()}\r\n                sx={{ p: 4, '& .MuiInputLabel-root': { p: 4 } }}\r\n                variant=\"standard\"\r\n            >\r\n                {UDF.Picklist.map(picklist => (\r\n                    <MenuItem key={picklist.UDFPicklistID} value={picklist.Option}>{picklist.Option}</MenuItem>\r\n                ))}\r\n            </Select>\r\n            {/* </TextField> */}\r\n        </div >\r\n    );\r\n};\r\n\r\nUDFSelect.propTypes = {\r\n    UDF: PropTypes.object.isRequired\r\n};\r\n\r\nexport default UDFSelect;\r\n","import React, { useEffect, useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport NumberFormat from 'react-number-format';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n\r\n}));\r\n\r\n\r\nfunction NumberFormatCustom(props) {\r\n  const { inputRef, onChange, ...other } = props;\r\n\r\n  return (\r\n    <NumberFormat\r\n      {...other}\r\n      getInputRef={inputRef}\r\n      onValueChange={(values) => {\r\n        onChange({\r\n          target: {\r\n            name: props.name,\r\n            value: values.value,\r\n          },\r\n        });\r\n      }}\r\n      thousandSeparator\r\n      isNumericString\r\n      prefix=\"$\"\r\n    />\r\n  );\r\n}\r\n\r\nexport default function NumberInput(props) {\r\n  const classes = useStyles();\r\n  const { MinValue, MaxValue, OnInputChange, onValidationChange } = props;\r\n  const [isValidAmount, setIsValidAmount] = useState(true);\r\n\r\n  const onChangeHandler = (event) => {\r\n    if (MinValue && MaxValue) {\r\n      if (parseFloat(event.target.value) < MinValue || parseFloat(event.target.value) > MaxValue) {\r\n        setIsValidAmount(false);\r\n      }\r\n      else {\r\n        setIsValidAmount(true);\r\n      }\r\n    }\r\n\r\n    OnInputChange(event);\r\n  }\r\n\r\n  useEffect(() => {\r\n    onValidationChange(isValidAmount)\r\n  }, [isValidAmount])\r\n\r\n  return (\r\n    <div>\r\n    <TextField\r\n      {...props}\r\n      error={!isValidAmount}\r\n      onChange={onChangeHandler}\r\n      InputProps={{\r\n        inputComponent: NumberFormatCustom,\r\n      }}\r\n    />\r\n    </div>\r\n  );\r\n}\r\n\r\nNumberInput.propTypes = {\r\n  MinValue: PropTypes.number,\r\n  MaxValue: PropTypes.number,\r\n  onValidationChange: PropTypes.func,\r\n  OnInputChange: PropTypes.func.isRequired,\r\n};","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, CardActions, Typography, Button, CardHeader } from '@material-ui/core';\r\nimport { genfunction } from 'helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    card: {\r\n        \"&:hover\": {\r\n            transform: 'scale(1.02)',\r\n            WebkitTransform: 'scale(1.02)',\r\n            boxShadow: \"inset 0 0 0 2px\",\r\n            cursor: 'pointer'\r\n        }\r\n    },\r\n    headerbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    }\r\n}));\r\n\r\nconst DisplayCard = props => {\r\n\r\n    const { Title, Description, ButtonText, ButtonCallBack, ButtonCallBackReference } = props;\r\n    const classes = useStyles();\r\n    return (\r\n        <Card className={classes.card}>\r\n            <CardHeader className={classes.headerbox}\r\n                title={Title}\r\n                titleTypographyProps={{ color: \"inherit\" }}\r\n            />\r\n            <CardContent>\r\n                <Typography component=\"p\" color=\"textSecondary\">\r\n                    <br />\r\n                    {ReactHtmlParser(genfunction.replaceEscapeCharacters(Description))}\r\n                </Typography>\r\n            </CardContent>\r\n            <CardActions>\r\n                <Button variant=\"contained\" onClick={() => ButtonCallBack(ButtonCallBackReference)} color=\"primary\">{ButtonText}</Button>\r\n            </CardActions>\r\n        </Card>\r\n    );\r\n};\r\n\r\nDisplayCard.propTypes = {\r\n    Title: PropTypes.string.isRequired,\r\n    Description: PropTypes.string.isRequired,\r\n    ButtonText: PropTypes.string.isRequired,\r\n    ButtonCallBack: PropTypes.func.isRequired,\r\n    ButtonCallBackReference: PropTypes.object.isRequired\r\n};\r\n\r\nexport default DisplayCard;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Typography } from '@material-ui/core';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { genfunction } from 'helpers'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n}));\r\n\r\nconst getSubTitle = (subTitle) => {\r\n    return subTitle && subTitle != \"\" ?\r\n        <Typography variant=\"subtitle1\">\r\n            {ReactHtmlParser(genfunction.replaceEscapeCharacters(subTitle))}\r\n        </Typography>\r\n        : \"\"\r\n}\r\n\r\nconst Title = (props) => {\r\n    const classes = useStyles();\r\n    return (\r\n        <div className={classes.content}>\r\n            <Typography variant=\"h1\">\r\n                {ReactHtmlParser(genfunction.replaceEscapeCharacters(props.Header))}\r\n            </Typography>\r\n            {getSubTitle(props.SubTitle)}\r\n            {getSubTitle(props.SubTitle2)}\r\n        </div>\r\n    );\r\n};\r\n\r\nTitle.propTypes = {\r\n    Header: PropTypes.string,\r\n    SubTitle: PropTypes.string,\r\n    SubTitle2: PropTypes.string\r\n};\r\n\r\nexport default Title;\r\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Avatar, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    minHeight: 'fit-content'\n  },\n  avatar: {\n    width: 60,\n    height: 60\n  },\n  name: {\n    marginTop: theme.spacing(1)\n  }\n}));\n\nconst Profile = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const user = {\n    name: 'Centaman Dev',\n    avatar: '/unset.png',\n    bio: 'Dev'\n  };\n\n  return (\n    <div\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <Avatar\n        alt=\"Person\"\n        className={classes.avatar}\n        component={RouterLink}\n        src={user.avatar}\n        to=\"/settings\"\n      />\n      <Typography\n        className={classes.name}\n        variant=\"h4\"\n      >\n        {user.name}\n      </Typography>\n      <Typography variant=\"body2\">{user.bio}</Typography>\n    </div>\n  );\n};\n\nProfile.propTypes = {\n  className: PropTypes.string\n};\n\nexport default Profile;\n","/* eslint-disable react/no-multi-comp */\n/* eslint-disable react/display-name */\nimport React, { forwardRef } from 'react';\nimport { NavLink as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { List, ListItem, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {},\n  item: {\n    display: 'flex',\n    paddingTop: 0,\n    paddingBottom: 0\n  },\n  button: {\n    color: colors.blueGrey[800],\n    padding: '10px 8px',\n    justifyContent: 'flex-start',\n    textTransform: 'none',\n    letterSpacing: 0,\n    width: '100%',\n    fontWeight: theme.typography.fontWeightMedium\n  },\n  icon: {\n    color: theme.palette.icon,\n    width: 24,\n    height: 24,\n    display: 'flex',\n    alignItems: 'center',\n    marginRight: theme.spacing(1)\n  },\n  active: {\n    color: theme.palette.primary.main,\n    fontWeight: theme.typography.fontWeightMedium,\n    '& $icon': {\n      color: theme.palette.primary.main\n    }\n  }\n}));\n\nconst CustomRouterLink = forwardRef((props, ref) => (\n  <div\n    ref={ref}\n    style={{ flexGrow: 1 }}\n  >\n    <RouterLink {...props} />\n  </div>\n));\n\nconst SidebarNav = props => {\n  const { pages, className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <List\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      {pages.map(page => (\n        <ListItem\n          className={classes.item}\n          disableGutters\n          key={page.title}\n        >\n          <Button\n            activeClassName={classes.active}\n            className={classes.button}\n            component={CustomRouterLink}\n            to={page.href}\n          >\n            <div className={classes.icon}>{page.icon}</div>\n            {page.title}\n          </Button>\n        </ListItem>\n      ))}\n    </List>\n  );\n};\n\nSidebarNav.propTypes = {\n  className: PropTypes.string,\n  pages: PropTypes.array.isRequired\n};\n\nexport default SidebarNav;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Button, colors } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    backgroundColor: colors.grey[50]\n  },\n  media: {\n    paddingTop: theme.spacing(2),\n    height: 80,\n    textAlign: 'center',\n    '& > img': {\n      height: '100%',\n      width: 'auto'\n    }\n  },\n  content: {\n    padding: theme.spacing(1, 2)\n  },\n  actions: {\n    padding: theme.spacing(1, 2),\n    display: 'flex',\n    justifyContent: 'center'\n  }\n}));\n\nconst UpgradePlan = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <div\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <div className={classes.media}>\n        <img\n          alt=\"Upgrade to PRO\"\n          src=\"/unset.jpeg\"\n        />\n      </div>\n      <div className={classes.content}>\n        <Typography\n          align=\"center\"\n          gutterBottom\n          variant=\"h6\"\n        >\n          Upgrade to PRO\n        </Typography>\n        <Typography\n          align=\"center\"\n          variant=\"body2\"\n        >\n          Upgrade to Devias Kit PRO and get even more components\n        </Typography>\n      </div>\n      <div className={classes.actions}>\n        <Button\n          color=\"primary\"\n          component=\"a\"\n          href=\"https://devias.io/products/devias-kit-pro\"\n          variant=\"contained\"\n        >\n          Upgrade\n        </Button>\n      </div>\n    </div>\n  );\n};\n\nUpgradePlan.propTypes = {\n  className: PropTypes.string\n};\n\nexport default UpgradePlan;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Divider, Drawer } from '@material-ui/core';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport PeopleIcon from '@material-ui/icons/People';\nimport ShoppingBasketIcon from '@material-ui/icons/ShoppingBasket';\nimport TextFieldsIcon from '@material-ui/icons/TextFields';\nimport ImageIcon from '@material-ui/icons/Image';\nimport AccountBoxIcon from '@material-ui/icons/AccountBox';\nimport SettingsIcon from '@material-ui/icons/Settings';\nimport LockOpenIcon from '@material-ui/icons/LockOpen';\n\nimport { Profile, SidebarNav, UpgradePlan } from './components';\n\nconst useStyles = makeStyles(theme => ({\n  drawer: {\n    width: 240,\n    [theme.breakpoints.up('lg')]: {\n      marginTop: 64,\n      height: 'calc(100% - 64px)'\n    }\n  },\n  root: {\n    backgroundColor: theme.palette.white,\n    display: 'flex',\n    flexDirection: 'column',\n    height: '100%',\n    padding: theme.spacing(2)\n  },\n  divider: {\n    margin: theme.spacing(2, 0)\n  },\n  nav: {\n    marginBottom: theme.spacing(2)\n  }\n}));\n\nconst Sidebar = props => {\n  const { open, variant, onClose, className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const pages = [\n    {\n      title: 'Dashboard',\n      href: '/dashboard',\n      icon: <DashboardIcon />\n    },\n    {\n      title: 'Users',\n      href: '/users',\n      icon: <PeopleIcon />\n    },\n    {\n      title: 'Products',\n      href: '/products',\n      icon: <ShoppingBasketIcon />\n    },\n    {\n      title: 'Authentication',\n      href: '/sign-in',\n      icon: <LockOpenIcon />\n    },\n    {\n      title: 'Typography',\n      href: '/typography',\n      icon: <TextFieldsIcon />\n    },\n    {\n      title: 'Icons',\n      href: '/icons',\n      icon: <ImageIcon />\n    },\n    {\n      title: 'Account',\n      href: '/account',\n      icon: <AccountBoxIcon />\n    },\n    {\n      title: 'Settings',\n      href: '/settings',\n      icon: <SettingsIcon />\n    }\n  ];\n\n  return (\n    <Drawer\n      anchor=\"left\"\n      classes={{ paper: classes.drawer }}\n      onClose={onClose}\n      open={open}\n      variant={variant}\n    >\n      <div\n        {...rest}\n        className={clsx(classes.root, className)}\n      >\n        <Profile />\n        <Divider className={classes.divider} />\n        <SidebarNav\n          className={classes.nav}\n          pages={pages}\n        />\n        <UpgradePlan />\n      </div>\n    </Drawer>\n  );\n};\n\nSidebar.propTypes = {\n  className: PropTypes.string,\n  onClose: PropTypes.func,\n  open: PropTypes.bool.isRequired,\n  variant: PropTypes.string.isRequired\n};\n\nexport default Sidebar;\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport DialogeBox from '../components/DialogeBox/DialogeBox';\r\n\r\nimport {\r\n    actionResetUDFs, actionResetMembershipUDFs, actionResetCustomerUdfs, actionValidateRecaptchaReset, actionResetCustomerAddresses,\r\n    actionResetCustomer, actionResetIDMEUSERDATA, actionResetCostRate, actionResetMembershipPackage, actionResetExtraItems,\r\n    actionResetTransactionFee, actionResetDonations, actionResetBookingTypes, actionResetFieldValuesState, actionResetMemberValidation,\r\n    actionStartDiscardTime, actionResetDiscardTime, actionShopCartResetStateWithTourHold, actionShopCartResetStateWithUniqueCouponHold,\r\n    actionShopCartResetDonation, actionShopCartResetMembershipPackage, actionShopCartResetGATicket,\r\n    actionShopCartRemoveGiftcards, actionShopcartResetOrderProducts, actionResetGiftCards,\r\n    actionShopCartResetDonationProduct\r\n} from 'actions';\r\n\r\nconst { ApplyTransactionFee, CartDiscardTime, CartDiscardPopupTitle, CartDiscardPopupMsg, CartDiscardPopupButton1Text, CartDiscardPopupButton2Text,\r\n    CartDiscardPopupTime, PaymentMethodType } = window['runConfig'];\r\n\r\nconst CartDiscardTimeController = props => {\r\n\r\n    const [open, setopen] = useState(false);\r\n    const [dialogetimer, setdialogetimer] = useState(CartDiscardPopupTime);\r\n\r\n    const carddiscard = useSelector(state => state.reducerCardDiscardTime);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const MembershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const GATickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const membershipTypesUdfs = useSelector(state => state.reducerMembershipUserDefinedFields);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const customerUdfs = useSelector(state => state.reducerCustomerUDFs);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const customerAddresses = useSelector(state => state.reducerCustomerAddresses.customerAddresses);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n    \r\n    const dispatch = useDispatch();\r\n\r\n    const ContinueButtonHandler = () => {\r\n        setopen(false);\r\n        setdialogetimer(CartDiscardPopupTime);\r\n        SetCartTimer();\r\n    }\r\n\r\n    const DialogeTimeout = () => {\r\n        setopen(false);\r\n        setdialogetimer(CartDiscardPopupTime);\r\n        actionShopCartResetDonation(dispatch);\r\n\r\n        if (events && events.length > 0) {\r\n            actionShopCartResetStateWithTourHold(dispatch, events);\r\n        }\r\n\r\n        if (shopcartreducer.tourCoupons.length > 0) {\r\n            actionResetDonations(dispatch);\r\n            actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n        }\r\n\r\n        if (shopcartreducer.cashless.length > 0) {\r\n            actionShopCartRemoveGiftcards(dispatch);\r\n        }\r\n\r\n        actionResetDiscardTime(dispatch);\r\n        actionResetMemberValidation(dispatch);\r\n        actionResetBookingTypes(dispatch);\r\n        actionResetExtraItems(dispatch);\r\n        actionShopCartResetMembershipPackage(dispatch);\r\n        actionResetMembershipPackage(dispatch);\r\n        actionResetCostRate(dispatch);\r\n        actionResetIDMEUSERDATA(dispatch);\r\n\r\n        if (ApplyTransactionFee) {\r\n            actionResetTransactionFee(dispatch);\r\n        }\r\n\r\n        if (bookingUDFS.bookingUDFs.length > 0) {\r\n            actionResetUDFs(dispatch);\r\n        }\r\n\r\n        actionShopCartResetGATicket(dispatch);\r\n        actionShopcartResetOrderProducts(dispatch);\r\n        actionResetGiftCards(dispatch);\r\n        actionShopCartResetDonationProduct(dispatch);\r\n        actionResetFieldValuesState(dispatch);\r\n\r\n        if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n            actionResetMembershipUDFs(dispatch);\r\n        }\r\n\r\n        if (customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0) {\r\n            actionResetCustomerUdfs(dispatch);\r\n        }\r\n\r\n        if (customerAddresses && customerAddresses.length > 0) {\r\n            actionResetCustomerAddresses(dispatch);\r\n        }\r\n\r\n        if (customer.customer && customer.customer.length > 0) {\r\n            actionResetCustomer(dispatch);\r\n        }\r\n\r\n        if (PaymentMethodType === \"GlobalPayments\") {\r\n            setTimeout(() => {\r\n                window.location.reload();\r\n            }, 1000)\r\n        }\r\n\r\n        if(stopUserToPurchase === false)\r\n        {\r\n            setTimeout(() => {\r\n                actionValidateRecaptchaReset(dispatch);\r\n            }, 1000)\r\n        }\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        if (open) {\r\n\r\n            if (dialogetimer == 0) {\r\n                DialogeTimeout();\r\n            }\r\n            else {\r\n                const timer = setTimeout(() => {\r\n                    setdialogetimer(dialogetimer - 1);\r\n                }, 1000);\r\n                return () => {\r\n                    clearTimeout(timer);\r\n                };\r\n            }\r\n\r\n        }\r\n    }, [dialogetimer]);\r\n\r\n    const ShowDialoge = () => {\r\n        setopen(true);\r\n        actionResetDiscardTime(dispatch);\r\n        setdialogetimer(dialogetimer - 1);\r\n    }\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n    const SetCartTimer = () => {\r\n        if (open == false && carddiscard.timerid == 0 && (events.length > 0 || GATickets.length > 0 || MembershipPackages.length > 0 || orderProducts.length > 0 || ShowGiftCards() || donationProducts.length > 0) && CartDiscardTime > 0) {\r\n            let timeid = setInterval(() => {\r\n                actionStartDiscardTime(dispatch, timeid)\r\n            }, 1000);\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        SetCartTimer();\r\n    }, [carddiscard.timerid, events.length, GATickets.length, orderProducts.length, MembershipPackages.length, ShowGiftCards(), open, donationProducts.length])\r\n\r\n    useEffect(() => {\r\n        if (carddiscard.timerid > 0 && CartDiscardTime > 0 && carddiscard.DiscardTime == 0 && (events.length > 0 || GATickets.length > 0 || orderProducts.length > 0 || MembershipPackages.length > 0 || ShowGiftCards() || donationProducts.length)) {\r\n            ShowDialoge();\r\n        }\r\n        if (carddiscard.timerid > 0 && events.length == 0 && GATickets.length == 0 && MembershipPackages.length == 0 && orderProducts.length == 0 && ShowGiftCards() == false && donationProducts.length == 0 && CartDiscardTime > 0) {\r\n            actionResetDiscardTime(dispatch);\r\n        }\r\n    })\r\n\r\n    const buttontext = () => {\r\n        return \"(\" + dialogetimer + \")\" + CartDiscardPopupButton1Text;\r\n    }\r\n\r\n    return (\r\n        <DialogeBox open={open} title={CartDiscardPopupTitle}\r\n            message={CartDiscardPopupMsg}\r\n            button1text={buttontext()}\r\n            button1clickhandler={DialogeTimeout}\r\n            button2text={CartDiscardPopupButton2Text}\r\n            button2clickhandler={ContinueButtonHandler}\r\n        ></DialogeBox>\r\n    );\r\n};\r\n\r\nexport default CartDiscardTimeController;\r\n","import React, { useEffect } from \"react\";\r\nimport Button from '@mui/material/Button';\r\nimport Dialog from '@mui/material/Dialog';\r\nimport DialogActions from '@mui/material/DialogActions';\r\nimport DialogContent from '@mui/material/DialogContent';\r\nimport DialogContentText from '@mui/material/DialogContentText';\r\nimport DialogTitle from '@mui/material/DialogTitle';\r\n\r\nconst { NewVersionAvailableMsg } = window['runConfig'];\r\n\r\nconst VersionCheck = () => {\r\n\r\n    const [open, setOpen] = React.useState(false);\r\n\r\n    const ClearCache = () => {\r\n\r\n        caches.keys().then((names) => {\r\n            // Delete all the cache files\r\n            names.forEach(name => {\r\n                caches.delete(name);\r\n            })\r\n        });\r\n\r\n\r\n        // Makes sure the page reloads. Changes are only visible after you refresh.\r\n        window.location.reload(true);\r\n    }\r\n\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n        ClearCache();\r\n    };\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        let getLatestVersionUrl = `${process.env.PUBLIC_URL}/version.js`;\r\n        let latestVersion = '';\r\n        let currentVersion = window['info'].version;\r\n\r\n\r\n        try {\r\n\r\n            if (open === false) {\r\n                fetch(getLatestVersionUrl)\r\n                    .then(response => {\r\n                        return response.text().then(text => {\r\n                            let js =\r\n\r\n                                JSON.stringify(text.replace(\" \", \"\")\r\n                                    .replace(\"window['info']=\", \"\")\r\n                                    .replace(\"version\", '\"version\"')\r\n                                    .replace(\"\\n\\r\", \"\")\r\n                                    .replace(\"'\", '\"')\r\n                                    .replace(\"'\", '\"'));\r\n\r\n                            let jsonData = JSON.parse(js);\r\n                            latestVersion = JSON.parse(jsonData).version;\r\n\r\n                            if (latestVersion !== currentVersion) {\r\n                                setOpen(true);\r\n                            }\r\n                        });\r\n                    })\r\n                    .catch(error => console.error(error));\r\n            }\r\n\r\n        } catch (error) {\r\n            console.error(error);\r\n        }\r\n    })\r\n\r\n    if (open == false) {\r\n        return (\r\n            <></>\r\n        );\r\n    }\r\n\r\n    if (open == true) {\r\n        return (\r\n            <div>\r\n                <Dialog\r\n                    open={open}\r\n                    onClose={handleClose}\r\n                    aria-labelledby=\"alert-dialog-title\"\r\n                    aria-describedby=\"alert-dialog-description\"\r\n                    disableEscapeKeyDown={true}\r\n                    disableBackdropClick={true}\r\n                >\r\n                    <DialogTitle id=\"alert-dialog-title\">\r\n                        {\"New Version\"}\r\n                    </DialogTitle>\r\n                    <DialogContent>\r\n                        <DialogContentText id=\"alert-dialog-description\">\r\n                            {NewVersionAvailableMsg}\r\n                        </DialogContentText>\r\n                    </DialogContent>\r\n                    <DialogActions >\r\n                        <Button onClick={handleClose} variant=\"contained\" size=\"medium\" color=\"primary\" alignItems=\"center\">\r\n                            Refresh\r\n                        </Button>\r\n                    </DialogActions>\r\n                </Dialog>\r\n            </div>\r\n        );\r\n    }\r\n};\r\n\r\n\r\nexport default VersionCheck;","import React, { useState } from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar, Badge, IconButton, Button, Hidden, Drawer, List, ListItem, ListItemText, Typography } from '@material-ui/core';\nimport { withRouter } from 'react-router'\nimport { useSelector } from 'react-redux';\nimport CartDiscardTimeController from 'helpers/CartDiscardTimeController';\nimport {\n  Restaurant as RestaurantIcon, Person as PersonIcon, ConfirmationNumber as ConfirmationNumberIcon,\n  AddShoppingCart, CardGiftcard, Menu as MenuIcon, Close as CloseIcon, Edit as EditIcon\n} from '@material-ui/icons';\nimport Link from '@material-ui/core/Link';\nimport Icon from '@material-ui/core/Icon';\nimport VersionCheck from 'helpers/VersionCheck';\nimport theme from 'theme';\n\nconst { RedirectLogoURL, GiftCardsHeading, HeaderExtraText, TicketsHeading, MembershipsHeading, TicketLinkHeading,\n  FoodOrderLinkHeading, DonationLinkHeading, ManageMyBookingButtonTitle, ManageMyBookingButtonShow } = window['runConfig'];\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    '& > *': {\n      margin: theme.spacing(0.3)\n    },\n    float: 'left',\n    marginLeft: '20px',\n    color: 'white',\n    marginTop: '5px'\n  },\n  flexGrow: {\n    flexGrow: 1\n  },\n  iconSize: {\n    fontSize: \"2rem\"\n  },\n  headerText: {\n    color: theme.palette.primary.contrastText,\n    [theme.breakpoints.up('sm')]: {\n      marginLeft: '5px'\n    }\n  },\n  disabledlink: {\n    pointerEvents: 'none'\n  },\n  menuItem: {\n    color: theme.palette.primary.contrastText\n  },\n  menuItemText: {\n    color: theme.palette.primary.contrastText,\n    fontSize: 14,\n    marginLeft: 10,\n    marginTop: 5,\n    cursor: 'pointer'\n  },\n  linkItem: {\n    color: theme.palette.primary.contrastText,\n    fontSize: '14px',\n    marginTop: '5px',\n    cursor: 'pointer'\n  },\n  logo: {\n    [theme.breakpoints.up('sm')]: {\n      maxWidth: '200px',\n      maxHeight: '50px',\n    },\n    [theme.breakpoints.down('xs')]: {\n      maxWidth: '120px',\n      maxHeight: '40px',\n    }\n  }\n}\n));\n\nconst Topbar = props => {\n  const { className, onSidebarOpen, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [isMenuDrawerOpen, setIsMenuDrawerOpen] = useState(false);\n\n  const events = useSelector(state => state.reducerShopCart.events);\n  const memberships = useSelector(state => state.reducerShopCart.MembershipPackages);\n  const GATickets = useSelector(state => state.reducerShopCart.GATickets);\n  const managemybkng = useSelector(state => state.reducerShopCart.managemybooking);\n  const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\n  const giftcards = useSelector(state => state.reducerGiftCards);\n  const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\n\n  const handleClick = event => {\n    if (managemybkng === false) {\n      if (orderProducts && orderProducts.length > 0) {\n        props.history.push('/revieworderproducts');\n      }\n      else\n        props.history.push('/Checkout');\n    }\n  };\n\n  const CountGiftCards = () => {\n    let totalGFs = 0;\n    if (giftcards.giftcards && giftcards.giftcards.length > 0) {\n      totalGFs = giftcards.giftcards.filter(x => x.AddedToCart === true && x.CartQty > 0).map(({ CartQty }) => CartQty).reduce((sum, i) => sum + i, 0);\n    }\n\n    return totalGFs;\n  }\n\n\n  const eventitemcount = () => {\n    if ((events == null || events.length == 0) && (memberships == null || memberships.length == 0) && (GATickets == null || GATickets.length == 0) && (orderProducts == null || orderProducts.length == 0) && (giftcards.giftcards == null || giftcards.giftcards.length == 0) && (donationProducts == null || donationProducts.length == 0))\n      return 0;\n    else {\n      let qty = 0;\n      events.forEach(event => {\n        event.TourProducts.forEach(product => {\n          qty += product.Quantity;\n        })\n      });\n\n      GATickets.forEach(ticket => {\n        qty += ticket.Quantity;\n      })\n\n      donationProducts.forEach(product => {\n        qty++;\n      })\n\n      if (memberships && memberships.length > 0) {\n        qty++;\n      }\n\n      orderProducts.forEach(p => {\n        qty += p.Quantity;\n      });\n\n      if (giftcards.giftcards && giftcards.giftcards.length > 0) {\n        qty += CountGiftCards();\n      }\n\n      return qty;\n    }\n  }\n\n  const OnClickMenuLink = (path) => {\n    props.history.push(path);\n    setIsMenuDrawerOpen(false);\n  }\n\n  return (\n    <AppBar style={{ zIndex: 1000 }}>\n      <Toolbar >\n        <VersionCheck></VersionCheck>\n        {!managemybkng ?\n          <CartDiscardTimeController></CartDiscardTimeController>\n          : null}\n\n\n        <Hidden lgUp>\n          {managemybkng ? null :\n            <>\n              <IconButton\n                edge=\"start\"\n                color=\"inherit\"\n                aria-label=\"menu\"\n                onClick={() => setIsMenuDrawerOpen(true)}\n              >\n                <MenuIcon />\n              </IconButton>\n              <Drawer\n                PaperProps={{\n                  style: { backgroundColor: theme.palette.primary.main }\n                }}\n                open={isMenuDrawerOpen}\n                onClose={() => setIsMenuDrawerOpen(false)}>\n                <List key={\"menu_link\"}>\n\n                  <ListItem button onClick={() => { setIsMenuDrawerOpen(false) }}>\n                    <Badge variant=\"standard\">\n                      <CloseIcon className={classes.menuItem} />\n                      <Typography className={classes.menuItemText}></Typography>\n                    </Badge>\n                  </ListItem>\n\n                  {TicketsHeading && TicketsHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/products')}>\n                      <Badge variant=\"standard\">\n                        <ConfirmationNumberIcon className={classes.menuItem} />\n                        <Typography className={classes.menuItemText}> {TicketsHeading}</Typography>\n                      </Badge>\n                    </ListItem> : \"\"}\n\n                  {TicketLinkHeading && TicketLinkHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/gatickets')}>\n                      <Badge variant=\"standard\">\n                        <ConfirmationNumberIcon className={classes.menuItem} />\n                        <Typography className={classes.menuItemText}>  {TicketLinkHeading}</Typography>\n                      </Badge>\n                    </ListItem>\n                    : \"\"}\n\n                  {MembershipsHeading && MembershipsHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/memberships')}>\n                      <Badge variant=\"standard\">\n                        <PersonIcon className={classes.menuItem} />\n                        <Typography className={classes.menuItemText}>{MembershipsHeading}</Typography>\n                      </Badge>\n                    </ListItem> : \"\"}\n\n                  {GiftCardsHeading && GiftCardsHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/giftcards')}>\n                      <Badge variant=\"standard\">\n                        <CardGiftcard className={classes.menuItem} />\n                        <Typography className={classes.menuItemText}>{GiftCardsHeading}</Typography>\n                      </Badge>\n                    </ListItem> : \"\"}\n\n                  {FoodOrderLinkHeading && FoodOrderLinkHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/orderlocation')}>\n                      <Badge variant=\"standard\">\n                        <RestaurantIcon className={classes.menuItem} />\n                        <Typography className={classes.menuItemText}>{FoodOrderLinkHeading}</Typography>\n                      </Badge>\n                    </ListItem> : \"\"}\n\n                  {DonationLinkHeading && DonationLinkHeading != \"\" ?\n                    <ListItem button onClick={() => OnClickMenuLink('/donationareas')}>\n                      <Badge variant=\"standard\">\n                        <Icon className={classes.menuItem}>volunteer_activism</Icon>\n                        <Typography className={classes.menuItemText}>{DonationLinkHeading}</Typography>\n                      </Badge>\n                    </ListItem> : \"\"}\n\n                  {!managemybkng && ManageMyBookingButtonShow ?\n                    <ListItem button onClick={() => OnClickMenuLink('/findmybooking')}>\n                      <Badge variant=\"standard\">\n                        <EditIcon className={classes.menuItem}></EditIcon>\n                        <Typography className={classes.menuItemText}>{ManageMyBookingButtonTitle}</Typography>\n                      </Badge>\n                    </ListItem>\n                    : \"\"}\n\n                </List>\n              </Drawer>\n            </>\n          }\n        </Hidden>\n\n        <Hidden xsDown>\n          <Link to=\"/\" className={managemybkng ? classes.disabledlink : ''} onClick={() => { window.location.href = RedirectLogoURL; }}>\n            <img\n              alt=\"Logo\"\n              src={process.env.PUBLIC_URL + \"/images/logos/logo.png\"}\n              className={(managemybkng ? classes.disabledlink : '') + ' ' + \"WebsiteLogoSizeOnLargeDevices \" + classes.logo}\n            />\n\n          </Link>\n          <Typography className={classes.headerText} variant='body1'>{HeaderExtraText}</Typography>\n        </Hidden>\n\n        <Hidden smUp>\n          <Link to=\"/\" className={managemybkng ? classes.disabledlink : ''} onClick={() => { window.location.href = RedirectLogoURL; }}>\n            <img\n              alt=\"Logo\"\n              src={process.env.PUBLIC_URL + \"/images/logos/logo.png\"}\n              className={(managemybkng ? classes.disabledlink : '') + ' ' + \"WebsiteLogoSizeOnMobile \" + classes.logo}\n            />\n            <Typography className={classes.headerText} variant='body1'>{HeaderExtraText}</Typography>\n          </Link>\n\n        </Hidden>\n\n        <Hidden mdDown >\n          {managemybkng ? null :\n            <div className={classes.root}>\n\n              {TicketsHeading && TicketsHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <ConfirmationNumberIcon />\n                    <Link\n                      className={classes.linkItem}\n                      onClick={() => { props.history.push('/products'); }}>\n                      {TicketsHeading}\n                    </Link>\n                  </Badge>\n                </span> : \"\"}\n\n              {TicketLinkHeading && TicketLinkHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <ConfirmationNumberIcon />\n                    <Link className={classes.linkItem}\n                      onClick={() => { props.history.push('/gatickets'); }}>\n                      {TicketLinkHeading}\n                    </Link>\n                  </Badge>\n                </span>\n                : \"\"}\n\n              {MembershipsHeading && MembershipsHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <PersonIcon />\n                    <Link\n                      className={classes.linkItem}\n                      onClick={() => { props.history.push('/memberships'); }}>\n                      {MembershipsHeading}\n                    </Link>\n                  </Badge>\n                </span> : \"\"}\n\n              {GiftCardsHeading && GiftCardsHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <CardGiftcard />\n                    <Link\n                      className={classes.linkItem}\n                      onClick={() => { props.history.push('/giftcards'); }}>\n                      {GiftCardsHeading}\n                    </Link>\n                  </Badge>\n                </span> : \"\"}\n\n              {FoodOrderLinkHeading && FoodOrderLinkHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <RestaurantIcon />\n                    <Link\n                      className={classes.linkItem}\n                      onClick={() => { props.history.push('/orderlocation'); }}>\n                      {FoodOrderLinkHeading}\n                    </Link>\n                  </Badge>\n                </span> : \"\"}\n\n              {DonationLinkHeading && DonationLinkHeading != \"\" ?\n                <span>\n                  <Badge variant=\"standard\">\n                    <Icon>volunteer_activism</Icon>\n                    <Link\n                      className={classes.linkItem}\n                      onClick={() => { props.history.push('/donationareas'); }}>\n                      {DonationLinkHeading}\n                    </Link>\n                  </Badge>\n                </span> : \"\"}\n\n            </div>\n          }\n        </Hidden>\n\n        <div className={classes.flexGrow} />\n\n        <>\n          <Hidden mdDown>\n            {!managemybkng && ManageMyBookingButtonShow ?\n              <Button variant=\"outlined\" size=\"small\" className=\"ManageMyBooking\" onClick={() => { props.history.push('/findmybooking'); }}>\n                {ManageMyBookingButtonTitle}\n              </Button>\n              : \"\"}\n          </Hidden>\n\n\n          {!managemybkng ?\n            <IconButton color=\"inherit\" onClick={handleClick}>\n              <Badge badgeContent={eventitemcount()} color=\"error\">\n                <AddShoppingCart className={classes.iconSize} />\n              </Badge>\n            </IconButton>\n            : \"\"}\n        </>\n      </Toolbar>\n    </AppBar >\n  );\n};\n\nexport default withRouter(Topbar);\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles, useTheme } from '@material-ui/styles';\nimport { useMediaQuery } from '@material-ui/core';\n\nimport { Sidebar, Topbar } from './components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%',\n    [theme.breakpoints.down('md')]: {\n      paddingTop: 60\n    },\n    [theme.breakpoints.up('md')]: {\n      paddingTop: 56\n    }\n  },\n  shiftContent: {\n    paddingLeft: 0\n    // paddingLeft: 240\n  },\n  content: {\n    height: '100%'\n  }\n}));\n\nconst Main = props => {\n  const { children } = props;\n\n  const classes = useStyles();\n  const theme = useTheme();\n  const isDesktop = useMediaQuery(theme.breakpoints.up('lg'), {\n    defaultMatches: true\n  });\n\n  const [openSidebar, setOpenSidebar] = useState(false);\n\n  const handleSidebarOpen = () => {\n    setOpenSidebar(true);\n  };\n\n  const handleSidebarClose = () => {\n    setOpenSidebar(false);\n  };\n\n  const shouldOpenSidebar = isDesktop ? true : openSidebar;\n\n  return (\n    <div\n      className={clsx({\n        [classes.root]: true,\n        [classes.shiftContent]: isDesktop\n      })}\n    >\n      <Topbar onSidebarOpen={handleSidebarOpen} />\n      {/* <Sidebar\n        onClose={handleSidebarClose}\n        open={shouldOpenSidebar}\n        variant={isDesktop ? 'persistent' : 'temporary'}\n      /> */}\n      <main className={classes.content}>\n        {children}\n\n      </main>\n    </div>\n  );\n};\n\nMain.propTypes = {\n  children: PropTypes.node\n};\n\nexport default Main;\n","import React from 'react';\nimport { Link as RouterLink } from 'react-router-dom';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { AppBar, Toolbar } from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n  root: {\n    boxShadow: 'none'\n  }\n}));\n\nconst Topbar = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <AppBar\n      {...rest}\n      className={clsx(classes.root, className)}\n      color=\"primary\"\n      position=\"fixed\"\n    >\n      <Toolbar>\n        <RouterLink to=\"/\">\n          <img\n            alt=\"Logo\"\n            src=\"unset.svg\"\n          />\n        </RouterLink>\n      </Toolbar>\n    </AppBar>\n  );\n};\n\nTopbar.propTypes = {\n  className: PropTypes.string\n};\n\nexport default Topbar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\n\nimport { Topbar } from './components';\n\nconst useStyles = makeStyles(() => ({\n  root: {\n    paddingTop: 64,\n    height: '100%'\n  },\n  content: {\n    height: '100%'\n  }\n}));\n\nconst Minimal = props => {\n  const { children } = props;\n\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Topbar />\n      <main className={classes.content}>{children}</main>\n    </div>\n  );\n};\n\nMinimal.propTypes = {\n  children: PropTypes.node,\n  className: PropTypes.string\n};\n\nexport default Minimal;\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  Divider,\n  Grid,\n  Button,\n  TextField\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n  root: {}\n}));\n\nconst AccountDetails = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [values, setValues] = useState({\n    firstName: 'Shen',\n    lastName: 'Zhi',\n    email: 'shen.zhi@devias.io',\n    phone: '',\n    state: 'Alabama',\n    country: 'USA'\n  });\n\n  const handleChange = event => {\n    setValues({\n      ...values,\n      [event.target.name]: event.target.value\n    });\n  };\n\n  const states = [\n    {\n      value: 'alabama',\n      label: 'Alabama'\n    },\n    {\n      value: 'new-york',\n      label: 'New York'\n    },\n    {\n      value: 'san-francisco',\n      label: 'San Francisco'\n    }\n  ];\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <form\n        autoComplete=\"off\"\n        noValidate\n      >\n        <CardHeader\n          subheader=\"The information can be edited\"\n          title=\"Profile\"\n        />\n        <Divider />\n        <CardContent>\n          <Grid\n            container\n            spacing={3}\n          >\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                helperText=\"Please specify the first name\"\n                label=\"First name\"\n                margin=\"dense\"\n                name=\"firstName\"\n                onChange={handleChange}\n                required\n                value={values.firstName}\n                variant=\"outlined\"\n              />\n            </Grid>\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                label=\"Last name\"\n                margin=\"dense\"\n                name=\"lastName\"\n                onChange={handleChange}\n                required\n                value={values.lastName}\n                variant=\"outlined\"\n              />\n            </Grid>\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                label=\"Email Address\"\n                margin=\"dense\"\n                name=\"email\"\n                onChange={handleChange}\n                required\n                value={values.email}\n                variant=\"outlined\"\n              />\n            </Grid>\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                label=\"Phone Number\"\n                margin=\"dense\"\n                name=\"phone\"\n                onChange={handleChange}\n                type=\"number\"\n                value={values.phone}\n                variant=\"outlined\"\n              />\n            </Grid>\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                label=\"Select State\"\n                margin=\"dense\"\n                name=\"state\"\n                onChange={handleChange}\n                required\n                select\n                // eslint-disable-next-line react/jsx-sort-props\n                SelectProps={{ native: true }}\n                value={values.state}\n                variant=\"outlined\"\n              >\n                {states.map(option => (\n                  <option\n                    key={option.value}\n                    value={option.value}\n                  >\n                    {option.label}\n                  </option>\n                ))}\n              </TextField>\n            </Grid>\n            <Grid\n              item\n              md={6}\n              xs={12}\n            >\n              <TextField\n                fullWidth\n                label=\"Country\"\n                margin=\"dense\"\n                name=\"country\"\n                onChange={handleChange}\n                required\n                value={values.country}\n                variant=\"outlined\"\n              />\n            </Grid>\n          </Grid>\n        </CardContent>\n        <Divider />\n        <CardActions>\n          <Button\n            color=\"primary\"\n            variant=\"contained\"\n          >\n            Save details\n          </Button>\n        </CardActions>\n      </form>\n    </Card>\n  );\n};\n\nAccountDetails.propTypes = {\n  className: PropTypes.string\n};\n\nexport default AccountDetails;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport moment from 'moment';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardActions,\n  CardContent,\n  Avatar,\n  Typography,\n  Divider,\n  Button,\n  LinearProgress\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {},\n  details: {\n    display: 'flex'\n  },\n  avatar: {\n    marginLeft: 'auto',\n    height: 110,\n    width: 100,\n    flexShrink: 0,\n    flexGrow: 0\n  },\n  progress: {\n    marginTop: theme.spacing(2)\n  },\n  uploadButton: {\n    marginRight: theme.spacing(2)\n  }\n}));\n\nconst AccountProfile = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const user = {\n    name: 'Centaman Dev',\n    city: 'Los Angeles',\n    country: 'USA',\n    timezone: 'GTM-7',\n    avatar: '/unset.png'\n  };\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent>\n        <div className={classes.details}>\n          <div>\n            <Typography\n              gutterBottom\n              variant=\"h2\"\n            >\n              John Doe\n            </Typography>\n            <Typography\n              className={classes.locationText}\n              color=\"textSecondary\"\n              variant=\"body1\"\n            >\n              {user.city}, {user.country}\n            </Typography>\n            <Typography\n              className={classes.dateText}\n              color=\"textSecondary\"\n              variant=\"body1\"\n            >\n              {moment().format('hh:mm A')} ({user.timezone})\n            </Typography>\n          </div>\n          <Avatar\n            className={classes.avatar}\n            src={user.avatar}\n          />\n        </div>\n        <div className={classes.progress}>\n          <Typography variant=\"body1\">Profile Completeness: 70%</Typography>\n          <LinearProgress\n            value={70}\n            variant=\"determinate\"\n          />\n        </div>\n      </CardContent>\n      <Divider />\n      <CardActions>\n        <Button\n          className={classes.uploadButton}\n          color=\"primary\"\n          variant=\"text\"\n        >\n          Upload picture\n        </Button>\n        <Button variant=\"text\">Remove picture</Button>\n      </CardActions>\n    </Card>\n  );\n};\n\nAccountProfile.propTypes = {\n  className: PropTypes.string\n};\n\nexport default AccountProfile;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\n\nimport { AccountProfile, AccountDetails } from './components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  }\n}));\n\nconst Account = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Grid\n        container\n        spacing={4}\n      >\n        <Grid\n          item\n          lg={4}\n          md={6}\n          xl={4}\n          xs={12}\n        >\n          <AccountProfile />\n        </Grid>\n        <Grid\n          item\n          lg={8}\n          md={6}\n          xl={8}\n          xs={12}\n        >\n          <AccountDetails />\n        </Grid>\n      </Grid>\n    </div>\n  );\n};\n\nexport default Account;\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport Button from '@material-ui/core/Button';\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { actionCalendarNavCalendarView, actionCalendarNavListView } from 'actions';\n\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    // border: \"solid 1px\",\n    '& > *': {\n      margin: theme.spacing(1),\n    },\n  },\n}));\n\n\n\nconst handleCalendarViewChange = (viewType, dispatch) => {\n\n  if (viewType === \"CalendarView\") {\n    actionCalendarNavCalendarView(dispatch);\n  }\n  else {\n    actionCalendarNavListView(dispatch);\n  }\n\n}\n\nconst CalendarNavBar = props => {\n  const classes = useStyles();\n  const dispatch = useDispatch();\n\n  const bookingType = useSelector(state => state.reducerBookingTypes.bookingType);\n  const displayAreasState = useSelector(state => state.reducerDisplayAreas);\n  const [disableCalendarLink, setdisableCalendarLink] = React.useState(false);\n\n  useEffect(() => {\n\n    if (props.Path == \"/calendar/:id\") {\n\n      if (props.bookingType != undefined) {\n        if (props.bookingType && props.bookingType.ForceListView) {\n          setdisableCalendarLink(true);\n        }\n        else {\n          setdisableCalendarLink(false);\n        }\n      }\n    }\n    else {\n      if (displayAreasState.displayAreas !== undefined && displayAreasState.displayAreas.length > 0) {\n        let newDisplayAreas = JSON.parse(JSON.stringify(displayAreasState.displayAreas));\n        let newObj = { ...newDisplayAreas.filter(x => x.DisplayAreaNo == props.urlID)[0] };\n\n        if (newObj && newObj.ForceListView) {\n          setdisableCalendarLink(true);\n        }\n        else {\n          setdisableCalendarLink(false);\n        }\n      }\n    }\n\n  }, [bookingType, displayAreasState]);\n\n\n  return (\n    <div className={classes.root}>\n      <ButtonGroup variant=\"text\" color=\"primary\" aria-label=\"text primary button group\">\n        <Button onClick={() => handleCalendarViewChange(\"CalendarView\", dispatch)} disabled={disableCalendarLink}>Calendar View</Button>\n        <Button onClick={() => handleCalendarViewChange(\"ListView\", dispatch)}>List View</Button>\n      </ButtonGroup>\n    </div>\n  );\n}\n\nexport default CalendarNavBar;\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Card, CardHeader, CardContent, Typography, Grid, Hidden } from '@material-ui/core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { actionGetExtraItem, actionIncreaseQuantity } from 'actions';\r\nimport { genfunction } from '../../helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { NumberSpinner } from '../InputControls'\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst { OtherExtraItemHeader } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        width: '100%'\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    hidetopheader: {\r\n        display: 'none'\r\n    },\r\n    cardcontent: {\r\n        \"&:last-child\": {\r\n            paddingBottom: 5\r\n        }\r\n    }\r\n}));\r\n\r\nconst ExtraItemsProducts = (props) => {\r\n    const classes = useStyles();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const dispatch = useDispatch()\r\n    const reducerAppLoader = useSelector(state => state.reducerAppLoader.loading);\r\n\r\n\r\n    const changeQuantityHandler = (reference, quantity) => {\r\n\r\n        if (props.allowQuantityChange === false) {\r\n            seterrorMsg(\"Please remove coupon code to make futher changes.\");\r\n            return;\r\n        }\r\n\r\n        if (cartEvents && cartEvents.length > 0) {\r\n            if (cartEvents[0].TourProducts.filter(x => x.AffectsCapacity).length > 0) {\r\n                actionIncreaseQuantity(dispatch, reference.TourProductID, quantity, true, reference.MinimumTickets, reference.MaximumTickets);\r\n\r\n                if (bkngType.AddChaperoneTickets && bkngType.ShowTourProductsBasedOnGroupSize)\r\n                    calculateChaperoneTickets();\r\n\r\n                return;\r\n            }\r\n        }\r\n\r\n        actionIncreaseQuantity(dispatch, reference.TourProductID, quantity, false, reference.MinimumTickets, reference.MaximumTickets);\r\n\r\n        if (bkngType.AddChaperoneTickets && bkngType.ShowTourProductsBasedOnGroupSize)\r\n            calculateChaperoneTickets();\r\n    }\r\n\r\n    const apiData = useSelector(state => state.reducerExtraItems.extraItem);\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0] : null;\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n\r\n    const calculateChaperoneTickets = () => {\r\n\r\n        let TotalTickets = 0;\r\n\r\n        if (apiData && apiData.TourProducts.filter(p => p.AffectsCapacity && p.TourProductID != bkngType.ChaperoneTourProductID).length > 0) {\r\n            TotalTickets = apiData.TourProducts.filter(p => p.AffectsCapacity && p.TourProductID != bkngType.ChaperoneTourProductID\r\n            ).reduce((a, b) => {\r\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                let bqty = (b === undefined || b.Quantity === undefined) ? 0 : b.Quantity;\r\n                let newobj = { Quantity: aqty + bqty }\r\n                return newobj;\r\n            }).Quantity;\r\n        }\r\n\r\n        let noOfChaperoneTickets =\r\n            (TotalTickets !== 0 && bkngType.NumberOfTicketsRequiredPerChaperone !== 0) ? TotalTickets / bkngType.NumberOfTicketsRequiredPerChaperone : 0;\r\n\r\n        noOfChaperoneTickets = noOfChaperoneTickets >= 1 ? noOfChaperoneTickets : 0;\r\n        noOfChaperoneTickets = bkngType.RoundChaperoneTicketsUp ? Math.ceil(noOfChaperoneTickets) : Math.floor(noOfChaperoneTickets)\r\n\r\n        actionIncreaseQuantity(dispatch, bkngType.ChaperoneTourProductID, noOfChaperoneTickets, false);\r\n\r\n    }\r\n\r\n    const CalculateMaxTickets = (TourProductID) => {\r\n        let shopCartConsumed = 0;\r\n\r\n        if (!props.isEditEvent)\r\n            if (cartEvents && cartEvents.length > 0) {\r\n                let cartTourEvent = cartEvents.find(x => x.TourEventID == apiData.TourEventID);\r\n                if (cartTourEvent && cartTourEvent.TourProducts.length > 0) {\r\n                    shopCartConsumed = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n                        let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                        let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                        let newobj = { Quantity: aqty + bqty }\r\n                        return newobj;\r\n                    }).Quantity;\r\n                }\r\n            }\r\n\r\n        let consumedQty = 0;\r\n        if (apiData.TourProducts.filter(p => p.TourProductID != TourProductID && p.AffectsCapacity && p.TourProductID != bkngType.ChaperoneTourProductID).length > 0) {\r\n            consumedQty = apiData.TourProducts.filter(p => p.TourProductID != TourProductID && p.AffectsCapacity\r\n                && p.TourProductID != bkngType.ChaperoneTourProductID\r\n            ).reduce((a, b) => {\r\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                let bqty = (b === undefined || b.Quantity === undefined) ? 0 : b.Quantity;\r\n                let newobj = { Quantity: aqty + bqty }\r\n                return newobj;\r\n            }).Quantity;\r\n        }\r\n\r\n        let MaximumTickets = genfunction.IsNotNullOrEmptyOrUndefined(props.groupSize) ? props.groupSize.toLowerCase().split(\" to \")[1] : bkngType.MaximumTickets;\r\n\r\n        return bkngType !== undefined ? MaximumTickets - consumedQty - shopCartConsumed : 0;\r\n    }\r\n\r\n    const replaceEscapeCharacters = (item) => {\r\n        var itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n        itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n        return itemValue;\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (props.isEditEvent && reducerAppLoader === false)\r\n            reloadQuantity();\r\n\r\n    }, [reducerAppLoader]);\r\n\r\n    useEffect(() => {\r\n        if (props.isMMB)\r\n            actionGetExtraItem(dispatch, props.tourEventId, props.ismembershipapplied, props.membercostrate, props.isIDME, props.isIDMECostrate, props.organizationCostRate);\r\n\r\n    }, [])\r\n\r\n    const reloadQuantity = () => {\r\n\r\n        if (cartEvents && cartEvents.length > 0 && cartEvents.find(x => x.TourEventID === props.tourEventId)) {\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID === props.tourEventId);\r\n\r\n            if (apiData.hasOwnProperty(\"TourProducts\")) {\r\n\r\n                apiData.TourProducts.map(p => {\r\n                    if (cartTourEvent.TourProducts.filter(x => x.TourProductID === p.TourProductID).length > 0) {\r\n                        let pQty = cartTourEvent.TourProducts.filter(x => x.TourProductID === p.TourProductID)[0].Quantity;\r\n                        actionIncreaseQuantity(dispatch, p.TourProductID, pQty, true);\r\n\r\n                    }\r\n\r\n                    return p\r\n                });\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n\r\n    return (\r\n        <div >\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n\r\n            <Card style={{ borderRadius: \"0\", width: \"100%\" }}>\r\n                <CardHeader className={props.hidetopheading ? classes.tourheaderbox + ' ' + classes.hidetopheader : classes.tourheaderbox}\r\n                    style={{ paddingLeft: \"25px\" }}\r\n                    title={apiData.hasOwnProperty(\"EventStartDateTime\") ? ShowStartAndEndTime(bkngType, apiData) : null}\r\n                    titleTypographyProps={{ color: \"inherit\" }}\r\n                />\r\n\r\n                <CardContent className={classes.cardcontent}>\r\n\r\n                    <Grid style={{ padding: \"10px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n                        {apiData.hasOwnProperty(\"TourProducts\") ?\r\n                            apiData.TourProducts.map((product, i) => {\r\n\r\n                                return product.AffectsCapacity && product.AvailableOnline && product.TourProductID !== bkngType.ChaperoneTourProductID &&\r\n                                    (genfunction.IsNotNullOrEmptyOrUndefined(props.groupSize) ? product.LimitDisplayOnGroupSize && product.GroupSize === props.groupSize : true)\r\n                                    && product.PriceMatrix !== undefined && product.PriceMatrix.length > 0 ?\r\n\r\n                                    <Grid style={{ padding: \"5px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n                                        <Grid item xs={2} ms={2} lg={2}>\r\n                                            <Tooltip title={ReactHtmlParser(replaceEscapeCharacters(product.Information))} enterTouchDelay={0} leaveTouchDelay={3000}>\r\n                                                <InfoIcon arrow=\"true\" color=\"primary\" />\r\n                                            </Tooltip>\r\n                                        </Grid>\r\n                                        <Grid item xs={6} ms={6} lg={6}>\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h4\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={4} ms={4} lg={4}>\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID,\r\n                                                    MaximumTickets: bkngType !== undefined ? bkngType.MaximumTickets : 0,\r\n                                                    MinimumTickets: bkngType !== undefined ? bkngType.MinimumTickets : 0\r\n                                                }}\r\n                                                value={product.Quantity === undefined ? 0 : product.Quantity}\r\n                                                minValue={0}\r\n                                                maxValue={CalculateMaxTickets(product.TourProductID)}\r\n                                                steps={1}\r\n                                                changeHandler={changeQuantityHandler}\r\n                                            ></NumberSpinner>\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                    : null\r\n                            }) : null}\r\n\r\n                    </Grid>\r\n\r\n                    {apiData.hasOwnProperty(\"TourProducts\") ?\r\n                        apiData.TourProducts.filter(x => x.AffectsCapacity == false && x.AvailableOnline == true && x.PriceMatrix !== undefined && x.PriceMatrix.length > 0\r\n                            && x.TourProductID !== bkngType.ChaperoneTourProductID).length > 0 ?\r\n\r\n                            <Typography className={classes.tourheaderbox} variant=\"subtitle1\" style={{ margin: \"0 -15px 0 -15px\", padding: \"5px 0 5px 25px\" }}>{OtherExtraItemHeader}</Typography>\r\n                            : null\r\n                        : null}\r\n\r\n                    <Grid style={{ padding: \"10px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n                        {apiData.hasOwnProperty(\"TourProducts\") ?\r\n                            apiData.TourProducts.map(product => {\r\n\r\n                                return product.AffectsCapacity == false && product.AvailableOnline && product.PriceMatrix !== undefined && product.PriceMatrix.length > 0\r\n                                    && product.TourProductID !== bkngType.ChaperoneTourProductID ?\r\n\r\n                                    <Grid style={{ padding: \"5px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n\r\n                                        <Grid item xs={2} ms={2} lg={2}>\r\n                                            <Tooltip title={ReactHtmlParser(replaceEscapeCharacters(product.Information))} enterTouchDelay={0} leaveTouchDelay={3000}>\r\n                                                <InfoIcon arrow=\"true\" color=\"primary\" />\r\n                                            </Tooltip>\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={6} ms={6} lg={6}>\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h4\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={4} ms={4} lg={4}>\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID,\r\n                                                    MaximumTickets: bkngType !== undefined ? bkngType.MaximumTickets : 0,\r\n                                                    MinimumTickets: bkngType !== undefined ? bkngType.MinimumTickets : 0\r\n                                                }}\r\n                                                value={product.Quantity === undefined ? 0 : product.Quantity}\r\n                                                minValue={0} maxValue={999} steps={1}\r\n                                                changeHandler={changeQuantityHandler}\r\n                                            ></NumberSpinner>\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                    : null\r\n                            }) : null}\r\n\r\n                    </Grid>\r\n\r\n                </CardContent>\r\n            </Card>\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default ExtraItemsProducts;\r\n\r\n\r\nfunction ShowStartAndEndTime(bkngType, apiData) {\r\n    let time = \"\";\r\n\r\n    if (bkngType) {\r\n\r\n        if (bkngType.ShowStartTime) {\r\n            time += genfunction.GetEventDateReceiptFormat(apiData.EventStartDateTime);\r\n        }\r\n\r\n        if (bkngType.ShowEndTime && !bkngType.ShowStartTime) {\r\n            time += genfunction.GetEventDateReceiptFormat(apiData.EventStartDateTime);\r\n        }\r\n\r\n        if (bkngType.ShowEndTime && bkngType.ShowStartTime) {\r\n            time += ' - ' + genfunction.AppendEndTime(apiData.EventEndDateTime);\r\n        }\r\n\r\n        if (!bkngType.ShowStartTime && !bkngType.ShowEndTime) {\r\n            time += genfunction.GetEventDateReceiptFormatwithoutTime(apiData.EventStartDateTime);\r\n        }\r\n    }\r\n\r\n    return time;\r\n}\r\n\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { UDFText, UDFCheckBox, UDFDateTime, UDFNumber, UDFSelect } from '../InputControls'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n}));\r\n\r\nconst UDFDataField = (props) => {\r\n\r\n    const GetDataField = (type, UDF, props) => {\r\n\r\n        switch (type) {\r\n            case \"Text\": {\r\n                if (UDF.Picklist && UDF.Picklist.length > 0) {\r\n                    return <UDFSelect UDF={UDF} {...props}></UDFSelect>\r\n                }\r\n                return <UDFText UDF={UDF}  {...props}></UDFText>\r\n            }\r\n            case \"Bit\": {\r\n                return <UDFCheckBox UDF={UDF} {...props}></UDFCheckBox>\r\n            }\r\n            case \"Date\": {\r\n                return <UDFDateTime UDF={UDF} {...props}></UDFDateTime>\r\n            }\r\n            case \"Decimal\": {\r\n                return <UDFNumber UDF={UDF} {...props}></UDFNumber>\r\n            }\r\n            case \"Picklist\": {\r\n                return <UDFSelect UDF={UDF} {...props}></UDFSelect>\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        GetDataField(props.udf.UDFType, props.udf, props)\r\n    );\r\n};\r\n\r\nexport default UDFDataField;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Button, Card, CardHeader, CardContent, Paper, Typography, Grid, Hidden } from '@material-ui/core';\r\nimport UDFDataField from '../../components/CalendarControls/UDFDataField';\r\nimport { actionAddUDFToTourEvent, actionUpdateUDF } from 'actions';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        width: '100%'\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        padding: \"7px 0px 7px 25px\"\r\n    },\r\n    hidetopheader: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst BookingUDFields = (props) => {\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields).bookingUDFs;\r\n\r\n    useEffect(() => {\r\n\r\n        if (bookingUDFS && bookingUDFS.length > 0\r\n            && bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID).length > 0) {\r\n\r\n            if (bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID)[0].UDFCategories.length > 0) {\r\n\r\n                bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID)[0].UDFCategories.map((bookingUdfCategory, i) => {\r\n\r\n                    if (bookingUdfCategory.UserDefinedFields.filter(x => x.toureventID === props.toureventID).length < 1) {\r\n                        actionAddUDFToTourEvent(dispatch, props.bookingtypeID, props.toureventID);\r\n                    }\r\n                });\r\n            }\r\n        }\r\n\r\n    }, []);\r\n\r\n    const onChangeHandler = (event, bookingID, categoryName, udfID) => {\r\n        let udfValue = '';\r\n        if (event.target.type != undefined && event.target.type == \"checkbox\")\r\n            udfValue = event.target.checked;\r\n        else\r\n            udfValue = event.target.value;\r\n        actionUpdateUDF(dispatch, bookingID, props.toureventID, categoryName, udfID, udfValue);\r\n    }\r\n\r\n    return (\r\n        <div >\r\n\r\n            {bookingUDFS.length > 0 && bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID).length > 0 ?\r\n                bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID)[0].UDFCategories != null &&\r\n                bookingUDFS.filter(x => x.BookingTypeID === props.bookingtypeID)[0].UDFCategories.map((bookingUdfCategory, i) => (\r\n                    <Card style={{ borderRadius: \"0\", width: \"100%\" }}>\r\n                        <CardHeader className={classes.tourheaderbox}\r\n                            title={bookingUdfCategory.UDFCategoryName}\r\n                            titleTypographyProps={{ color: \"inherit\" }}\r\n                        />\r\n                        <CardContent>\r\n                            {bookingUdfCategory.UserDefinedFields.filter(x => x.toureventID === props.toureventID).map((udfs) => (\r\n                                <>\r\n                                    <Typography variant=\"h4\" style={{ paddingLeft: \"15px\" }} >\r\n                                        {udfs.UDFDescription} {udfs.IsRequired ? '(required)' : ''}\r\n                                    </Typography>\r\n                                    <UDFDataField style={{ padding: \"0px 0px 0px 15px\" }} key={udfs.UDFID} isMembership={false} bookingID={props.bookingtypeID} udf={udfs} changecontrolvalue={onChangeHandler} />\r\n\r\n                                </>\r\n                            ))}\r\n                        </CardContent>\r\n\r\n                    </Card>\r\n                )) : null}\r\n\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default BookingUDFields;\r\n\r\n\r\n\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Typography, Grid, Card, CardHeader, CardContent, Hidden } from '@material-ui/core';\r\nimport { useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { NumberSpinner } from 'components/InputControls';\r\n\r\nconst { ChaperoneHeading } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        padding: \"7px 0px 7px 25px\"\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    }\r\n}));\r\n\r\nconst Chaperone = (props) => {\r\n    const classes = useStyles();\r\n\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0];\r\n    const apiData = useSelector(state => state.reducerExtraItems.extraItem);\r\n\r\n    const productPrice = (priceMatrix) => {\r\n\r\n        return priceMatrix !== undefined && priceMatrix.length > 0 ?\r\n            genfunction.ccyFormat(priceMatrix[0].Price) : genfunction.ccyFormat(0);\r\n    }\r\n\r\n    return (\r\n        <div >\r\n\r\n            {apiData.hasOwnProperty(\"TourProducts\") && apiData.TourProducts.filter(x => x.TourProductID === bkngType.ChaperoneTourProductID).length > 0 ?\r\n                <Card style={{ borderRadius: \"0\" }} className={classes.box100per}>\r\n                    <CardHeader className={classes.tourheaderbox}\r\n                        title={ChaperoneHeading}\r\n                        titleTypographyProps={{ color: \"inherit\" }}\r\n                    />\r\n\r\n                    <CardContent>\r\n\r\n                        <Grid style={{ padding: \"10px 15px 0px 15px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n                            {apiData.TourProducts.filter(x => x.TourProductID === bkngType.ChaperoneTourProductID).map((product, i) => {\r\n\r\n                                return (\r\n                                    <Grid container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n                                        <Grid item xs={2} ms={2} lg={2}>\r\n                                            <Tooltip title={ReactHtmlParser(genfunction.replaceEscapeCharacters(product.Information))} enterTouchDelay={0} leaveTouchDelay={3000}>\r\n                                                <InfoIcon arrow=\"true\" color=\"primary\" />\r\n                                            </Tooltip>\r\n                                        </Grid>\r\n                                        <Grid item xs={6} ms={6} lg={6}>\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h4\">{product.TourProductName + ' ' + productPrice(product.PriceMatrix)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + productPrice(product.PriceMatrix)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + productPrice(product.PriceMatrix)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={4} ms={4} lg={4}>\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID\r\n                                                }}\r\n                                                value={product.Quantity ? product.Quantity : 0}\r\n                                                minValue={product.Quantity ? product.Quantity : 0}\r\n                                                maxValue={product.Quantity ? product.Quantity : 0}\r\n\r\n                                            ></NumberSpinner>\r\n\r\n                                        </Grid>\r\n                                    </Grid>\r\n\r\n                                )\r\n                            })}\r\n                        </Grid>\r\n\r\n                    </CardContent>\r\n                </Card>\r\n                : null}\r\n\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default Chaperone","import React, { useEffect, useState, forwardRef, useImperativeHandle } from 'react'\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { CardContent, FormControlLabel, CardHeader, Card, RadioGroup, Radio, Grid, FormHelperText } from '@material-ui/core'\r\nimport { genfunction } from 'helpers';\r\nimport { useSelector } from 'react-redux';\r\nimport { FormattedInputs } from 'components/InputControls';\r\n\r\nconst { CouponRemoveMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        padding: \"7px 0px 7px 25px\"\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    reverseOrder: {\r\n        display: 'flex',\r\n        flexDirection: 'column-reverse'\r\n    }\r\n\r\n}));\r\n\r\nconst PaymentSelection = forwardRef((props, ref) => {\r\n\r\n    const classes = useStyles();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [minDeposit, setMinDeposit] = useState(0);\r\n    const [otherAmount, setOtherAmount] = useState('');\r\n\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0] : null;\r\n    const apiData = useSelector(state => state.reducerExtraItems.extraItem);\r\n    const reducerAppLoader = useSelector(state => state.reducerAppLoader.loading);\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n\r\n    const calculateMinimumDeposit = () => {\r\n\r\n        // let MinDeposit = 0;\r\n\r\n        // if (apiData && apiData.hasOwnProperty(\"TourProducts\") && apiData.TourEventID === props.toureventID && apiData.TourProducts.filter(x => x.Quantity !== 0 && x.TourProductID !== bkngType.ChaperoneTourProductID).length > 0)\r\n        //     apiData.TourProducts.filter(x => x.Quantity !== 0 && apiData.TourEventID === props.toureventID && x.TourProductID !== bkngType.ChaperoneTourProductID).map((product) => {\r\n        //         MinDeposit += (product.MinDepositPercent * product.ProductTotalAmount) / 100;\r\n        //     })\r\n\r\n        // setMinDeposit(MinDeposit);\r\n        // return MinDeposit;\r\n\r\n        let minDeposit = genfunction.MinimumDepositCalculation(apiData, props.toureventID, bkngType.ChaperoneTourProductID);\r\n        setMinDeposit(minDeposit);\r\n        return minDeposit;\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        calculateMinimumDeposit();\r\n\r\n        if (props.isEditEvent) {\r\n            handleChange(props.paymentOption);\r\n        }\r\n\r\n        else {\r\n            bkngType.DefaultToFullPayment ?\r\n                props.onChangePaymentOption(\"FullPay\", apiData.TotalAmount ? apiData.TotalAmount : 0) :\r\n                props.onChangePaymentOption(\"MinimumPay\", calculateMinimumDeposit())\r\n\r\n        }\r\n\r\n    }, [apiData]);\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        if (props.isEditEvent && reducerAppLoader === false)\r\n            reloadPaymentSelected();\r\n\r\n    }, [reducerAppLoader]);\r\n\r\n\r\n    const reloadPaymentSelected = () => {\r\n\r\n        if (cartEvents && cartEvents.length > 0 && cartEvents.find(x => x.TourEventID === props.toureventID)) {\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID === props.toureventID);\r\n\r\n            if (cartTourEvent && cartTourEvent.hasOwnProperty(\"PaymentOption\")) {\r\n\r\n                if (cartTourEvent.PaymentOption === \"OtherPay\")\r\n                    setOtherAmount(cartTourEvent.TotalSelectedAmount);\r\n\r\n                props.onChangePaymentOption(cartTourEvent.PaymentOption, cartTourEvent.TotalSelectedAmount);\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    useImperativeHandle(ref, () => ({\r\n        validateAmountSelected() {\r\n            if (props.amountSelected === \"\" || parseFloat(props.amountSelected) < minDeposit || parseFloat(props.amountSelected) > (apiData.TotalAmount ? apiData.TotalAmount : 0)) {\r\n                Validated(false)\r\n                return false;\r\n            }\r\n            else\r\n                return true;\r\n        }\r\n    }));\r\n\r\n    const handleOtherPrice = (event) => {\r\n        setOtherAmount(event.target.value);\r\n        props.onChangePaymentOption(\"OtherPay\", event.target.value);\r\n    }\r\n\r\n    const Validated = (val) => {\r\n        if (val)\r\n            seterrorMsg('');\r\n        else\r\n            seterrorMsg(\"Please enter valid amount\");\r\n    }\r\n\r\n    const checkIsRemoveCoupon = (value) => {\r\n\r\n        if (cartEvents && cartEvents.length > 0 && cartEvents.find(x => x.TourEventID === props.toureventID)) {\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID === props.toureventID);\r\n\r\n            if (cartTourEvent && cartTourEvent.hasOwnProperty(\"PaymentOption\")) {\r\n\r\n                if (cartTourEvent.PaymentOption !== value && value === \"OtherPay\" && cartTourEvent.CouponItems.length > 0) {\r\n                    seterrorMsg(CouponRemoveMsg)\r\n                }\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    const handleChange = (value) => {\r\n\r\n        if (props.isEditEvent) {\r\n            checkIsRemoveCoupon(value);\r\n        }\r\n\r\n        if (value === \"FullPay\") {\r\n            seterrorMsg('');\r\n            setOtherAmount('');\r\n            props.onChangePaymentOption(value, apiData.TotalAmount ? apiData.TotalAmount : 0);\r\n\r\n        }\r\n        else if (value === \"MinimumPay\") {\r\n            seterrorMsg('');\r\n            setOtherAmount('');\r\n            props.onChangePaymentOption(value, calculateMinimumDeposit());\r\n\r\n        }\r\n        else if (value === \"OtherPay\") {\r\n            props.onChangePaymentOption(value, otherAmount)\r\n\r\n        }\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Card style={{ borderRadius: \"0\" }} className={classes.box100per}>\r\n                <CardHeader className={classes.tourheaderbox}\r\n                    title='Payment Options'\r\n                    titleTypographyProps={{ color: \"inherit\" }}\r\n                />\r\n                <CardContent>\r\n                    <Grid container xs={12} ms={12} lg={12} style={{ paddingLeft: \"15px\" }}>\r\n\r\n                        <RadioGroup className={classes.box100per} aria-label=\"grouppayment\" name=\"paymentselectoption\" value={props.paymentOption}\r\n                            onChange={({ target: { value } }) => handleChange(value)}>\r\n\r\n                            <Grid item xs={12} ms={12} lg={12} className={!bkngType.DefaultToFullPayment ? classes.reverseOrder : \"\"}  >\r\n\r\n                                <FormControlLabel value=\"FullPay\" control={<Radio />} label={\"Full Payment - \" + genfunction.ccyFormat(apiData.TotalAmount ? apiData.TotalAmount : 0)} />\r\n                                <FormControlLabel value=\"MinimumPay\" control={<Radio />} label={\"Minimum Payment - \" + genfunction.ccyFormat(minDeposit)} />\r\n\r\n                            </Grid>\r\n                            {bkngType.AllowFlexiblePayment ?\r\n                                <Grid container alignItems=\"center\">\r\n                                    <Grid item xs={7} ms={7} lg={7}>\r\n\r\n                                        <FormControlLabel value=\"OtherPay\" control={<Radio />} style={{ whiteSpace: \"pre-line\" }}\r\n                                            label={\"Other Amount<br/> Min (\".split(\"<br/>\").join(\"\\n\") + genfunction.ccyFormat(minDeposit) + \")\"}\r\n                                        />\r\n\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={5} ms={5} lg={5}>\r\n\r\n                                        <FormattedInputs\r\n                                            donaValue={props.paymentOption === \"OtherPay\" ? otherAmount : null}\r\n                                            minValue={minDeposit}\r\n                                            maxValue={apiData.TotalAmount ? apiData.TotalAmount : 0}\r\n                                            label='Enter amount'\r\n                                            handleOtherPrice={handleOtherPrice}\r\n                                            Validated={Validated}\r\n                                            disabled={props.paymentOption === \"OtherPay\" ? false : true}\r\n                                            size=\"small\"\r\n                                            variant=\"outlined\"\r\n\r\n                                        ></FormattedInputs>\r\n\r\n                                        <FormHelperText style={{ color: \"Red\" }}>{errorMsg}</FormHelperText>\r\n\r\n                                    </Grid>\r\n                                </Grid>\r\n                                : null}\r\n                        </RadioGroup>\r\n\r\n                    </Grid>\r\n                </CardContent>\r\n            </Card >\r\n        </div >\r\n    )\r\n})\r\n\r\nexport default PaymentSelection","import React, { useEffect, useState, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Button, Card, CardHeader, CardContent, Paper, Typography, Grid, Link } from '@material-ui/core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { actionGetExtraItem, actionGetExtraItemAfterMembership } from 'actions';\r\nimport { actionShopCartAddEventWithTourHold, actionShopCartResetError, actionSetAddToCart } from 'actions';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport { genfunction } from '../../helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport ExtraItemsProducts from 'components/CalendarControls/ExtraItemsProducts';\r\nimport BookingUDFields from 'components/CalendarControls/BookingUDFields';\r\nimport Chaperone from './Chaperone';\r\nimport PaymentSelection from './PaymentSelection';\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions';\r\n\r\n\r\nconst { DisplayBookingTypeInfoCharacters, OrderItemsInCartError, PurchaseAsOrganizationButton, InvalidGroupSizeMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    width: '100%'\r\n  },\r\n  tourheaderbox: {\r\n    backgroundColor: theme.palette.primary.main,\r\n    color: theme.palette.primary.contrastText\r\n  },\r\n  arrowBtn: {\r\n    float: 'left',\r\n    marginLeft: '10px',\r\n    marginTop: '3px'\r\n  },\r\n  BookingInfoCls: {\r\n    paddingTop: '5px',\r\n    paddingLeft: '16px',\r\n    paddingRight: '16px',\r\n    textAlign: 'justify'\r\n  },\r\n  readmoreBtn: {\r\n    margin: 'auto',\r\n    marginBottom: '10px',\r\n    //  marginTop: '5px'\r\n  }\r\n}));\r\n\r\nconst ExtraItemDrawer = (props) => {\r\n  const classes = useStyles();\r\n  const [errorMsg, seterrorMsg] = useState(\"\");\r\n  const [isredirectclicked, setisredirectclicked] = useState(false);\r\n  const ref = useRef();\r\n\r\n  const dispatch = useDispatch();\r\n  const shopCartError = useSelector(state => state.reducerShopCart.error);\r\n  const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n  const apiData = useSelector(state => state.reducerExtraItems.extraItem);\r\n  const tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\r\n  const isAddToCart = useSelector(state => state.reducerExtraItems.isAddToCart);\r\n  const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n  const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n  const bkngType = bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0];\r\n  const [showMoreInfo, setShowMoreInfo] = useState(false);\r\n  const [readmorebtnText, setreadmorebtnText] = useState('Read More');\r\n  const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields);\r\n  const organizationList = useSelector(state => state.reducerOrganizationSection.organizationlist);\r\n  const [saveBtn, setsaveBtn] = React.useState(false);\r\n\r\n  const [state, setState] = useState({\r\n    paymentOption: \"\",\r\n    amountSelected: 0,\r\n\r\n  });\r\n\r\n  useEffect(() => {\r\n\r\n    if (isredirectclicked) {\r\n      if (shopCartError.length < 1) {\r\n        props.callCheckout();\r\n      }\r\n      if (shopCartError.length > 0) {\r\n        seterrorMsg(shopCartError);\r\n        setisredirectclicked(false);\r\n      }\r\n    }\r\n\r\n  }, [shopCartError, cartEvents]);\r\n\r\n  useEffect(() => {\r\n\r\n    if (props.isEditEvent)\r\n      actionSetAddToCart(dispatch);\r\n\r\n  }, [isAddToCart, apiData])\r\n\r\n  const onChangePaymentOption = (paymentOptionSelected, paymentAmountSelected) => {\r\n    setState({ ...state, amountSelected: genfunction.IsNotNullOrEmptyOrUndefined(paymentAmountSelected) ? parseFloat(paymentAmountSelected) : 0, paymentOption: paymentOptionSelected });\r\n  }\r\n\r\n\r\n  const redirectCall = () => {\r\n\r\n    if (orderProducts && orderProducts.length > 0) {\r\n      seterrorMsg(OrderItemsInCartError);\r\n      return;\r\n    }\r\n\r\n    if (ValidateBookingRequiredFields() && (genfunction.IsNotNullOrEmptyOrUndefined(props.groupSize) ? ValidateGroupQuanity() : ValidateQuanity())\r\n      && (genfunction.IsShowPartPaymentSelection(apiData, bkngType, props.groupSize) ? ref.current.validateAmountSelected() : true)) {\r\n\r\n      setisredirectclicked(true);\r\n\r\n      setsaveBtn(true);\r\n\r\n      setTimeout(() => {\r\n        setsaveBtn(false);\r\n      }, 1000)\r\n\r\n      let filterdata = { ...apiData };\r\n      filterdata.TourProducts = filterdata.TourProducts.filter(product => product.Quantity > 0);\r\n      let cartdata = [...cartEvents];\r\n\r\n      if (filterdata && filterdata.hasOwnProperty('BookingTypeID')) {\r\n        let usealternamteMerchant = false;\r\n        if (bkngType && bkngType.hasOwnProperty('UseAlternateMerchant')) {\r\n          usealternamteMerchant = bkngType.UseAlternateMerchant;\r\n        }\r\n\r\n        filterdata.UseAlternateMerchant = usealternamteMerchant;\r\n\r\n      }\r\n      actionShopCartAddEventWithTourHold(dispatch, filterdata, cartdata, props.organizationID, props.groupSize, state.paymentOption, state.amountSelected, props.isEditEvent);\r\n      //props.callCheckout();\r\n    }\r\n  }\r\n\r\n\r\n  const ValidateQuanity = () => {\r\n    let MinTicket = bkngType.MinimumTickets\r\n    let MaxTicket = bkngType.MaximumTickets;\r\n\r\n    let CartQty = 0;\r\n    let NewQty = 0;\r\n    let TotalTicketCount = 0;\r\n    let SeatsAvailable = tourEvents.filter(x => x.TourEventID === props.tourEventId)[0].SeatsAvailable;\r\n\r\n    if (cartEvents && cartEvents.length > 0) {\r\n\r\n      let cartTourEvent = cartEvents.find(x => x.TourEventID == apiData.TourEventID);\r\n      if (cartTourEvent && cartTourEvent.TourProducts.length > 0) {\r\n        CartQty = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n          let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n          let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n          let newobj = { Quantity: aqty + bqty }\r\n          return newobj;\r\n        }).Quantity;\r\n      }\r\n    }\r\n\r\n    NewQty = apiData.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n      let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n      let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n      let newobj = { Quantity: aqty + bqty }\r\n      return newobj;\r\n    }).Quantity;\r\n\r\n    TotalTicketCount = props.isEditEvent ? NewQty : CartQty + NewQty;\r\n\r\n    SeatsAvailable = props.isEditEvent ? CartQty + SeatsAvailable : SeatsAvailable;\r\n\r\n    if (SeatsAvailable == 0 || apiData.BookNowOption != \"Book Now\" && !props.isEditEvent) {\r\n      seterrorMsg(\"Tickets no longer available, please choose another time\");\r\n      return false;\r\n    }\r\n    else if (NewQty > SeatsAvailable) {\r\n      seterrorMsg(\"Maximum of \" + SeatsAvailable + \" tickets available\");\r\n      return false;\r\n    }\r\n    else if (TotalTicketCount < MinTicket) {\r\n      seterrorMsg(\"Minimum tickets per order is \" + MinTicket)\r\n      return false;\r\n    }\r\n    else if (TotalTicketCount > MaxTicket) {\r\n      seterrorMsg(\"Maximum of \" + MaxTicket + \" tickets allowed\")\r\n      return false;\r\n    }\r\n    else {\r\n      return true;\r\n    }\r\n  }\r\n\r\n  const ValidateGroupQuanity = () => {\r\n    const groupTicket = props.groupSize.toLowerCase().split(\" to \");\r\n\r\n    let MinTicket = groupTicket[0];\r\n    let MaxTicket = groupTicket[1];\r\n\r\n    let CartQty = 0;\r\n    let NewQty = 0;\r\n    let TotalTicketCount = 0;\r\n    let ChaperoneQty = 0;\r\n    let SeatsAvailable = 0;\r\n\r\n    if (cartEvents && cartEvents.length > 0) {\r\n\r\n      let cartTourEvent = cartEvents.find(x => x.TourEventID == apiData.TourEventID);\r\n      if (cartTourEvent && cartTourEvent.TourProducts.length > 0) {\r\n        CartQty = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n          let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n          let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n          let newobj = { Quantity: aqty + bqty }\r\n          return newobj;\r\n        }).Quantity;\r\n      }\r\n    }\r\n\r\n    NewQty = apiData.TourProducts.filter(p => p.AffectsCapacity\r\n      && p.TourProductID != bkngType.ChaperoneTourProductID).reduce((a, b) => {\r\n        let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n        let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n        let newobj = { Quantity: aqty + bqty }\r\n        return newobj;\r\n      }).Quantity;\r\n\r\n\r\n    let chaperoneTourProduct = apiData.TourProducts.filter(p => p.AffectsCapacity && p.TourProductID === bkngType.ChaperoneTourProductID);\r\n    if (chaperoneTourProduct && chaperoneTourProduct.length > 0) {\r\n\r\n      ChaperoneQty = apiData.TourProducts.filter(p => p.AffectsCapacity && p.TourProductID === bkngType.ChaperoneTourProductID)[0].Quantity;\r\n    }\r\n\r\n    TotalTicketCount = NewQty + ChaperoneQty;\r\n\r\n    SeatsAvailable = props.isEditEvent ? CartQty + apiData.SeatsAvailable : apiData.SeatsAvailable;\r\n\r\n    if (NewQty < MinTicket || NewQty > MaxTicket) {\r\n      seterrorMsg(InvalidGroupSizeMsg + props.groupSize)\r\n      return false;\r\n    }\r\n\r\n    else if (TotalTicketCount > SeatsAvailable) {\r\n      seterrorMsg(\"Maximum of \" + SeatsAvailable + \" tickets available\");\r\n      return false;\r\n    }\r\n    else if (SeatsAvailable == 0 || (apiData.BookNowOption != \"Book Now\" && !props.isEditEvent)) {\r\n      seterrorMsg(\"Tickets no longer available, please choose another time\");\r\n      return false;\r\n    }\r\n\r\n    else\r\n      return true;\r\n  }\r\n\r\n\r\n  const ShowMoreInfoClick = () => {\r\n\r\n    if (readmorebtnText === 'Read More') {\r\n      setShowMoreInfo(true);\r\n      setreadmorebtnText('Read Less');\r\n    }\r\n    else {\r\n      setShowMoreInfo(false);\r\n      setreadmorebtnText('Read More');\r\n    }\r\n  }\r\n\r\n\r\n  const replaceEscapeCharacters = (item) => {\r\n    var itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n    itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n    return itemValue;\r\n  }\r\n\r\n  useEffect(() => {\r\n\r\n    if (tourEvents && tourEvents.length > 0 && tourEvents !== 'nocontent' && tourEvents.find(x => x.TourEventID === props.tourEventId)) {\r\n      let organizationCostRate = genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID) && organizationList.length > 0 ? organizationList.filter(x => x.CustomerID === props.organizationID)[0].CostRateID : \"\";\r\n\r\n      if (!props.isEditEvent || (!props.isContinueToExtraItemDrawer && apiData.TourEventID !== props.tourEventId)) {\r\n        actionGetExtraItem(dispatch, props.tourEventId, props.ismembershipapplied, props.membercostrate, props.isIDME, props.isIDMECostrate, organizationCostRate)\r\n      }\r\n      else if (props.isEditEvent && !props.isContinueToExtraItemDrawer && (props.ismembershipapplied || props.isIDME)) {\r\n        actionGetExtraItemAfterMembership(dispatch, apiData, props.tourEventId, props.ismembershipapplied, props.membercostrate, props.isIDME, props.isIDMECostrate, organizationCostRate)\r\n      }\r\n    }\r\n\r\n  }, [tourEvents]);\r\n\r\n  useEffect(() => {\r\n\r\n    if (apiData && apiData.TourEventID !== props.tourEventId)\r\n      actionStartAppLoader(dispatch);\r\n\r\n    else\r\n      actionEndAppLoader(dispatch);\r\n  }, [apiData])\r\n\r\n\r\n  const errorcancelhandle = () => {\r\n    seterrorMsg(\"\");\r\n    actionShopCartResetError(dispatch);\r\n  }\r\n\r\n  const GetBookingInfo = (bookingInfo) => {\r\n\r\n    if (showMoreInfo) {\r\n      return bookingInfo.substring(0, bookingInfo.length - 1);\r\n    }\r\n\r\n    return bookingInfo.substring(0, DisplayBookingTypeInfoCharacters);\r\n  }\r\n\r\n\r\n  const ValidateBookingRequiredFields = () => {\r\n    let validate = true;\r\n\r\n    if (bookingUDFS.bookingUDFs.length > 0 && bookingUDFS.bookingUDFs.filter(x => x.BookingTypeID === props.bookingtypeID).length > 0) {\r\n      let booking = bookingUDFS.bookingUDFs.filter(x => x.BookingTypeID == props.bookingtypeID)[0];\r\n\r\n      if (booking.UDFCategories && booking.UDFCategories.length > 0) {\r\n        booking.UDFCategories.map(udfCategories => {\r\n\r\n          let udfCat = { ...udfCategories };\r\n\r\n          if (udfCat.UserDefinedFields && udfCat.UserDefinedFields.length > 0 && validate) {\r\n            udfCat.UserDefinedFields.filter(x => x.toureventID > 0).map(UDF => {\r\n\r\n              if (UDF.IsRequired && UDF.hasOwnProperty('Value') && validate) {\r\n\r\n                if ((UDF.UDFType === \"Text\" || UDF.UDFType === \"Decimal\" || UDF.UDFType === \"Date\") && UDF.Value.length < 1) {\r\n                  validate = false;\r\n                  seterrorMsg('Please fill all required UDFs.');\r\n                }\r\n                else if (UDF.UDFType === \"Bit\" && (UDF.Value === false || UDF.Value.length < 1)) {\r\n                  validate = false;\r\n                  seterrorMsg('Please fill all required UDFs.');\r\n                }\r\n              }\r\n            });\r\n          }\r\n        });\r\n      }\r\n    }\r\n\r\n    return validate;\r\n  }\r\n  return (\r\n    <div>\r\n      <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n      <Grid container>\r\n        <Paper className={classes.root}>\r\n          <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"10px\" }}>\r\n            {window.matchMedia(\"(min-width: 600px)\").matches ? \"\" : <ArrowBackIosIcon className={classes.arrowBtn} onClick={() => { props.toggleDrawer(\"right\", false) }} />}\r\n            {apiData.hasOwnProperty(\"EventName\") ? apiData.EventName : null}\r\n          </Typography>\r\n          <Grid container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n            <Typography variant=\"subtitle1\" color=\"textSecondary\" className={classes.BookingInfoCls}>\r\n              {bkngType !== undefined && bkngType.hasOwnProperty(\"BookingTypeInfo\") ? ReactHtmlParser(replaceEscapeCharacters(GetBookingInfo(bkngType.BookingTypeInfo ? bkngType.BookingTypeInfo : \"\"))) : null}\r\n            </Typography>\r\n\r\n\r\n            <Link\r\n              className={classes.readmoreBtn}\r\n              component=\"button\"\r\n              variant=\"body2\"\r\n              onClick={() => ShowMoreInfoClick()}\r\n              style={{ display: bkngType.BookingTypeInfo && bkngType.BookingTypeInfo.length < DisplayBookingTypeInfoCharacters ? 'none' : 'block' }}\r\n            >\r\n              {readmorebtnText}\r\n            </Link>\r\n\r\n          </Grid>\r\n          {bkngType.AllowedCustomerTypes === 'All' && !bkngType.ShowTourProductsBasedOnGroupSize && !genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID) ?\r\n            <Grid style={{ paddingBottom: \"20px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n              <Grid item xs={2} ms={2} lg={2}></Grid>\r\n              <Grid item xs={8} ms={8} lg={8} align='center'>\r\n                <Button variant=\"contained\" size=\"small\" color=\"primary\" onClick={() => props.goToExtraItemOrGroupDrawer(false)}>{PurchaseAsOrganizationButton}</Button>\r\n              </Grid>\r\n              <Grid item xs={2} ms={2} lg={2}></Grid>\r\n            </Grid>\r\n            : null}\r\n        </Paper>\r\n\r\n        <Card style={{ borderRadius: \"0\", width: \"100%\" }}>\r\n\r\n          <ExtraItemsProducts allowQuantityChange={true}\r\n            tourEventId={props.tourEventId}\r\n            ismembershipapplied={props.ismembershipapplied}\r\n            membercostrate={props.membercostrate}\r\n            isIDME={props.isIDME}\r\n            isIDMECostrate={props.isIDMECostrate}\r\n            bookingtypeID={props.bookingtypeID} groupSize={props.groupSize}\r\n            isEditEvent={props.isEditEvent}\r\n          />\r\n\r\n          {bkngType.AddChaperoneTickets && bkngType.ShowTourProductsBasedOnGroupSize ? <Chaperone tourEventId={props.tourEventId} bookingtypeID={props.bookingtypeID} /> : null}\r\n\r\n          <BookingUDFields key={props.tourEventId} toureventID={props.tourEventId} bookingtypeID={props.bookingtypeID} />\r\n\r\n          {genfunction.IsShowPartPaymentSelection(apiData, bkngType, props.groupSize) ? <PaymentSelection isEditEvent={props.isEditEvent} toureventID={props.tourEventId}\r\n            ref={ref} onChangePaymentOption={onChangePaymentOption} paymentOption={state.paymentOption} amountSelected={state.amountSelected}\r\n            bookingtypeID={props.bookingtypeID}  ></PaymentSelection> : null}\r\n\r\n          <CardContent>\r\n\r\n            <Grid style={{ paddingTop: \"20px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n\r\n              <Grid item xs={8} ms={8} lg={8}>\r\n                <Typography variant=\"h5\" style={{ marginLeft: \"20px\", marginBottom: \"20px\" }}>Tax =  {genfunction.ccyFormat(apiData.TaxAmount ? apiData.TaxAmount : 0)}</Typography>\r\n              </Grid>\r\n\r\n              <Grid item xs={8} ms={8} lg={8}>\r\n                <Typography variant=\"h5\" style={{ marginLeft: \"20px\" }}>Total =  {genfunction.ccyFormat(apiData.TotalAmount ? apiData.TotalAmount : 0)}</Typography>\r\n              </Grid>\r\n\r\n              <Grid item xs={4} ms={4} lg={4}>\r\n                <Button variant=\"contained\" size=\"small\" color=\"primary\" disabled={saveBtn || !isAddToCart} onClick={() => redirectCall()}>Add to Cart</Button>\r\n              </Grid>\r\n            </Grid>\r\n          </CardContent>\r\n        </Card>\r\n      </Grid>\r\n    </div >\r\n  );\r\n}\r\n\r\nexport default ExtraItemDrawer;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Card, CardHeader, CardContent, Typography, Grid, TextField, Radio, FormControlLabel, RadioGroup } from '@material-ui/core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { genfunction } from 'helpers';\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { actionGetOrganizationSection, actionResetOrganizationSection } from 'actions/actionOrganizationSection';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\n\r\nconst { OrganizationNameHeader, OrganizationInstructionText, OrganizationChangePopupMsg, PurchaseOrganizationBookingNotAllowedForMembership } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    OrganizationInfoCls: {\r\n        padding: '16px',\r\n        textAlign: 'justify'\r\n    },\r\n\r\n}));\r\n\r\nconst OrganizationSection = (props) => {\r\n    const classes = useStyles();\r\n\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [colorState, setColorState] = React.useState('');\r\n    const dispatch = useDispatch();\r\n\r\n    const reducerOrganizationSection = useSelector(state => state.reducerOrganizationSection);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0] : null;\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const countryandstates = useSelector(state => state.reducerCountryAndState.countryandstate);\r\n    let defaultCountry = countryandstates && countryandstates.length > 0 ? countryandstates[0].Country : \"\";\r\n\r\n    useEffect(() => {\r\n\r\n        if (reducerOrganizationSection.organizationlisterror !== undefined && reducerOrganizationSection.organizationlisterror.length > 0) {\r\n            seterrorMsg(reducerOrganizationSection.organizationlisterror);\r\n        }\r\n    }, [reducerOrganizationSection.organizationlisterror]);\r\n\r\n    useEffect(() => {\r\n        if (reducerOrganizationSection.loading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [reducerOrganizationSection.loading]);\r\n\r\n\r\n    useEffect(() => {\r\n\r\n\r\n        if (bkngType.RestrictCompanyListByCostRate) {\r\n            let costRateList = Object.keys(bkngType.AllowedCostRateIDs).map(function (k) { return bkngType.AllowedCostRateIDs[k].CostRateID }).join(\",\");\r\n            actionGetOrganizationSection(dispatch, costRateList.toString());\r\n\r\n        }\r\n        else\r\n            actionResetOrganizationSection(dispatch);\r\n\r\n        if (genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID))\r\n            handleChange(\"Organization\");\r\n\r\n\r\n    }, [])\r\n\r\n    const errorcancelhandle = () => {\r\n        if (reducerOrganizationSection.organizationlisterror.length > 0)\r\n            actionResetOrganizationSection(dispatch)\r\n\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const handleChange = (value) => {\r\n\r\n        if (value === \"Organization\")\r\n            props.handleChange(true)\r\n\r\n        else {\r\n            props.handleChange(false);\r\n            props.onChange(null);\r\n        }\r\n\r\n    }\r\n\r\n    const validateChangeOrganization = (event, value) => {\r\n\r\n        if (membershipPackages && membershipPackages.length > 0) {\r\n            setColorState('info');\r\n            seterrorMsg(PurchaseOrganizationBookingNotAllowedForMembership);\r\n        }\r\n        else if (genfunction.IsOrganization(cartEvents)) {\r\n\r\n            let indexOrg = cartEvents.findIndex(x => x.OrganizationID !== \"\" && x.TourEventID !== props.tourEventId);\r\n\r\n            if (indexOrg >= 0 && value && cartEvents[indexOrg].OrganizationID !== value.CustomerID)\r\n                seterrorMsg(OrganizationChangePopupMsg);\r\n            else\r\n                props.onChange(value);\r\n        }\r\n\r\n        else\r\n            props.onChange(value);\r\n    }\r\n    \r\n    let organizationTxt = genfunction.GetValueFromCountryAndState(countryandstates, defaultCountry, \"OrganizationText\");\r\n\r\n    return (\r\n        <div >\r\n            <ErrorHandling msg={errorMsg} color={colorState} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n\r\n            <Card style={{ borderRadius: \"0\" }} className={classes.box100per}>\r\n                <CardHeader className={classes.tourheaderbox}\r\n                    title={OrganizationNameHeader}\r\n                    titleTypographyProps={{ color: \"inherit\" }}\r\n                />\r\n\r\n                <CardContent >\r\n                    {bkngType.AllowedCustomerTypes === \"All\" && bkngType.ShowTourProductsBasedOnGroupSize ?\r\n\r\n                        <Grid container>\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                            <Grid item xs={10} ms={10} lg={10}>\r\n                                <RadioGroup className={classes.box100per} aria-label=\"purchaser\" name=\"purchaser-group\"\r\n                                    defaultValue={genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID) ? \"Organization\" : \"Individual\"}\r\n                                    onChange={({ target: { value } }) => handleChange(value)}\r\n                                >\r\n\r\n                                    <FormControlLabel value=\"Individual\" control={<Radio />} label=\"Purchase as an Individual\" />\r\n                                    <FormControlLabel value=\"Organization\" control={<Radio />} label={\"Purchase as an \" + organizationTxt} />\r\n                                </RadioGroup>\r\n                            </Grid>\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n\r\n                        </Grid>\r\n                        : null\r\n                    }\r\n                    {props.showOrganization || bkngType.RequireCompanyName || (!bkngType.ShowTourProductsBasedOnGroupSize && props.isContinueToGroupDrawer) ?\r\n\r\n                        <Grid style={{ padding: \"10px\", width: \"100%\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} >\r\n\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                            <Grid item xs={10} ms={10} lg={10}>\r\n                                {reducerOrganizationSection.organizationlist && reducerOrganizationSection.organizationlist.length > 0 ?\r\n                                    <Autocomplete\r\n                                        id=\"organization\"\r\n                                        name=\"organization\"\r\n                                        options={reducerOrganizationSection.organizationlist}\r\n                                        fullWidth={true}\r\n                                        onChange={validateChangeOrganization}\r\n                                        autoHighlight\r\n                                        getOptionLabel={(option) => {\r\n                                            if (option.hasOwnProperty('CustomerName')) {\r\n                                                return option.CustomerName;\r\n                                            }\r\n\r\n                                            return option.toString();\r\n                                        }}\r\n                                        value={genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID) ?\r\n                                            reducerOrganizationSection.organizationlist.filter(x => x.CustomerID === props.organizationID)[0] : \"\"}\r\n\r\n                                        style={{ width: \"100%\" }}\r\n                                        renderInput={(params) => <TextField {...params} variant='outlined' label={\"Select an \" + organizationTxt} />}\r\n\r\n                                    ></Autocomplete>\r\n\r\n                                    : \"\"}\r\n                            </Grid>\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                            <Grid item xs={10} ms={10} lg={10}>\r\n                                <Typography variant=\"body2\" color=\"textSecondary\" className={classes.OrganizationInfoCls}>\r\n                                    {ReactHtmlParser(genfunction.replaceEscapeCharacters(OrganizationInstructionText))}\r\n                                </Typography>\r\n                            </Grid>\r\n                            <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                        </Grid>\r\n                        : null}\r\n\r\n                </CardContent>\r\n            </Card>\r\n        </div >\r\n    );\r\n}\r\n\r\nexport default OrganizationSection;\r\n\r\n\r\n","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Card, CardHeader, CardContent, Typography, Grid, TextField } from '@material-ui/core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { genfunction } from 'helpers';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { DialogeBox } from 'components/DialogeBox';\r\nimport { actionShopCartRemoveSingleTourWithTourHold } from 'actions';\r\n\r\nconst { GroupSizeHeader, GroupSizeChangePopupMsg, ClearCartEventPopupButton1Text, ClearCartEventPopupButton2Text } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    GroupInfoCls: {\r\n        padding: '16px',\r\n        textAlign: 'justify'\r\n    }\r\n}));\r\n\r\nconst GroupSizeSection = (props) => {\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [clearCartPopUp, setClearCartPopUp] = useState(false);\r\n\r\n\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0] : null;\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n\r\n    const validateChangeGroupSize = (event, value) => {\r\n\r\n        if (props.isEditEvent && cartEvents && cartEvents.length > 0 && cartEvents.find(x => x.TourEventID == props.tourEventId)) {\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID == props.tourEventId);\r\n\r\n            if (value && cartTourEvent.GroupSize !== value.GroupSize)\r\n                setClearCartPopUp(true);\r\n            else\r\n                props.onChange(value);\r\n        }\r\n\r\n        else\r\n            props.onChange(value);\r\n    }\r\n\r\n    const continueButtonHandler = () => {\r\n        setClearCartPopUp(false);\r\n    }\r\n\r\n    const clearButtonHandler = (value) => {\r\n\r\n        actionShopCartRemoveSingleTourWithTourHold(dispatch, cartEvents, props.tourEventId)\r\n\r\n        setClearCartPopUp(false);\r\n        props.toggleIsEdit(false);\r\n        props.onChange(null);\r\n\r\n    }\r\n\r\n    return (\r\n        <div >\r\n\r\n            <DialogeBox open={clearCartPopUp} title=\"Confirmation\"\r\n                message={GroupSizeChangePopupMsg}\r\n                button1text={ClearCartEventPopupButton1Text}\r\n                button1clickhandler={clearButtonHandler}\r\n                button2text={ClearCartEventPopupButton2Text}\r\n                button2clickhandler={continueButtonHandler}\r\n            ></DialogeBox>\r\n\r\n            <Card style={{ borderRadius: \"0\" }} className={classes.box100per}>\r\n                <CardHeader className={classes.tourheaderbox}\r\n                    title={GroupSizeHeader}\r\n                    titleTypographyProps={{ color: \"inherit\" }}\r\n                />\r\n\r\n                <Typography variant=\"subtitle1\" color=\"textSecondary\" className={classes.GroupInfoCls}>\r\n                    {ReactHtmlParser(genfunction.replaceEscapeCharacters(bkngType.GroupSizeMessage))}\r\n                </Typography>\r\n\r\n                <CardContent>\r\n\r\n                    <Grid style={{ padding: \"10px\", width: \"100%\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n                        <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                        <Grid item xs={10} ms={10} lg={10}>\r\n                            {bkngType.GroupSizeOptions && bkngType.GroupSizeOptions.length > 0 ?\r\n\r\n                                <Autocomplete\r\n                                    id=\"groupSize\"\r\n                                    name=\"groupSize\"\r\n                                    options={bkngType.GroupSizeOptions}\r\n                                    fullWidth={true}\r\n                                    onChange={validateChangeGroupSize}\r\n                                    autoHighlight\r\n                                    getOptionLabel={(option) => {\r\n                                        if (option.hasOwnProperty('GroupSize')) {\r\n                                            return option.GroupSize;\r\n                                        }\r\n                                        return option.toString();\r\n                                    }}\r\n                                    value={props.groupSize}\r\n\r\n                                    style={{ width: \"100%\" }}\r\n                                    renderInput={(params) => <TextField {...params} variant='outlined' label=\"Group Size\" />}\r\n\r\n                                ></Autocomplete>\r\n\r\n                                : \"\"}\r\n                        </Grid>\r\n                        <Grid item xs={1} ms={1} lg={1}></Grid>\r\n                    </Grid>\r\n\r\n\r\n                </CardContent>\r\n            </Card>\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default GroupSizeSection;\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Button, Paper, Typography, Grid, Link } from '@material-ui/core';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ArrowBackIosIcon from '@material-ui/icons/ArrowBackIos';\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport OrganizationSection from './OrganizationSection';\r\nimport GroupSizeSection from './GroupSizeSection';\r\nimport { genfunction } from 'helpers';\r\nimport { actionGetExtraItem, actionGetCountryAndState } from 'actions';\r\n\r\nconst { NoExtraItemFoundMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        width: '100%'\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    arrowBtn: {\r\n        float: 'left',\r\n        marginLeft: '10px',\r\n        marginTop: '3px'\r\n    },\r\n    section: {\r\n        marginTop: '10px',\r\n        borderRadius: \"0\",\r\n        width: \"100%\"\r\n    },\r\n\r\n}));\r\n\r\nconst GroupReservationDrawer = (props) => {\r\n    const classes = useStyles();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [showOrganization, setShowOrganization] = useState(false);\r\n    const [disableBeforeLoading, setDisableBeforeLoading] = useState(true);\r\n\r\n    const dispatch = useDispatch();\r\n\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const bkngType = bookingTypes.filter(x => x.BookingTypeID == props.bookingtypeID)[0];\r\n    const tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\r\n    const tourEvent = tourEvents && tourEvents.length > 0 ? tourEvents.filter(x => x.TourEventID == props.tourEventId)[0] : null;\r\n    const reducerAppLoader = useSelector(state => state.reducerAppLoader.loading);\r\n    const organizationList = useSelector(state => state.reducerOrganizationSection.organizationlist);\r\n    const countryandstates = useSelector(state => state.reducerCountryAndState.countryandstate);\r\n    let defaultCountry = countryandstates && countryandstates.length > 0 ? countryandstates[0].Country : \"\";\r\n\r\n    useEffect(() => {\r\n        if (reducerAppLoader === false)\r\n            setDisableBeforeLoading(false);\r\n\r\n    }, [reducerAppLoader])\r\n\r\n    const continueHandler = () => {\r\n\r\n        if (validateOrganization() && validateGroupSize()) {\r\n\r\n            let organizationCostRate = genfunction.IsNotNullOrEmptyOrUndefined(props.organizationID) && organizationList.length > 0 ? organizationList.filter(x => x.CustomerID === props.organizationID)[0].CostRateID : \"\";\r\n            actionGetExtraItem(dispatch, props.tourEventId, props.ismembershipapplied, props.membercostrate, props.isIDME, props.isIDMECostrate, organizationCostRate)\r\n\r\n            props.goToExtraItemOrGroupDrawer(true);\r\n        }\r\n    }\r\n\r\n    const validateGroupSize = () => {\r\n\r\n        if (bkngType.ShowTourProductsBasedOnGroupSize && props.groupSize === \"\") {\r\n            seterrorMsg(\"Please select Group Size\")\r\n            return false\r\n        }\r\n        else if (bkngType.ShowTourProductsBasedOnGroupSize && tourEvent.TourProducts.findIndex(x => x.LimitDisplayOnGroupSize && x.GroupSize === props.groupSize) == -1) {\r\n            seterrorMsg(NoExtraItemFoundMsg)\r\n            return false\r\n        }\r\n        else\r\n            return true\r\n    }\r\n\r\n    useEffect(() => {\r\n        actionGetCountryAndState(dispatch);\r\n\r\n    }, [])\r\n\r\n    const validateOrganization = () => {\r\n        if ((bkngType.RequireCompanyName || showOrganization || (!bkngType.ShowTourProductsBasedOnGroupSize && props.isContinueToGroupDrawer)) && props.organizationID === \"\") {\r\n            seterrorMsg(\"Please select an \" + genfunction.GetValueFromCountryAndState(countryandstates, defaultCountry, \"OrganizationText\"));\r\n            return false\r\n        }\r\n        else\r\n            return true\r\n    }\r\n\r\n    const handleChange = (value) => {\r\n        setShowOrganization(value);\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n\r\n    return (\r\n        <div>\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n            <Grid container>\r\n                <Paper className={classes.root}>\r\n                    <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"10px\" }}>\r\n                        {window.matchMedia(\"(min-width: 600px)\").matches ? \"\" : <ArrowBackIosIcon className={classes.arrowBtn} onClick={() => { props.toggleDrawer(\"right\", false) }} />}\r\n                        {tourEvent ? tourEvent.EventName : null}\r\n                    </Typography>\r\n                </Paper>\r\n\r\n                <Grid className={classes.section}>\r\n                    {bkngType.RequireCompanyName || bkngType.AllowedCustomerTypes === 'All' ?\r\n                        <OrganizationSection bookingtypeID={props.bookingtypeID} organizationID={props.organizationID} showOrganization={showOrganization} handleChange={handleChange}\r\n                            onChange={props.onChangeOrganization} tourEventId={props.tourEventId} isContinueToGroupDrawer={props.isContinueToGroupDrawer} />\r\n                        : null}\r\n\r\n                </Grid>\r\n\r\n                <Grid className={classes.section}>\r\n                    {bkngType.ShowTourProductsBasedOnGroupSize ?\r\n                        <GroupSizeSection bookingtypeID={props.bookingtypeID} groupSize={props.groupSize}\r\n                            onChange={props.onChangeGroupSize} tourEventId={props.tourEventId} isEditEvent={props.isEditEvent}\r\n                            toggleIsEdit={props.toggleIsEdit} />\r\n                        : null}\r\n                </Grid>\r\n\r\n                <Grid style={{ paddingTop: \"20px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n                    <Grid item xs={3} ms={3} lg={3}></Grid>\r\n                    <Grid item xs={6} ms={6} lg={6} align='center'>\r\n                        <Button variant=\"contained\" size=\"small\" color=\"primary\" disabled={disableBeforeLoading}\r\n                            onClick={() => continueHandler()}>Continue</Button>\r\n                    </Grid>\r\n                    <Grid item xs={3} ms={3} lg={3}></Grid>\r\n                </Grid>\r\n\r\n\r\n            </Grid>\r\n\r\n        </div >\r\n    );\r\n}\r\n\r\nexport default GroupReservationDrawer;\r\n","import React, { useEffect, Children, useState } from 'react';\nimport BigCalendar from 'react-big-calendar';\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\nimport Drawer from '@material-ui/core/Drawer';\nimport { makeStyles } from '@material-ui/core/styles';\nimport moment from 'moment';\nimport { Button, Grid, Typography } from \"@material-ui/core\";\nimport ExtraItemDrawer from 'components/CalendarControls/ExtraItemDrawer';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { actionGetExtraItems, actionResetErrorMessage } from 'actions';\nimport Moment from 'moment';\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\nimport { actionResetDisplayAreas } from 'actions';\nimport { genfunction } from '../../helpers';\nimport { withRouter } from 'react-router';\nimport { actionShopCartSetManageMyBooking, actionShopCartResetMembership, actionShopCartResetIDME } from 'actions';\nimport { actionResetBooking } from 'actions';\nimport GroupReservationDrawer from './GroupReservationDrawer';\n\n\nconst { DefaultColor, EventNotAvailable, DefaultCostRateID, CalendarHeight, CalendarWidth, CalendarScreenDatTimeAlreadyBuyMsg,\n  CalendarStartingHour, UnableToBuyTicketShowBookNowEnabled, UnableToBuyTicketShowBookNowDisabled, CalendarScreenMessage1, CalendarScreenMessage2 } = window['runConfig'];\nconst localizer = BigCalendar.momentLocalizer(moment);\n\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(3)\n  },\n  content: {\n    marginTop: theme.spacing(2)\n  },\n  list: {\n    width: 400,\n    fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\n  }\n  ,\n  list2: {\n    width: '100%',\n    fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\n  }\n}));\n\nconst CalendarControl = (props) => {\n\n  const classes = useStyles();\n\n  let apiData = false;\n  const dispatch = useDispatch();\n\n  const tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\n  const bookingType = useSelector(state => state.reducerBookingTypes.bookingType);\n  const errExtraItem = useSelector(state => state.reducerExtraItems.extramItemsError);\n  const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\n  const displayArea = useSelector(state => state.reducerDisplayAreas);\n  const displayAreasState = useSelector(state => state.reducerDisplayAreas);\n  const shopcartreducer = useSelector(state => state.reducerShopCart);\n  const reducerBooking = useSelector(state => state.reducerBooking);\n  const extraItem = useSelector(state => state.reducerExtraItems.extraItem);\n\n  const [currentview, setcurrentview] = useState(\"\");\n  const [nextWeekDate, setnextWeekDate] = useState('');\n\n\n  useEffect(() => {\n    GetMonthlyRecords();\n  }, []);\n\n  useEffect(() => {\n\n    if (nextWeekDate) {\n      actionGetExtraItems(dispatch, props.urlID, true, displayArea.isDisplay ? true : false,\n        Moment(nextWeekDate).format('YYYY-MM-DD'), null, \"WeekView\", null);\n    }\n\n  }, [nextWeekDate]);\n\n  const GetMonthlyRecords = () => {\n\n    let propsEvent = props.location.event;\n\n    if (props.Path == \"/calendar/:id\") {\n      actionResetDisplayAreas(dispatch);\n      actionGetExtraItems(dispatch, props.urlID, true, false);\n    }\n    else {\n\n      if (displayAreasState.displayAreas !== undefined && displayAreasState.displayAreas.length > 0) {\n        let newDisplayAreas = JSON.parse(JSON.stringify(displayAreasState.displayAreas));\n        let newObj = { ...newDisplayAreas.filter(x => x.DisplayAreaNo == props.urlID)[0] };\n\n        propsEvent && Moment(propsEvent.EventDate).format('YYYY-MM') !== Moment(newObj.NextTourDate).format('YYYY-MM') ?\n          actionGetExtraItems(dispatch, props.urlID, false, true, propsEvent.EventDate, null, null)\n          :\n          actionGetExtraItems(dispatch, props.urlID, true, true, newObj.NextTourDate, null, null);\n      }\n      else {\n        propsEvent && Moment(propsEvent.EventDate).format('YYYY-MM') !== Moment(displayAreasState.displayArea.NextTourDate).format('YYYY-MM') ?\n          actionGetExtraItems(dispatch, props.urlID, false, true, propsEvent.EventDate, null, null)\n          :\n          actionGetExtraItems(dispatch, props.urlID, true, true, displayAreasState.displayArea.NextTourDate, null, null);\n      }\n    }\n  };\n\n\n  const GetCostRate = () => {\n    let cstrate = 0;\n\n    if (shopcartreducer.membershipValidation.ismembershipApplied) {\n      cstrate = shopcartreducer.membershipValidation.membershipcostrate;\n    }\n    else if (shopcartreducer.IDME.isIdMeApplied) {\n      cstrate = shopcartreducer.IDME.idmecostrate;\n    }\n    else {\n      cstrate = DefaultCostRateID;\n    }\n\n    return cstrate;\n  }\n\n\n  const GetDefaultDate = () => {\n\n    if (bookingType !== undefined && bookingType.hasOwnProperty(\"NextTourDate\")) {\n      var year = Moment(bookingType.NextTourDate).format('YYYY');\n      var month = Moment(bookingType.NextTourDate).format('MM');\n      var dt = Moment(bookingType.NextTourDate).format('DD');\n\n      return new Date(year, month - 1, dt);\n    }\n    else {\n      var today = props.location.event ? new Date(props.location.event.EventDate) : new Date();\n      return new Date(today.getFullYear(), today.getMonth(), today.getDate());\n    }\n  }\n\n  if (tourEvents == undefined || tourEvents.length <= 0) {\n    apiData = false;\n  }\n  else {\n    apiData = true;\n  }\n\n  const constredirect = (products) => {\n    props.constredirect(products);\n  }\n\n  let events = [];\n\n  const ConvertTourEventsToEvents = (tourEvents) => {\n\n    if ((tourEvents == 'nocontent' || tourEvents === undefined) ||\n      (tourEvents.length > 0 && !tourEvents[0].hasOwnProperty(\"TourEventID\"))) {\n      return;\n    }\n\n    for (let j = 0; j < tourEvents.length; j++) {\n\n      if (bookingTypes === undefined) {\n        return;\n      }\n\n      const bookType = bookingTypes.filter(x => x.BookingTypeID == tourEvents[j].BookingTypeID)[0];\n\n      if (tourEvents[j].BookNowOption === 'Past Event' || tourEvents[j].BookNowOption === 'Cancelled') {\n        continue;\n      }\n\n      if (tourEvents[j].BookNowOption === 'Sold Out' &&\n        tourEvents[j].EventStartDateTime < tourEvents[j].CurrentDateTimeAtLocation) {\n        continue;\n      }\n\n      if (tourEvents[j].TourDisplayDays && tourEvents[j].TourDisplayDays > 0) {\n        let lastdisplaydate = new Date(tourEvents[j].CurrentDateTimeAtLocation);\n        lastdisplaydate.setDate(lastdisplaydate.getDate() + tourEvents[j].TourDisplayDays);\n        if (new Date(tourEvents[j].EventStartDateTime) > lastdisplaydate)\n          continue;\n      }\n\n      var event = {\n\n        toureventID: tourEvents[j].TourEventID,\n        allDay: false,\n        start: new Date(tourEvents[j].EventStartDateTime),\n        end: new Date(tourEvents[j].EventEndDateTime),\n        title: StartAndEndTime(tourEvents, j, bookType) + GetWebDisplayName(tourEvents, j, bookType),\n        color: tourEvents[j].DisplayColor,\n        level: tourEvents[j].DisplayColorLevel,\n        isExtraItem: false,\n        startDate: Moment(tourEvents[j].EventStartDateTime).format('YYYY-MM-DD'),\n        bookingTypeID: tourEvents[j].BookingTypeID,\n        isSaleable: tourEvents[j].BookNowOption === 'Book Now' ? true : false,\n        isSingleTour: false,\n        notavailableReason: ''\n      }\n\n\n\n\n      if (bookType != undefined && bookType.hasOwnProperty(\"ShowAvailability\") && bookType.ShowAvailability) {\n\n        if (event.isSaleable)\n          event.title += ' (' + tourEvents[j].SeatsAvailable + ' ' + bookType.AvailabilityText + ')';\n        else\n          event.title += ' (' + tourEvents[j].BookNowOption + ')';\n        event.notavailableReason = tourEvents[j].BookNowOption;\n      }\n\n      if (shopcartreducer.managemybooking && reducerBooking.booking[0]) {\n\n        if (reducerBooking.booking[0].TourEventID === event.toureventID) {\n          event.isSaleable = false;\n          event.title += ' (' + CalendarScreenDatTimeAlreadyBuyMsg + ')';\n          event.notavailableReason = CalendarScreenDatTimeAlreadyBuyMsg;\n        }\n      }\n\n      if (!event.isSaleable) {\n        event.color = EventNotAvailable\n      }\n\n      var startEvent = Moment(tourEvents[j].EventStartDateTime).format('YYYY-MM-DD');\n\n      if (!displayArea.isDisplay && events !== undefined &&\n        events.filter(x => x.startDate == startEvent && x.isExtraItem).length == 0) {\n\n        for (let k = 0; k < tourEvents[j].TourProducts.length; k++) {\n\n          if (tourEvents[j].TourProducts[k].ShowOnCalendar) {\n\n            var e = Object.assign({}, event);\n\n            e.start = new Date(Moment(tourEvents[j].EventStartDateTime).format('YYYY-MM-DD 23:59:59'));\n            e.end = new Date(Moment(tourEvents[j].EventEndDateTime).format('YYYY-MM-DD 23:59:59'));\n            e.isExtraItem = true;\n            e.isSingleTour = tourEvents.filter(x => Moment(x.EventStartDateTime).format('YYYY-MM-DD') == startEvent && x.BookNowOption !== 'Past Event' && x.BookNowOption !== 'Cancelled' && x.BookNowOption !== 'Sold Out').length > 1 ? false : true;\n\n            if (tourEvents[j].TourProducts[k].hasOwnProperty(\"PriceMatrix\")) {\n              let pmatrix;\n\n              if (tourEvents[j].TourProducts[k].PriceMatrix && tourEvents[j].TourProducts[k].PriceMatrix.length > 1)\n                pmatrix = tourEvents[j].TourProducts[k].PriceMatrix.find(x => x.CostRateID == GetCostRate());\n              else\n                pmatrix = tourEvents[j].TourProducts[k].PriceMatrix ? tourEvents[j].TourProducts[k].PriceMatrix[0] : undefined;\n\n              if (pmatrix) {\n                e.title = tourEvents[j].TourProducts[k].TourProductName + ' ' + genfunction.ccyFormat(pmatrix ? pmatrix.Price : 0)\n                events.push(e)\n              }\n            }\n          }\n        }\n      }\n\n      events.push(event);\n    }\n  }\n\n  if (apiData) {\n    ConvertTourEventsToEvents(tourEvents);\n  }\n\n  const [state, setState] = useState({\n    right: false,\n    tourEventId: 0,\n    bookingTypeID: 0,\n    errorMsg: '',\n    bookingunsoldReson: '',\n    isContinueToExtraItemDrawer: false,\n    isContinueToGroupDrawer: false,\n    organizationID: \"\",\n    groupSize: \"\",\n    isEditEvent: false\n  });\n\n  useEffect(() => {\n    reloadEventForGroups(props.location.event);\n  }, [bookingTypes, tourEvents]);\n\n  const toggleDrawer = (side, open, event) => {\n\n    if (event && event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\n      return;\n    }\n\n    if (state.errorMsg.length > 0) {\n      return;\n    }\n\n    if (event) {\n\n      if ((event.isExtraItem && event.isSingleTour == false) || !event.isSaleable) {\n        setState({ ...state, errorMsg: event.notavailableReason.length > 0 ? UnableToBuyTicketShowBookNowEnabled + event.notavailableReason : UnableToBuyTicketShowBookNowDisabled, bookingunsoldReson: event.notavailableReason.length > 0 ? event.notavailableReason : 'Sold Out' });\n        return;\n      }\n\n      setState({ ...state, [side]: open, tourEventId: event.toureventID, bookingTypeID: event.bookingTypeID, bookingunsoldReson: '' });\n    }\n    else {\n\n      props.location.event = null;\n      setState({ ...state, [side]: open, tourEventId: 0, bookingunsoldReson: '', groupSize: \"\", organizationID: \"\", isContinueToExtraItemDrawer: false, isContinueToGroupDrawer: false, isEditEvent: false });\n    }\n  };\n\n  const checkIsReloadEvent = (event) => {\n\n    let reloadEvent = false;\n\n    if (genfunction.IsEditEvent(bookingTypes, extraItem)) {\n\n      if (shopcartreducer.events && shopcartreducer.events.length > 0 && shopcartreducer.events.find(x => x.TourEventID == event.toureventID)) {\n        reloadEvent = true;\n        event = shopcartreducer.events.filter(x => x.TourEventID == event.toureventID)[0];\n\n      }\n\n      reloadEvent ? reloadEventForGroups(event) : toggleDrawer('right', true, event);\n\n    }\n    else {\n      toggleDrawer('right', true, event);\n    }\n\n  }\n\n  const reloadEventForGroups = (event) => {\n\n    if (event && event.hasOwnProperty(\"TourEventID\")) {\n\n      setState({\n        ...state,\n        right: true,\n        tourEventId: event.TourEventID,\n        bookingTypeID: event.BookingTypeID,\n        selectedDate: new Date(event.EventDate),\n        groupSize: event.GroupSize,\n        organizationID: event.OrganizationID,\n        isContinueToGroupDrawer: event.OrganizationID !== \"\" ? true : false,\n        isEditEvent: true\n      });\n    }\n\n  }\n\n  const setIsEditEvent = (value) => {\n    setState({\n      ...state, isEditEvent: value\n    });\n  }\n\n  const goToExtraItemOrGroupDrawer = (value) => {\n    setState({ ...state, isContinueToExtraItemDrawer: value, isContinueToGroupDrawer: !value });\n  }\n\n  const showGroupDrawer = () => {\n\n    const bType = bookingTypes.filter(x => x.BookingTypeID == state.bookingTypeID)[0];\n\n    if (bType && !state.isContinueToExtraItemDrawer) {\n      if (bType.RequireCompanyName || bType.ShowTourProductsBasedOnGroupSize || state.isContinueToGroupDrawer)\n        return true;\n    }\n\n    return false\n  }\n\n  const onChangeOrganization = (value) => {\n\n    value ? setState({ ...state, organizationID: value.CustomerID }) : setState({ ...state, organizationID: \"\" })\n  }\n\n  const onChangeGroupSize = (value) => {\n\n    value ? setState({ ...state, groupSize: value.GroupSize }) : setState({ ...state, groupSize: \"\" })\n\n  }\n\n  const sideList = side => {\n\n    return (\n      < div className={window.matchMedia(\"(min-width: 600px)\").matches ? classes.list : classes.list2} role=\"presentation\" >\n\n        {showGroupDrawer() ?\n\n          <GroupReservationDrawer goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer}\n            ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\n            membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\n            isIDME={shopcartreducer.IDME.isIdMeApplied}\n            isIDMECostrate={shopcartreducer.IDME.idmecostrate}\n            organizationID={state.organizationID} groupSize={state.groupSize}\n            onChangeOrganization={onChangeOrganization}\n            onChangeGroupSize={onChangeGroupSize}\n            bookingtypeID={state.bookingTypeID} tourEventId={state.tourEventId} toggleDrawer={toggleDrawer}\n            isEditEvent={state.isEditEvent} toggleIsEdit={setIsEditEvent} isContinueToGroupDrawer={state.isContinueToGroupDrawer}\n          />\n          :\n          <ExtraItemDrawer tourEventId={state.tourEventId}\n            ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\n            membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\n            isIDME={shopcartreducer.IDME.isIdMeApplied}\n            isIDMECostrate={shopcartreducer.IDME.idmecostrate}\n            cstrate={GetCostRate()} bookingtypeID={state.bookingTypeID} callCheckout={constredirect}\n            toggleDrawer={toggleDrawer} isEditEvent={state.isEditEvent}\n            groupSize={state.groupSize} organizationID={state.organizationID}\n            goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer} isContinueToExtraItemDrawer={state.isContinueToExtraItemDrawer}\n\n          />\n\n        }\n\n      </div >)\n  };\n\n  const onView = (view) => {\n    setcurrentview(view);\n  }\n\n  useEffect(() => {\n\n    if (currentview === \"week\") {\n      if (nextWeekDate) {\n        actionGetExtraItems(dispatch, props.urlID, true, displayArea.isDisplay ? true : false,\n          Moment(nextWeekDate).format('YYYY-MM-DD'), null, \"WeekView\");\n      }\n    }\n\n    if (currentview === \"month\") {\n      var today = new Date();\n      var date = new Date(today.getFullYear(), (today.getMonth()), today.getDate());\n\n      if (currentview === \"\" || currentview === \"month\") {\n\n        var headerValue = document.getElementsByClassName('rbc-toolbar-label')[0].textContent;\n        var month = moment(headerValue).format('MM');\n        var year = moment(headerValue).format('YYYY');\n        var newMonth = year + '-' + month + '-' + 1;\n\n        if (today.getMonth() + 1 == month) {\n          actionGetExtraItems(dispatch, props.urlID, true, displayArea.isDisplay ? true : false, Moment(date).format('YYYY-MM-DD'));\n        }\n        else {\n          actionGetExtraItems(dispatch, props.urlID, false, displayArea.isDisplay ? true : false, Moment(newMonth).format('YYYY-MM-DD'));\n        }\n\n      }\n    }\n  }, [currentview]);\n\n  const FetchNewMonthDataHandler = (event) => {\n\n    var defaultDate = GetDefaultDate();\n    var today = new Date();\n    var date = new Date(today.getFullYear(), (today.getMonth()), today.getDate());\n\n    if (currentview === \"\" || currentview === \"month\") {\n      if (defaultDate.getMonth() == event.getMonth()) {\n        actionGetExtraItems(dispatch, props.urlID, true, displayArea.isDisplay ? true : false, Moment(event).format('YYYY-MM-DD'));\n      }\n      else if (event >= date) {\n        actionGetExtraItems(dispatch, props.urlID, false, displayArea.isDisplay ? true : false, Moment(event).format('YYYY-MM-DD'));\n      }\n    }\n\n    if (currentview === \"day\") {\n      actionGetExtraItems(dispatch, props.urlID, true, displayArea.isDisplay ? true : false, Moment(event).format('YYYY-MM-DD'), null, \"SingleDay\");\n    }\n  }\n\n  const errorcancelhandle = () => {\n    actionResetErrorMessage(dispatch);\n    setState({ ...state, right: false, errorMsg: '', bookingunsoldReson: '' });\n  }\n\n  // example implementation of a wrapper\n  const ColoredDateCellWrapper = ({ children, value }) =>\n    React.cloneElement(Children.only(children), {\n      style: {\n        ...children.style,\n        backgroundColor: BackgroundColor(value)\n      },\n    });\n\n\n  const eventStyleGetter = (event) => {\n    var style = {\n      backgroundColor: event.color !== undefined ? event.color : DefaultColor,\n      borderRadius: '0px',\n      opacity: 1,\n      border: '0px',\n      display: (currentview === \"week\" || currentview === \"day\") && event.isExtraItem !== undefined && event.isExtraItem ? 'none' : 'block',\n      cursor: event.isExtraItem !== undefined && event.isExtraItem && event.isSingleTour == false ? 'default' : 'pointer',\n      'pointer-events': event.isExtraItem !== undefined && event.isExtraItem && event.isSingleTour == false ? 'none' : 'auto',\n      'font-weight': event.isExtraItem !== undefined && event.isExtraItem ? 'unset' : 'bold'\n    };\n    return {\n      style: style\n    }\n  }\n\n  const BackgroundColor = (date) => {\n\n    if (!displayArea.isDisplay) {\n      let a = Moment(date).format('YYYY-MM-DD');\n\n      if (events !== undefined && events.length > 0) {\n        let event = events.filter(x => x.startDate == a && x.isExtraItem == false)[0];\n\n        if (event !== undefined) {\n          if (event.color !== undefined) {\n            return event.color;\n          }\n\n          return DefaultColor;\n\n        }\n      }\n    }\n\n  };\n\n\n\n  const minTime = new Date();\n  minTime.setHours(CalendarStartingHour, 0, 0);\n\n  const constredirecttofindmybpooking = () => {\n    actionResetBooking(dispatch);\n    actionShopCartResetMembership(dispatch);\n    actionShopCartResetIDME(dispatch);\n    actionShopCartSetManageMyBooking(dispatch, false, false);\n\n    props.history.push({\n      pathname: '/findmybooking'\n    })\n\n  }\n\n  const redirecttoconfirmbookingchanges = (event) => {\n\n    if (shopcartreducer.managemybooking && reducerBooking.booking[0] && event.isSaleable) {\n\n      if (reducerBooking.booking[0].TourEventID !== event.toureventID) {\n        props.history.push({\n          pathname: '/confimbookingchanges',\n          eventID: event.toureventID,\n          ismembershipapplied: shopcartreducer.membershipValidation.membershipcostrate,\n          membercostrate: shopcartreducer.membershipValidation.membershipcostrate,\n          bookingtypeID: event.bookingTypeID\n\n        })\n      }\n    }\n    else {\n      if (event.notavailableReason.length > 0) {\n        setState({ ...state, errorMsg: event.notavailableReason.length > 0 ? UnableToBuyTicketShowBookNowEnabled + event.notavailableReason : UnableToBuyTicketShowBookNowDisabled, bookingunsoldReson: event.notavailableReason.length > 0 ? event.notavailableReason : 'Sold Out' });\n        return;\n      }\n    }\n  }\n\n\n  return (\n    <Grid container className={classes.root + \" \" + classes.content}>\n\n      <ErrorHandling msg={errExtraItem.length > 0 ? errExtraItem : state.errorMsg} open={errExtraItem.length > 0 || state.errorMsg != \"\" ? true : false} handleclose={errorcancelhandle} />\n      <Grid container alignItems=\"center\" item xs={12} ms={12} lg={12} className=\"CalenderWrapper\">\n\n        {shopcartreducer.managemybooking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('AllowDateTimeChanges') && !reducerBooking.booking[0].AllowDateTimeChanges ?\n          <>\n            <Grid item align=\"center\" xs={12} ms={12} lg={12}>\n\n              <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\n                {reducerBooking.booking[0].hasOwnProperty('NoChangesMessage') ? reducerBooking.booking[0].NoChangesMessage : 'Date Time Changes are not allowed.'}\n              </Typography>\n              <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\n                style={{ padding: \"10px\" }}\n                onClick={() => constredirecttofindmybpooking()}>\n                Cancel Changes\n              </Button>\n            </Grid>\n          </>\n          :\n          <>\n            {\n              shopcartreducer.managemybooking ?\n                <Grid item align=\"center\" xs={12} ms={12} lg={12}>\n\n                  <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\n                    {CalendarScreenMessage1} {moment(reducerBooking.booking[0].EventStartDateTime).format('dddd,MMMM D')} at  {moment(reducerBooking.booking[0].EventStartDateTime).format('LT')} {CalendarScreenMessage2}\n                  </Typography>\n                  <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\n                    style={{ padding: \"10px\" }}\n                    onClick={() => constredirecttofindmybpooking()}>\n                    Cancel Changes\n                  </Button>\n                </Grid> : null\n            }\n\n\n\n            {events !== undefined ?\n              <BigCalendar style={{ width: CalendarWidth, height: CalendarHeight, margin: \"0 auto\", overflow: \"auto\" }}\n                localizer={localizer}\n                defaultView=\"month\"\n                events={events}\n                min={minTime}\n                popup={true}\n                onSelectEvent={(event) => {\n                  shopcartreducer.managemybooking ? redirecttoconfirmbookingchanges(event) :\n                    checkIsReloadEvent(event, 'right', true)\n                }}\n                onView={onView}\n                onNavigate={(event) => {\n                  FetchNewMonthDataHandler(event);\n                }}\n                views={['month', 'week']}\n                defaultDate={GetDefaultDate()}\n                eventPropGetter={(eventStyleGetter)}\n                components={{\n                  dateCellWrapper: ColoredDateCellWrapper\n                }}\n                formats={{\n                  dayRangeHeaderFormat: ({ start, end }) => {\n\n                    if (moment(nextWeekDate).format('DD/MM/YYYY') !== moment(start).format('DD/MM/YYYY')) {\n                      setnextWeekDate(start);\n                    }\n\n                    return (moment(start).format('MMMM DD')) + ' - ' + (moment(end).format('MMMM DD'));\n                  },\n                  monthHeaderFormat: \"MMMM YYYY\",\n                }}\n              />\n              : null\n            }\n            <div>\n              <Drawer anchor=\"right\" open={state.right} onClose={() => toggleDrawer('right', false)}>\n                {sideList('right')}\n              </Drawer>\n            </div>\n          </>\n\n\n        }\n      </Grid>\n    </Grid >\n  );\n}\n\nexport default withRouter(CalendarControl);\n\nfunction StartAndEndTime(tourEvents, j, bookType) {\n  let time = \"\";\n\n  if (bookType) {\n    if (bookType.ShowStartTime) {\n      time += Moment(tourEvents[j].EventStartDateTime).format('hh:mm a');\n    }\n\n    if (bookType.ShowEndTime && !bookType.ShowStartTime) {\n      time += Moment(tourEvents[j].EventEndDateTime).format('hh:mm a')\n    }\n\n    if (bookType.ShowEndTime && bookType.ShowStartTime) {\n      time += ' - ' + Moment(tourEvents[j].EventEndDateTime).format('hh:mm a')\n    }\n\n    time += ' ';\n  }\n  return time;\n}\n\nfunction GetWebDisplayName(tourEvents, j, bookingType) {\n  return bookingType ? tourEvents[j].EventName : '';\n}\n","import React, { useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Button, Grid, TextField } from '@material-ui/core';\nimport Search from '@material-ui/icons/Search';\nimport Moment from 'moment';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    justifyContent: \"center\",\n    marginBottom: '20px'\n  },\n  container: {\n    display: 'flex',\n    flexWrap: 'wrap',\n  },\n  textField: {\n    marginLeft: theme.spacing(1),\n    marginRight: theme.spacing(1),\n    width: 200,\n  },\n  searchBtn: {\n    marginTop: '8px',\n    marginLeft: '5px'\n  }\n}));\n\nconst DateSearch = props => {\n\n  const [state, setState] = React.useState({\n    textFieldValue: ''\n  });\n\n  const handleOnChange = (event) => {\n\n    if (event.target.value !== \"\") {\n\n      var date_regex = /^(19|20)\\d\\d([- /.])(0[1-9]|1[012])\\2(0[1-9]|[12][0-9]|3[01])$/;\n      if (!(date_regex.test(event.target.value))) {\n        return false;\n      }\n\n      setState({ ...state, textFieldValue: event.target.value })\n\n      props.SearchDates(event.target.value);\n    }\n  }\n\n  useEffect(() => {\n    setState({ ...state, textFieldValue: props.defaultDate });\n  }, [props.defaultDate]);\n\n  useEffect(() => {\n    //props.SearchDates(props.defaultDate);\n  }, []);\n\n  const classes = useStyles();\n  return (\n    <Grid container spacing={3} className={classes.root}>\n      <TextField\n        id=\"fromDate\"\n        label=\"Search\"\n        type=\"date\"\n        // defaultValue={props.defaultDate}\n        className={classes.textField}\n        value={state.textFieldValue}\n        onChange={handleOnChange}\n        InputLabelProps={{\n          shrink: true,\n        }}\n        inputProps={{\n          min: Moment(new Date()).format('YYYY-MM-DD')\n        }}\n      />\n\n    </Grid>\n  );\n}\n\nexport default DateSearch;\n","import Moment from 'moment';\nimport React, { useEffect } from 'react';\nimport { makeStyles } from '@material-ui/core/styles';\nimport { Grid, Button } from \"@material-ui/core\";\nimport ButtonGroup from '@material-ui/core/ButtonGroup';\nimport { useSelector, useDispatch } from 'react-redux';\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\nimport { genfunction } from '../../helpers';\nimport Card from '@material-ui/core/Card';\nimport CardHeader from '@material-ui/core/CardHeader';\nimport CardContent from '@material-ui/core/CardContent';\nimport CardActions from '@material-ui/core/CardActions';\nimport Typography from '@material-ui/core/Typography';\nimport { red } from '@material-ui/core/colors';\nimport palette from '../../theme/palette'\nimport ExtraItemDrawer from 'components/CalendarControls/ExtraItemDrawer';\nimport Drawer from '@material-ui/core/Drawer';\nimport { actionGetExtraItems, actionResetExtraItems } from 'actions';\nimport DateSearch from '../DateSearch/DateSearch';\nimport { actionResetDisplayAreas } from 'actions';\nimport { withRouter } from 'react-router';\nimport { actionShopCartSetManageMyBooking } from 'actions';\nimport { actionResetBooking } from 'actions';\nimport GroupReservationDrawer from './GroupReservationDrawer';\n\nconst { DefaultColor, DefaultCostRateID, SearchRecordInfo, CalendarScreenMessage1, CalendarScreenMessage2 } = window['runConfig'];\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    justifyContent: \"center\"\n  },\n  list: {\n    width: 400,\n    fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\n  },\n  list2: {\n    width: '100%',\n    fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\n  },\n  card: {\n    maxWidth: 350,\n    minWidth: 300,\n    margin: 10,\n  },\n  avatar: {\n    backgroundColor: red[500],\n  },\n  CardHeader: {\n    backgroundColor: palette.primary.light\n  },\n  actions: {\n    display: \"flex\",\n    justifyContent: \"center\",\n  },\n  pagination: {\n    display: \"flex\",\n    justifyContent: \"center\"\n  }\n}));\n\nconst CalendarListView = (props) => {\n\n  const classes = useStyles();\n  const dispatch = useDispatch();\n\n  const [state, setState] = React.useState({\n    right: false,\n    tourEventId: 0,\n    bookingTypeID: 0,\n    errorMsg: '',\n    pagedEvents: [],\n    navigatedToDate: null,\n    disablePreviousButton: true,\n    isContinueToExtraItemDrawer: false,\n    isContinueToGroupDrawer: false,\n    organizationID: \"\",\n    groupSize: \"\",\n    isEditEvent: false\n  });\n\n  let tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\n  const errExtraItem = useSelector(state => state.reducerExtraItems.extramItemsError);\n  const displayAreasState = useSelector(state => state.reducerDisplayAreas);\n  const bookingTypes = useSelector(state => state.reducerBookingTypes);\n  const shopcartreducer = useSelector(state => state.reducerShopCart);\n  const calendarNavState = useSelector(state => state.reducerCalendarView);\n  const reducerBooking = useSelector(state => state.reducerBooking);\n\n  useEffect(() => {\n\n    let propsEvent = props.location.event;\n    if (props.Path == \"/calendar/:id\") {\n\n      actionResetDisplayAreas(dispatch);\n      actionGetExtraItems(dispatch, props.urlID, true, false, null, true, null);\n\n    }\n    else {\n\n      if (displayAreasState.displayAreas !== undefined && displayAreasState.displayAreas.length > 0) {\n        let newDisplayAreas = JSON.parse(JSON.stringify(displayAreasState.displayAreas));\n        let newObj = { ...newDisplayAreas.filter(x => x.DisplayAreaNo == props.urlID)[0] };\n\n        propsEvent ?\n          actionGetExtraItems(dispatch, props.urlID, true, true, propsEvent.EventDate, true, null)\n          :\n          actionGetExtraItems(dispatch, props.urlID, true, true, newObj.NextTourDate, true, null);\n      }\n      else {\n\n        propsEvent ?\n          actionGetExtraItems(dispatch, props.urlID, true, true, propsEvent.EventDate, true, null)\n          :\n          actionGetExtraItems(dispatch, props.urlID, true, true, displayAreasState.displayArea.NextTourDate, true, null);\n      }\n    }\n  }, []);\n\n  useEffect(() => {\n\n    if (!state.isEditEvent) {\n\n      if (calendarNavState.viewType == \"ListView\") {\n        setState({ ...state, pagedEvents: tourEvents })\n      }\n    }\n\n  }, [tourEvents]);\n\n\n  useEffect(() => {\n    reloadEventForGroups(props.location.event);\n  }, [bookingTypes, tourEvents]);\n\n  const toggleDrawer = (side, open, event) => {\n\n    if (event && event.type === 'keydown' && (event.key === 'Tab' || event.key === 'Shift')) {\n      return;\n    }\n\n    if (state.errorMsg.length > 0) {\n      return;\n    }\n\n    if (event)\n      setState({ ...state, [side]: open, tourEventId: event.TourEventID, bookingTypeID: event.BookingTypeID });\n    else {\n\n      props.location.event = null;\n      setState({ ...state, [side]: open, tourEventId: 0, groupSize: \"\", organizationID: \"\", isContinueToExtraItemDrawer: false, isContinueToGroupDrawer: false, isEditEvent: false });\n    }\n  };\n\n  const checkIsReloadEvent = (event) => {\n\n    let reloadEvent = false;\n\n    if (genfunction.IsEditEvent(bookingTypes.bookingTypes, event)) {\n\n      if (shopcartreducer.events && shopcartreducer.events.length > 0 && shopcartreducer.events.find(x => x.TourEventID == event.TourEventID)) {\n        reloadEvent = true;\n        event = shopcartreducer.events.filter(x => x.TourEventID == event.TourEventID)[0];\n      }\n\n      reloadEvent ? reloadEventForGroups(event) : toggleDrawer('right', true, event);\n\n    }\n    else {\n      toggleDrawer('right', true, event);\n    }\n  }\n\n\n\n  const reloadEventForGroups = (event) => {\n\n    if (event && event.hasOwnProperty(\"TourEventID\")) {\n\n      setState({\n        ...state,\n        right: true,\n        tourEventId: event.TourEventID,\n        bookingTypeID: event.BookingTypeID,\n        selectedDate: new Date(event.EventDate),\n        groupSize: event.GroupSize,\n        organizationID: event.OrganizationID,\n        isContinueToGroupDrawer: event.OrganizationID !== \"\" ? true : false,\n        isEditEvent: true,\n        pagedEvents: calendarNavState.viewType == \"ListView\" ? tourEvents : \"\"\n      });\n    }\n\n  }\n\n  const setIsEditEvent = (value) => {\n    setState({\n      ...state, isEditEvent: value\n    });\n  }\n\n  const goToExtraItemOrGroupDrawer = (value) => {\n    setState({ ...state, isContinueToExtraItemDrawer: value, isContinueToGroupDrawer: !value });\n  }\n\n  const showGroupDrawer = () => {\n\n    const bType = bookingTypes.bookingTypes.filter(x => x.BookingTypeID == state.bookingTypeID)[0];\n\n    if (bType && !state.isContinueToExtraItemDrawer) {\n      if (bType.RequireCompanyName || bType.ShowTourProductsBasedOnGroupSize || state.isContinueToGroupDrawer)\n        return true;\n    }\n\n    return false\n  }\n\n  const onChangeOrganization = (value) => {\n\n    value ? setState({ ...state, organizationID: value.CustomerID }) : setState({ ...state, organizationID: \"\" })\n  }\n\n  const onChangeGroupSize = (value) => {\n\n    value ? setState({ ...state, groupSize: value.GroupSize }) : setState({ ...state, groupSize: \"\" })\n\n  }\n\n  const sideList = side => {\n\n    return (\n      < div className={window.matchMedia(\"(min-width: 600px)\").matches ? classes.list : classes.list2} role=\"presentation\" >\n\n        {showGroupDrawer() ?\n\n          <GroupReservationDrawer goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer}\n            ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\n            membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\n            isIDME={shopcartreducer.IDME.isIdMeApplied}\n            isIDMECostrate={shopcartreducer.IDME.idmecostrate}\n            organizationID={state.organizationID} groupSize={state.groupSize}\n            onChangeOrganization={onChangeOrganization}\n            onChangeGroupSize={onChangeGroupSize}\n            bookingtypeID={state.bookingTypeID} tourEventId={state.tourEventId} toggleDrawer={toggleDrawer}\n            isEditEvent={state.isEditEvent} toggleIsEdit={setIsEditEvent} isContinueToGroupDrawer={state.isContinueToGroupDrawer}\n          />\n          :\n          <ExtraItemDrawer tourEventId={state.tourEventId}\n            ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\n            membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\n            isIDME={shopcartreducer.IDME.isIdMeApplied}\n            isIDMECostrate={shopcartreducer.IDME.idmecostrate}\n            bookingtypeID={state.bookingTypeID} callCheckout={constredirect}\n            toggleDrawer={toggleDrawer} isEditEvent={state.isEditEvent}\n            groupSize={state.groupSize} organizationID={state.organizationID}\n            goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer} isContinueToExtraItemDrawer={state.isContinueToExtraItemDrawer}\n          />\n\n        }\n      </div >)\n  };\n\n  const constredirect = (products) => {\n    props.constredirect(products);\n  }\n\n  const errorcancelhandle = () => {\n    actionResetExtraItems(dispatch);\n    setState({ ...state, right: false, errorMsg: '' });\n  }\n\n  const onPageChange = (event, page) => {\n    var startIndex = (page - 1) * 7;\n    var endIndex = (startIndex + 7) > tourEvents.length ? (tourEvents.length) : (startIndex + 7)\n    setState({ ...state, pagedEvents: tourEvents.slice(startIndex, endIndex) })\n  }\n\n  const enableDisablePreviousButton = (startDate) => {\n    var today = Moment(new Date()).format('YYYY-MM-DD');\n    if (startDate <= today) {\n      return true;\n    }\n    else {\n      return false;\n    }\n  }\n\n  const GetSearchDays = () => {\n    if (displayAreasState && displayAreasState.isDisplay) {\n      return displayAreasState.displayArea ? displayAreasState.displayArea.ListViewSearchDays : 0;\n    }\n    else {\n      return bookingTypes.bookingType ? bookingTypes.bookingType.ListViewSearchDays : 0;\n    }\n  }\n\n  function GetFilterDates(startDate) {\n    var disable = enableDisablePreviousButton(startDate);\n    setState({ ...state, disablePreviousButton: disable });\n    props.onFilter(startDate);\n  }\n\n  const onNavigation = (startDate) => {\n    var disable = enableDisablePreviousButton(startDate);\n    setState({ ...state, navigatedToDate: startDate, disablePreviousButton: disable });\n    props.onFilter(startDate);\n  }\n\n  const GetDefaultCostRate = (PriceMatrix) => {\n    let pamtrix = undefined;\n    let costrate = DefaultCostRateID;\n\n    if (shopcartreducer.membershipValidation.ismembershipApplied) {\n      costrate = shopcartreducer.membershipValidation.membershipcostrate;\n    }\n\n    if (shopcartreducer.IDME.isIdMeApplied) {\n      costrate = shopcartreducer.IDME.idmecostrate;\n    }\n\n    if (PriceMatrix.length > 1) {\n      pamtrix = PriceMatrix.find(x => x.CostRateID == costrate);\n    }\n    else {\n      pamtrix = PriceMatrix && PriceMatrix.length > 0 ? PriceMatrix[0] : undefined;\n    }\n\n    return pamtrix;\n  }\n\n  const CheckShowAvailability = (availableSeats, bookingTypeID) => {\n\n    let bookingType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == bookingTypeID);\n\n    if (bookingType !== undefined && bookingType.ShowAvailability) {\n      return '(' + availableSeats + ' ' + bookingType.AvailabilityText + ')';\n    }\n\n    return '';\n  }\n\n  const WebDisplayName = (webName, bookingTypeID) => {\n\n    let bookingType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == bookingTypeID);\n\n    return bookingType ? webName : '';\n  }\n\n  const redirecttoconfirmbookingchanges = (event) => {\n\n    if (shopcartreducer.managemybooking && reducerBooking.booking[0]) {\n\n      if (reducerBooking.booking[0].TourEventID !== event.TourEventID) {\n        props.history.push({\n          pathname: '/confimbookingchanges',\n          eventID: event.TourEventID,\n          ismembershipapplied: shopcartreducer.membershipValidation.membershipcostrate,\n          membercostrate: shopcartreducer.membershipValidation.membershipcostrate,\n          bookingtypeID: event.BookingTypeID\n\n        })\n      }\n    }\n  }\n\n  const constredirecttofindmybpooking = () => {\n    actionResetBooking(dispatch);\n    actionShopCartSetManageMyBooking(dispatch, false, false);\n\n    props.history.push({\n      pathname: '/findmybooking'\n    })\n\n  }\n\n  const EventIsSaleAble = (event) => {\n    if (event && event.BookNowOption != 'Book Now') {\n      return true;\n    }\n\n    if (shopcartreducer.managemybooking && reducerBooking.booking[0]) {\n\n      if (reducerBooking.booking[0].TourEventID === event.TourEventID) {\n        return true;\n      }\n    }\n\n  }\n  return (\n    <div>\n\n      <Grid container className={classes.root + \" \" + classes.content}>\n\n        {<ErrorHandling msg={errExtraItem.length > 0 ? errExtraItem : state.errorMsg}\n          open={errExtraItem.length > 0 || state.errorMsg != \"\" ? true : false}\n          handleclose={errorcancelhandle} />}\n\n        {shopcartreducer.managemybooking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('AllowDateTimeChanges') && !reducerBooking.booking[0].AllowDateTimeChanges ?\n          <>\n            <Grid item align=\"center\" xs={12} ms={12} lg={12}>\n\n              <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\n                {reducerBooking.booking[0].hasOwnProperty('NoChangesMessage') ? reducerBooking.booking[0].NoChangesMessage : 'Date Time Changes are not allowed.'}\n              </Typography>\n              <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\n                style={{ padding: \"10px\" }}\n                onClick={() => constredirecttofindmybpooking()}>\n                Cancel Changes\n              </Button>\n            </Grid>\n          </>\n          :\n          <>\n            {state.pagedEvents !== undefined\n              && state.pagedEvents.length > 0\n              ?\n              <DateSearch SearchDates={GetFilterDates}\n                defaultDate={state.pagedEvents !== undefined\n                  && state.pagedEvents[0].hasOwnProperty(\"EventEndDateTime\") && state.navigatedToDate == null\n                  ?\n                  Moment(state.pagedEvents[0].EventEndDateTime).format('YYYY-MM-DD')\n                  : Moment(state.navigatedToDate).format('YYYY-MM-DD')} />\n              : null}\n\n            {shopcartreducer.managemybooking ?\n              <Grid item align=\"center\" xs={12} ms={12} lg={12}>\n\n                <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\n                  {CalendarScreenMessage1} {Moment(reducerBooking.booking[0].EventStartDateTime).format('dddd,MMMM D')} at  {Moment(reducerBooking.booking[0].EventStartDateTime).format('LT')} {CalendarScreenMessage2}\n                </Typography>\n                <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\n                  style={{ padding: \"10px\" }}\n                  onClick={() => constredirecttofindmybpooking()}>\n                  Cancel Changes\n                </Button>\n              </Grid> : null}\n\n\n            {state.pagedEvents !== undefined &&\n              state.pagedEvents.length > 0\n              && state.pagedEvents[0].hasOwnProperty(\"EventEndDateTime\") ?\n\n              state.pagedEvents.map((e, i) => {\n\n                if (e.BookNowOption === \"Past Event\" || e.BookNowOption === \"Cancelled\") {\n                  return null;\n                }\n\n                else if (e.TourDisplayDays && e.TourDisplayDays > 0) {\n                  let lastdisplaydate = new Date(e.CurrentDateTimeAtLocation);\n                  lastdisplaydate.setDate(lastdisplaydate.getDate() + e.TourDisplayDays);\n                  if (new Date(e.EventStartDateTime) > lastdisplaydate)\n                    return null;\n                }\n\n                return e.BookNowOption !== \"Past Event\" && e.BookNowOption !== \"Cancelled\" ?\n\n                  <Card className={classes.card} key={e.TourEventID}>\n                    <CardHeader style={{ backgroundColor: e.DisplayColor !== undefined && e.DisplayColor.length > 0 ? e.DisplayColor : DefaultColor }}\n                      title={\n                        <Typography variant=\"h5\" color=\"textPrimary\"\n                          component=\"p\">{Moment(e.EventStartDateTime).format('MMMM DD, YYYY')}</Typography>\n\n                      }\n                      subheader={\n                        <Typography variant=\"subtitle1\" color=\"textSecondary\"\n                          component=\"p\">{Moment(e.EventStartDateTime).format('dddd hh:mm a') + ' - ' + Moment(e.EventEndDateTime).format('hh:mm a')}</Typography>\n                      }\n                    />\n                    <CardContent>\n                      <Typography variant=\"h4\" color=\"textSecondary\" component=\"p\">\n                        {WebDisplayName(e.EventName, e.BookingTypeID)}\n                      </Typography>\n\n                      {e.TourProducts && e.TourProducts.length > 0 && e.TourProducts.map(product =>\n                        <Typography variant=\"body2\" color=\"textSecondary\" component=\"p\" key={product.TourProductID}>\n\n                          {product.ShowOnCalendar && product.AffectsCapacity && product.hasOwnProperty('PriceMatrix') && product.PriceMatrix !== undefined && GetDefaultCostRate(product.PriceMatrix) !== undefined ?\n                            '    ' + product.TourProductName + ' '\n                            + genfunction.ccyFormat(GetDefaultCostRate(product.PriceMatrix).Price)\n                            : null}\n\n                        </Typography>\n                      )}\n\n                      {e.TourProducts && e.TourProducts.length > 0 && e.TourProducts.map(product =>\n                        <Typography variant=\"body2\" color=\"textSecondary\" component=\"p\" key={product.TourProductID}>\n\n                          {product.ShowOnCalendar && product.AffectsCapacity == false && product.hasOwnProperty('PriceMatrix') && product.PriceMatrix !== undefined && GetDefaultCostRate(product.PriceMatrix) !== undefined ?\n                            '    ' + product.TourProductName + ' '\n                            + genfunction.ccyFormat(GetDefaultCostRate(product.PriceMatrix).Price)\n                            : null}\n\n                        </Typography>\n                      )}\n\n                      {e.BookNowOption === 'Book Now' ?\n                        <Typography variant=\"h5\" color=\"textSecondary\" component=\"p\">\n                          {CheckShowAvailability(e.SeatsAvailable, e.BookingTypeID)}\n                        </Typography>\n                        : null}\n                    </CardContent>\n\n                    <CardActions className={classes.actions}>\n                      <Button variant=\"contained\" color=\"primary\" onClick={() => shopcartreducer.managemybooking ? redirecttoconfirmbookingchanges(e) :\n                        checkIsReloadEvent(e, 'right', true)} disabled={EventIsSaleAble(e)} >{e.BookNowOption}</Button>\n                    </CardActions>\n                  </Card>\n                  : null\n              })\n\n              :\n              <Typography variant=\"h5\" color=\"textSecondary\" component=\"p\">\n                {SearchRecordInfo}\n              </Typography>\n            }\n\n            <div>\n              <Drawer anchor=\"right\" open={state.right} onClose={() => toggleDrawer('right', false)}>\n                {sideList('right')}\n              </Drawer>\n            </div>\n            <Grid item xs={12} ></Grid>\n            <ButtonGroup variant=\"outlined\" color=\"primary\" aria-label=\"text primary button group\">\n              {state.disablePreviousButton == true ?\n                <Button style={{ width: 100 }} onClick={() => onNavigation(genfunction.RemoveSevenDays(tourEvents, GetSearchDays(), document.getElementById(\"fromDate\").value))} disabled>Previous</Button> :\n                <Button style={{ width: 100 }} onClick={() => onNavigation(genfunction.RemoveSevenDays(tourEvents, GetSearchDays(), document.getElementById(\"fromDate\").value))}>Previous</Button>}\n\n              {state.pagedEvents !== undefined &&\n                state.pagedEvents.length > 0\n                && state.pagedEvents[0].hasOwnProperty(\"EventEndDateTime\") ?\n                <Button style={{ width: 100 }} onClick={() => onNavigation(genfunction.AddNextSevenDays(tourEvents))}>Next</Button>\n                : <Button style={{ width: 100 }} onClick={() => onNavigation(genfunction.AddNextSevenDays(tourEvents))} disabled>Next</Button>}\n            </ButtonGroup>\n          </>}\n      </Grid>\n    </div >\n  );\n}\nexport default withRouter(CalendarListView);\n","import Moment from 'moment';\r\nimport React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Grid, Button, FormControl, InputLabel, Select, MenuItem, Hidden } from \"@material-ui/core\";\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport { genfunction } from '../../helpers';\r\nimport Card from '@material-ui/core/Card';\r\nimport CardHeader from '@material-ui/core/CardHeader';\r\nimport CardContent from '@material-ui/core/CardContent';\r\nimport CardActions from '@material-ui/core/CardActions';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport ExtraItemDrawer from 'components/CalendarControls/ExtraItemDrawer';\r\nimport Drawer from '@material-ui/core/Drawer';\r\nimport { actionGetExtraItems, actionResetExtraItems } from 'actions';\r\nimport { withRouter } from 'react-router';\r\nimport { actionShopCartSetManageMyBooking } from 'actions';\r\nimport { actionResetBooking } from 'actions';\r\nimport * as underscore from 'underscore'\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport AdapterDateFns from '@mui/lab/AdapterDateFns';\r\nimport LocalizationProvider from '@mui/lab/LocalizationProvider';\r\nimport StaticDatePicker from '@mui/lab/StaticDatePicker';\r\nimport TextField from '@mui/material/TextField';\r\nimport Badge from '@mui/material/Badge';\r\nimport PickersDay from '@mui/lab/PickersDay';\r\nimport GroupReservationDrawer from './GroupReservationDrawer';\r\n\r\nconst { DefaultCostRateID, CalendarScreenMessage1, CalendarScreenMessage2, HybridViewDefaultLargeImage, HybridViewDefaultSmallImage, Currency, NoEventMessage } = window['runConfig'];\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        justifyContent: \"center\"\r\n    },\r\n    list: {\r\n        width: 400,\r\n        fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\r\n    }\r\n    ,\r\n    list2: {\r\n        width: '100%',\r\n        fontFamily: '\"Roboto\", \"Helvetica\", \"Arial\", \"sans-serif\"'\r\n    },\r\n    image: {\r\n        width: \"100%\",\r\n        objectFit: \"cover\",\r\n        objectPosition: \"center\"\r\n    },\r\n    CardHeader: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    TimeSlotSelect: {\r\n        marginLeft: 8,\r\n        marginRight: 8\r\n    },\r\n    badgeDot: {\r\n        [theme.breakpoints.up('md')]: {\r\n            right: \"25% !important\"\r\n        }\r\n    },\r\n    staticcal: {\r\n        width: \"100% !important\",\r\n    },\r\n    hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    visible: {\r\n        visibility: \"visible\"\r\n    },\r\n    '@global': {\r\n        '.MuiPickerStaticWrapper-root': {\r\n            width: \"100% !important\",\r\n            minWidth: \"100% !important\"\r\n        },\r\n        '.css-epd502': {\r\n            width: \"100% !important\"\r\n        },\r\n        '.MuiCalendarPicker-root': {\r\n            width: \"100% !important\"\r\n        },\r\n        '.css-1n2mv2k': {\r\n            display: \"flex  !important\",\r\n            flexDirection: \"row  !important\"\r\n        },\r\n        '.css-mvmu1r': {\r\n            paddingTop: \"5px !important\",\r\n            // paddingBottom: \"5px !important\",\r\n            display: \"flex  !important\",\r\n            flexDirection: \"row  !important\"\r\n        },\r\n        '.css-1n2mv2k span': {\r\n            flexGrow: \"1  !important\",\r\n            width: \"auto  !important\",\r\n            [theme.breakpoints.up('md')]: {\r\n                fontSize: \"1.2rem !important\"\r\n            }\r\n        },\r\n        '.Badge_Price': {\r\n            flexGrow: \"1  !important\",\r\n            justifyContent: \"center !important\"\r\n        },\r\n        '.MuiPickersDay-root': {\r\n            [theme.breakpoints.up('md')]: {\r\n                fontSize: \"1.2rem !important\"\r\n            }\r\n        },\r\n        '.MuiPickersDay-dayOutsideMonth': {\r\n            [theme.breakpoints.down('xs')]: {\r\n                width: \"20px !important\",\r\n            }\r\n        },\r\n        '.MuiPickersDay-dayWithMargin': {\r\n            [theme.breakpoints.down('xs')]: {\r\n                width: \"20px !important\",\r\n            }\r\n        }\r\n    }\r\n}));\r\n\r\nconst CalendarHybridView = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const [state, setState] = React.useState({\r\n        right: false,\r\n        tourEventId: 0,\r\n        bookingTypeID: 0,\r\n        errorMsg: '',\r\n        TourEventTimeSlot: [],\r\n        selectedDate: undefined,\r\n        isContinueToExtraItemDrawer: false,\r\n        isContinueToGroupDrawer: false,\r\n        organizationID: \"\",\r\n        groupSize: \"\",\r\n        isEditEvent: false\r\n    });\r\n\r\n    let tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\r\n    const errExtraItem = useSelector(state => state.reducerExtraItems.extramItemsError);\r\n    const displayAreasState = useSelector(state => state.reducerDisplayAreas);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n\r\n    useEffect(() => {\r\n\r\n        let propsEvent = props.location.event;\r\n        if (props.Path == \"/calendar/:id\") {\r\n\r\n            propsEvent && Moment(propsEvent.EventDate).format('YYYY-MM') !== Moment(bookingTypes.bookingType.NextTourDate).format('YYYY-MM') ?\r\n                actionGetExtraItems(dispatch, props.urlID, false, false, propsEvent.EventDate, false, null)\r\n                :\r\n                actionGetExtraItems(dispatch, props.urlID, true, false, bookingTypes.bookingType.NextTourDate, false, null);\r\n\r\n        }\r\n        else {\r\n\r\n            if (displayAreasState.displayAreas !== undefined && displayAreasState.displayAreas.length > 0) {\r\n                let displayarea = displayAreasState.displayAreas.find(x => x.DisplayAreaNo == props.urlID);\r\n\r\n                propsEvent && Moment(propsEvent.EventDate).format('YYYY-MM') !== Moment(displayarea.NextTourDate).format('YYYY-MM') ?\r\n                    actionGetExtraItems(dispatch, props.urlID, false, true, propsEvent.EventDate, false, null)\r\n                    :\r\n                    actionGetExtraItems(dispatch, props.urlID, true, true, displayarea.NextTourDate, false, null);\r\n            }\r\n            else {\r\n\r\n                propsEvent && Moment(propsEvent.EventDate).format('YYYY-MM') !== Moment(displayAreasState.displayArea.NextTourDate).format('YYYY-MM') ?\r\n                    actionGetExtraItems(dispatch, props.urlID, false, true, propsEvent.EventDate, false, null)\r\n                    :\r\n                    actionGetExtraItems(dispatch, props.urlID, true, true, displayAreasState.displayArea.NextTourDate, false, null);\r\n            }\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (state.selectedDate && tourEvents && tourEvents.length > 0) {\r\n            let BookingInfoFilter = underscore.filter(tourEvents, (item) => {\r\n                return item.BookNowOption !== \"Past Event\" && item.BookNowOption !== \"Cancelled\"\r\n                    && item.BookingInfo && item.BookingInfo.length > 0\r\n                    && item.EventDate == Moment(state.selectedDate).format('YYYY-MM-DD')\r\n            });\r\n\r\n            let BookingInfoGroup = underscore.groupBy(BookingInfoFilter, (tourEvent) => { return tourEvent.BookingInfo });\r\n\r\n            if (BookingInfoGroup && Object.keys(BookingInfoGroup).length == 1 && BookingInfoGroup[Object.keys(BookingInfoGroup)[0]].length > 0) {\r\n                setState({ ...state, TourEventTimeSlot: BookingInfoFilter });\r\n            }\r\n\r\n\r\n        }\r\n\r\n    }, [state.selectedDate, tourEvents]);\r\n\r\n    useEffect(() => {\r\n        getFirstEventDate();\r\n    }, [bookingTypes, tourEvents]);\r\n\r\n    const hideSelectButtonOnSingleBooking = () => {\r\n        if (state.selectedDate && tourEvents && tourEvents.length > 0) {\r\n            let BookingInfoFilter = underscore.filter(tourEvents, (item) => {\r\n                return item.BookNowOption !== \"Past Event\" && item.BookNowOption !== \"Cancelled\"\r\n                    && item.BookingInfo && item.BookingInfo.length > 0\r\n                    && item.EventDate == Moment(state.selectedDate).format('YYYY-MM-DD')\r\n            });\r\n\r\n            let BookingInfoGroup = underscore.groupBy(BookingInfoFilter, (tourEvent) => { return tourEvent.BookingInfo });\r\n\r\n            if (BookingInfoGroup && Object.keys(BookingInfoGroup).length == 1)\r\n                return true;\r\n        }\r\n\r\n    }\r\n\r\n    const toggleDrawer = (side, open, event) => {\r\n        if (event)\r\n            setState({ ...state, [side]: open, tourEventId: event.TourEventID, bookingTypeID: event.BookingTypeID });\r\n        else {\r\n\r\n            props.location.event = null;\r\n            setState({ ...state, [side]: open, tourEventId: 0, groupSize: \"\", organizationID: \"\", isContinueToExtraItemDrawer: false, isContinueToGroupDrawer: false, isEditEvent: false });\r\n        }\r\n    };\r\n\r\n    const checkIsReloadEvent = (event) => {\r\n\r\n        let reloadEvent = false;\r\n\r\n        if (genfunction.IsEditEvent(bookingTypes.bookingTypes, event)) {\r\n\r\n            if (shopcartreducer.events && shopcartreducer.events.length > 0 && shopcartreducer.events.find(x => x.TourEventID == event.TourEventID)) {\r\n                reloadEvent = true;\r\n                event = shopcartreducer.events.filter(x => x.TourEventID == event.TourEventID)[0];\r\n            }\r\n\r\n            reloadEvent ? reloadEventForGroups(event) : toggleDrawer('right', true, event);\r\n\r\n        }\r\n        else {\r\n            toggleDrawer('right', true, event);\r\n        }\r\n    }\r\n\r\n    const reloadEventForGroups = (event) => {\r\n\r\n        if (event && event.hasOwnProperty(\"TourEventID\")) {\r\n\r\n            setState({\r\n                ...state,\r\n                right: true,\r\n                tourEventId: event.TourEventID,\r\n                bookingTypeID: event.BookingTypeID,\r\n                selectedDate: new Date(event.EventDate),\r\n                groupSize: event.GroupSize,\r\n                organizationID: event.OrganizationID,\r\n                isContinueToGroupDrawer: event.OrganizationID !== \"\" ? true : false,\r\n                isEditEvent: true\r\n            });\r\n        }\r\n\r\n    }\r\n\r\n    const setIsEditEvent = (value) => {\r\n        setState({\r\n            ...state, isEditEvent: value\r\n        });\r\n    }\r\n\r\n    const goToExtraItemOrGroupDrawer = (value) => {\r\n        setState({ ...state, isContinueToExtraItemDrawer: value, isContinueToGroupDrawer: !value });\r\n    }\r\n\r\n    const showGroupDrawer = () => {\r\n\r\n        const bType = bookingTypes.bookingTypes.filter(x => x.BookingTypeID == state.bookingTypeID)[0];\r\n\r\n        if (bType && !state.isContinueToExtraItemDrawer) {\r\n            if (bType.RequireCompanyName || bType.ShowTourProductsBasedOnGroupSize || state.isContinueToGroupDrawer)\r\n                return true;\r\n        }\r\n\r\n        return false\r\n    }\r\n    const onChangeOrganization = (value) => {\r\n\r\n        value ? setState({ ...state, organizationID: value.CustomerID }) : setState({ ...state, organizationID: \"\" })\r\n    }\r\n\r\n    const onChangeGroupSize = (value) => {\r\n\r\n        value ? setState({ ...state, groupSize: value.GroupSize }) : setState({ ...state, groupSize: \"\" })\r\n\r\n    }\r\n\r\n    const sideList = side => {\r\n\r\n        return (\r\n            < div className={window.matchMedia(\"(min-width: 600px)\").matches ? classes.list : classes.list2} role=\"presentation\" >\r\n\r\n                {showGroupDrawer() ?\r\n\r\n                    <GroupReservationDrawer goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer}\r\n                        ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\r\n                        membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\r\n                        isIDME={shopcartreducer.IDME.isIdMeApplied}\r\n                        isIDMECostrate={shopcartreducer.IDME.idmecostrate}\r\n                        organizationID={state.organizationID} groupSize={state.groupSize}\r\n                        onChangeOrganization={onChangeOrganization}\r\n                        onChangeGroupSize={onChangeGroupSize}\r\n                        bookingtypeID={state.bookingTypeID} tourEventId={state.tourEventId} toggleDrawer={toggleDrawer}\r\n                        isEditEvent={state.isEditEvent} toggleIsEdit={setIsEditEvent} isContinueToGroupDrawer={state.isContinueToGroupDrawer}\r\n                    />\r\n                    :\r\n                    <ExtraItemDrawer tourEventId={state.tourEventId}\r\n                        ismembershipapplied={shopcartreducer.membershipValidation.ismembershipApplied}\r\n                        membercostrate={shopcartreducer.membershipValidation.membershipcostrate}\r\n                        isIDME={shopcartreducer.IDME.isIdMeApplied}\r\n                        isIDMECostrate={shopcartreducer.IDME.idmecostrate}\r\n                        bookingtypeID={state.bookingTypeID} callCheckout={constredirect}\r\n                        toggleDrawer={toggleDrawer} isEditEvent={state.isEditEvent}\r\n                        groupSize={state.groupSize} organizationID={state.organizationID}\r\n                        goToExtraItemOrGroupDrawer={goToExtraItemOrGroupDrawer} isContinueToExtraItemDrawer={state.isContinueToExtraItemDrawer}\r\n                    />\r\n\r\n                }\r\n            </div >)\r\n    };\r\n\r\n    const constredirect = (products) => {\r\n        setState({ ...state, selectedDate: undefined });\r\n        props.constredirect(products);\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetExtraItems(dispatch);\r\n        setState({ ...state, right: false, errorMsg: '' });\r\n    }\r\n\r\n    const GetBookingInfoLargeImageURL = () => {\r\n        if (props.Path == \"/calendar/:id\") {\r\n            return bookingTypes.bookingType ? genfunction.replaceEscapeCharacters(bookingTypes.bookingType.LargeImageURL) : \"\";\r\n        }\r\n        else if (props.Path == \"/calendar/Area/:id\") {\r\n            return displayAreasState.displayArea ? genfunction.replaceEscapeCharacters(displayAreasState.displayArea.LargeImageURL) : \"\";\r\n        }\r\n        return \"\";\r\n    }\r\n\r\n    const GetBookingInfoBookingInfoDetails = () => {\r\n        if (props.Path == \"/calendar/:id\") {\r\n            let bookingInfoDetails = '';\r\n\r\n            if (bookingTypes.bookingTypes && bookingTypes.bookingTypes.length > 0 && bookingTypes.bookingTypes.filter(x => x.BookingTypeID === parseInt(props.urlID).length > 0)) {\r\n                return bookingInfoDetails = bookingTypes.bookingTypes.filter(x => x.BookingTypeID === parseInt(props.urlID))[0].BookingInfoDetails;\r\n            }\r\n        }\r\n        else if (props.Path == \"/calendar/Area/:id\") {\r\n            return displayAreasState.displayArea ? displayAreasState.displayArea.BookingInfoDetails : \" \";\r\n        }\r\n        return \"\";\r\n    }\r\n\r\n    const GetTourEventsGroup = () => {\r\n\r\n        let BookingInfoFilter = underscore.filter(tourEvents, (item) => {\r\n            return item.BookNowOption !== \"Past Event\" && item.BookNowOption !== \"Cancelled\"\r\n                && item.BookingInfo && item.BookingInfo.length > 0\r\n                && item.EventDate == Moment(state.selectedDate).format('YYYY-MM-DD')\r\n        });\r\n\r\n        let BookingInfoGroup = underscore.groupBy(BookingInfoFilter, (tourEvent) => { return tourEvent.BookingInfo });\r\n        return BookingInfoGroup;\r\n    }\r\n\r\n    const GetFilterDates = (date) => {\r\n        actionGetExtraItems(dispatch, props.urlID, true, displayAreasState.isDisplay ? true : false, date);\r\n    }\r\n\r\n    const GetDefaultCostRate = (PriceMatrix) => {\r\n        let pamtrix = undefined;\r\n        let costrate = shopcartreducer.ismembershipApplied ? shopcartreducer.membershipcostrate : DefaultCostRateID;\r\n\r\n        if (PriceMatrix.length > 1) {\r\n            pamtrix = PriceMatrix.find(x => x.CostRateID == costrate);\r\n        }\r\n        else {\r\n            pamtrix = PriceMatrix && PriceMatrix.length > 0 ? PriceMatrix[0] : undefined;\r\n        }\r\n\r\n        return pamtrix;\r\n    }\r\n\r\n    const redirecttoconfirmbookingchanges = (event) => {\r\n\r\n        if (shopcartreducer.managemybooking && reducerBooking.booking[0]) {\r\n\r\n            if (reducerBooking.booking[0].TourEventID !== event.TourEventID) {\r\n                props.history.push({\r\n                    pathname: '/confimbookingchanges',\r\n                    eventID: event.TourEventID,\r\n                    ismembershipapplied: shopcartreducer.membershipValidation.membershipcostrate,\r\n                    membercostrate: shopcartreducer.membershipValidation.membershipcostrate,\r\n                    bookingtypeID: event.BookingTypeID\r\n\r\n                })\r\n            }\r\n        }\r\n    }\r\n\r\n    const constredirecttofindmybpooking = () => {\r\n        actionResetBooking(dispatch);\r\n        actionShopCartSetManageMyBooking(dispatch, false, false);\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n\r\n    }\r\n\r\n    const GetBookingInfoText = (BookingInfoText) => {\r\n        return BookingInfoText;\r\n    }\r\n\r\n    const BookingInfoClickHandler = (BookingInfo) => {\r\n\r\n        let BookingInfoFilter = underscore.filter(tourEvents, (item) => {\r\n            return item.BookingInfo == BookingInfo\r\n                && item.BookNowOption !== \"Past Event\" && item.BookNowOption !== \"Cancelled\"\r\n                && item.EventDate == Moment(state.selectedDate).format('YYYY-MM-DD')\r\n        });\r\n\r\n        // if (BookingInfoFilter && BookingInfoFilter.length == 1) {\r\n        //     if (shopcartreducer.managemybooking)\r\n        //         redirecttoconfirmbookingchanges(getTourEvent(BookingInfoFilter[0].TourEventID))\r\n        //     else\r\n        //         toggleDrawer('right', true, getTourEvent(BookingInfoFilter[0].TourEventID))\r\n        // }\r\n        // else\r\n        setState({ ...state, TourEventTimeSlot: BookingInfoFilter });\r\n    }\r\n\r\n    const StartAndEndTime = (tourEvent, bookingTypeID) => {\r\n        let time = \"\";\r\n        let bookType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == bookingTypeID);\r\n\r\n        if (bookType) {\r\n            if (bookType.ShowStartTime) {\r\n                time += Moment(tourEvent.EventStartDateTime).format('hh:mm a');\r\n            }\r\n\r\n            if (bookType.ShowEndTime && !bookType.ShowStartTime) {\r\n                time += Moment(tourEvent.EventEndDateTime).format('hh:mm a')\r\n            }\r\n\r\n            if (bookType.ShowEndTime && bookType.ShowStartTime) {\r\n                time += ' - ' + Moment(tourEvent.EventEndDateTime).format('hh:mm a')\r\n            }\r\n\r\n            time += ' ';\r\n        }\r\n        return time;\r\n    }\r\n\r\n    const GetWebDisplayName = (tourEvent, bookingTypeID) => {\r\n        let bookType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == bookingTypeID);\r\n        return bookType ? tourEvent.EventName : '';\r\n    }\r\n\r\n    const GetAvailabilityText = (tourEvent, bookingTypeID) => {\r\n        let bookType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == bookingTypeID);\r\n\r\n      if (tourEvent.BookNowOption === 'Book Now' && bookType != undefined && bookType.ShowAvailability)\r\n            return ' (' + tourEvent.SeatsAvailable + ' ' + bookType.AvailabilityText + ')';\r\n        else\r\n            return ' (' + tourEvent.BookNowOption + ')';\r\n    }\r\n\r\n    const IsEventAvailableToSale = (event) => {\r\n        if (event.BookNowOption != 'Book Now') {\r\n            return false;\r\n        }\r\n        else return true;\r\n    }\r\n\r\n    const showTourList = (BookingInfo) => {\r\n        if (state.TourEventTimeSlot == undefined || state.TourEventTimeSlot.length == 0)\r\n            return false;\r\n        else\r\n            return state.TourEventTimeSlot.find(item => item.BookingInfo == BookingInfo);\r\n    }\r\n\r\n    const getTourEvent = (TourEventID) => {\r\n        return tourEvents.find(x => x.TourEventID == TourEventID);\r\n    }\r\n\r\n    const getFirstEventDate = () => {\r\n        if (state.selectedDate == undefined) {\r\n            if (props.match.path == \"/calendar/:id\" && bookingTypes && bookingTypes.bookingTypes && bookingTypes.bookingTypes.length > 0) {\r\n                let bookingType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == props.urlID && x.NextTourDate && x.NextTourDate.length > 0);\r\n                if (bookingType) {\r\n                    setState({ ...state, selectedDate: new Date(Moment(bookingType.NextTourDate)) });\r\n                }\r\n                else {\r\n                    setState({ ...state, selectedDate: new Date(Moment()) });\r\n                }\r\n            }\r\n            else if (props.match.path == \"/calendar/Area/:id\") {\r\n                let btypes = bookingTypes.bookingTypes.filter(x => x.NextTourDate && x.NextTourDate.length > 0);\r\n                if (btypes && btypes.length > 0) {\r\n                    setState({ ...state, selectedDate: new Date(Moment(btypes.NextTourDate)) });\r\n                }\r\n                else if (tourEvents && tourEvents != \"nocontent\") {\r\n                    let tourevent = tourEvents.find(event => { return event.BookingInfo && event.BookingInfo.length > 0 && event.BookNowOption !== \"Past Event\" && event.BookNowOption !== \"Cancelled\" });\r\n                    if (tourevent)\r\n                        setState({ ...state, selectedDate: new Date(Moment(tourevent.EventDate)) });\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (tourEvents && tourEvents != \"nocontent\" && tourEvents.length > 0) {\r\n                let tourevent = tourEvents.find(event => {\r\n                    return event.EventDate >= Moment(new Date()).format('YYYY-MM-DD') && event.BookNowOption !== \"Past Event\" && event.BookNowOption !== \"Cancelled\"\r\n\r\n                });\r\n\r\n                if (tourevent)\r\n                    setState({ ...state, selectedDate: new Date(Moment(tourevent.EventDate)), TourEventTimeSlot: [] });\r\n                else {\r\n                    setState({ ...state, selectedDate: new Date() });\r\n                }\r\n            }\r\n        }\r\n\r\n        reloadEventForGroups(props.location.event);\r\n\r\n    }\r\n\r\n    const hasEvent = (date) => {\r\n        if (tourEvents && tourEvents != \"nocontent\" && tourEvents.length > 0 && date) {\r\n            let tourevent = tourEvents.find(event => { return event.BookingInfo && event.BookingInfo.length > 0 && event.BookNowOption !== \"Past Event\" && event.BookNowOption !== \"Cancelled\" && event.EventDate == Moment(date).format('YYYY-MM-DD') });\r\n            return tourevent;\r\n        }\r\n    }\r\n\r\n    const getEventPrice = (date) => {\r\n        if (tourEvents && tourEvents != \"nocontent\") {\r\n            let tourevent = tourEvents.find(event => { return event.BookingInfo && event.BookingInfo.length > 0 && event.BookNowOption !== \"Past Event\" && event.BookNowOption !== \"Cancelled\" && event.EventDate == Moment(date).format('YYYY-MM-DD') });\r\n            if (tourevent && tourevent.TourProducts && tourevent.TourProducts.length > 0) {\r\n                let product = tourevent.TourProducts.find(x => x.ShowOnCalendar && x.AffectsCapacity && x.PriceMatrix);\r\n                if (product) {\r\n                    let PriceMatrix = GetDefaultCostRate(product.PriceMatrix);\r\n                    if (PriceMatrix) {\r\n                        return Currency + PriceMatrix.Price\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        return undefined;\r\n    }\r\n\r\n    const hasMultipleBookingType = () => {\r\n        let BookingTypeGroup = underscore.groupBy(bookingTypes.bookingTypes, (bookingType) => { return bookingType.BookingTypeID });\r\n        if (BookingTypeGroup && Object.keys(BookingTypeGroup).length > 1)\r\n            return true;\r\n        else\r\n            return false;\r\n    }\r\n\r\n    const StaticCalenderView = () => {\r\n        return (<Card className={classes.card}>\r\n            <CardContent>\r\n                <LocalizationProvider dateAdapter={AdapterDateFns}>\r\n                    <StaticDatePicker\r\n                        displayStaticWrapperAs=\"desktop\"\r\n                        disablePast={true}\r\n                        views={['day']}\r\n                        openTo=\"day\"\r\n                        value={state.selectedDate}\r\n                        showDaysOutsideCurrentMonth={false}\r\n                        onChange={(newValue) => {\r\n                            setState({ ...state, selectedDate: newValue, TourEventTimeSlot: [], isEditEvent: false });\r\n\r\n                        }}\r\n\r\n                        onMonthChange={(day) => {\r\n                            //setState({ ...state, selectedDate: day, TourEventTimeSlot: [] });\r\n                            setState({ ...state, selectedDate: new Date(Moment(day)), TourEventTimeSlot: [], isEditEvent: false });\r\n                            if (tourEvents.length == 0 || Moment(state.selectedDate).format('YYYY-MM') !== Moment(day).format('YYYY-MM')) {\r\n                                let newdate = Moment(day).format('YYYY-MM-DD');\r\n                                GetFilterDates(newdate);\r\n                            }\r\n                        }}\r\n                        renderDay={(day, _value, DayComponentProps) => {\r\n\r\n                            const isSelected = hasEvent(day);\r\n\r\n                            return (\r\n                                <Badge key={day.toString()}\r\n                                    badgeContent={getEventPrice(day)} color=\"success\"\r\n                                    variant={hasMultipleBookingType() ? \"dot\" : \"standard\"}\r\n                                    overlap=\"circular\" invisible={!isSelected}\r\n                                    anchorOrigin={{\r\n                                        vertical: 'bottom',\r\n                                        horizontal: 'right'\r\n                                    }}\r\n                                    className={\"Badge_Price\"}\r\n                                    classes={{ anchorOriginBottomRight: classes.badgeDot }}\r\n                                >\r\n                                    <PickersDay {...DayComponentProps} />\r\n                                </Badge>\r\n                            );\r\n                        }}\r\n                        renderInput={(params) => <TextField {...params} />}\r\n                    />\r\n                </LocalizationProvider>\r\n            </CardContent>\r\n        </Card>)\r\n    }\r\n\r\n    return (\r\n        <Grid className={classes.root} container spacing={2}>\r\n\r\n            <ErrorHandling msg={errExtraItem.length > 0 ? errExtraItem : state.errorMsg}\r\n                open={errExtraItem.length > 0 || state.errorMsg != \"\" ? true : false}\r\n                handleclose={errorcancelhandle} />\r\n\r\n            {shopcartreducer.managemybooking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('AllowDateTimeChanges') && !reducerBooking.booking[0].AllowDateTimeChanges ?\r\n                <>\r\n                    <Grid item align=\"center\" xs={12} ms={12} lg={12}>\r\n\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\r\n                            {reducerBooking.booking[0].hasOwnProperty('NoChangesMessage') ? reducerBooking.booking[0].NoChangesMessage : 'Date Time Changes are not allowed.'}\r\n                        </Typography>\r\n                        <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\r\n                            style={{ padding: \"10px\" }}\r\n                            onClick={() => constredirecttofindmybpooking()}>\r\n                            Cancel Changes\r\n                        </Button>\r\n                    </Grid>\r\n                </>\r\n                :\r\n                <>\r\n                    {shopcartreducer.managemybooking ?\r\n                        <Grid item align=\"center\" xs={12} ms={12} lg={12}>\r\n\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }} >\r\n                                {CalendarScreenMessage1} {Moment(reducerBooking.booking[0].EventStartDateTime).format('dddd,MMMM D')} at  {Moment(reducerBooking.booking[0].EventStartDateTime).format('LT')} {CalendarScreenMessage2}\r\n                            </Typography>\r\n                            <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\r\n                                style={{ padding: \"10px\" }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n                        </Grid> : null}\r\n\r\n                    <Grid item xs={12} md={4}>\r\n                        <img className={classes.image} alt=\"LargeImage\" src={GetBookingInfoLargeImageURL() != \"\" ? GetBookingInfoLargeImageURL() : genfunction.replaceEscapeCharacters(HybridViewDefaultLargeImage)} />\r\n                    </Grid>\r\n                    <Hidden mdUp>\r\n                        <Grid item xs={12}>\r\n                            <StaticCalenderView></StaticCalenderView>\r\n                        </Grid>\r\n                    </Hidden >\r\n\r\n                    <Grid item xs={12} md={4}>\r\n                        <Grid container spacing={1}>\r\n                            {hasEvent(state.selectedDate) ?\r\n                                underscore.map(GetTourEventsGroup(), (items, key) => {\r\n                                    return (\r\n                                        <Grid item key={key} xs={12}>\r\n                                            <Grid item xs={12}>\r\n                                                <Card className={classes.card}>\r\n                                                    <CardHeader className={classes.CardHeader}\r\n                                                        title={items[0].BookingInfo}\r\n                                                        titleTypographyProps={{ color: \"inherit\" }}\r\n                                                    />\r\n                                                    <CardContent>\r\n                                                        <Grid container spacing={1}>\r\n                                                            <Grid item xs={12} sm={6}>\r\n                                                                <img className={classes.image} alt=\"LargeImage\" src={items[0].SmallImageURL != \"\" ? genfunction.replaceEscapeCharacters(items[0].SmallImageURL) : genfunction.replaceEscapeCharacters(HybridViewDefaultSmallImage)} />\r\n                                                            </Grid>\r\n                                                            <Grid item xs={12} sm={6}>\r\n                                                                <Typography component=\"p\" color=\"textSecondary\">\r\n                                                                    {GetBookingInfoText(genfunction.replaceEscapeCharacters(items[0].BookingInfoText))}\r\n                                                                </Typography>\r\n                                                            </Grid>\r\n                                                            <Grid item xs={12} sm={6}>\r\n                                                                <Button variant=\"contained\" fullWidth={true}\r\n                                                                    className={hideSelectButtonOnSingleBooking() ? classes.hidden : classes.visible} disabled={showTourList(items[0].BookingInfo) ? true : false}\r\n                                                                    color=\"primary\"\r\n                                                                    onClick={() => { BookingInfoClickHandler(items[0].BookingInfo) }}>Select</Button>\r\n                                                            </Grid>\r\n                                                        </Grid>\r\n                                                    </CardContent>\r\n\r\n                                                    {showTourList(items[0].BookingInfo) ?\r\n                                                        <CardActions>\r\n                                                            <FormControl className={classes.TimeSlotSelect} fullWidth>\r\n                                                                <InputLabel id={key + \"TimeSlotLable\"} className={\"SelectResourceDropDownHeading\"}>Please select an available option</InputLabel>\r\n                                                                <Select\r\n                                                                    labelId={key + \"TimeSlotLable\"}\r\n                                                                    id={key + \"TimeSlotSelect\"}\r\n                                                                    value={state.tourEventId}\r\n\r\n                                                                    label=\"Please select an available option\"\r\n                                                                    onChange={(event) => {\r\n                                                                        shopcartreducer.managemybooking ?\r\n                                                                            redirecttoconfirmbookingchanges(getTourEvent(event.target.value))\r\n                                                                            :\r\n                                                                            checkIsReloadEvent(getTourEvent(event.target.value), 'right', true)\r\n                                                                    }}\r\n                                                                >\r\n                                                                    {state.TourEventTimeSlot.map((event) => {\r\n                                                                        return (<MenuItem disabled={!IsEventAvailableToSale(event)} key={event.TourEventID} value={event.TourEventID}>{StartAndEndTime(event, event.BookingTypeID) + GetWebDisplayName(event, event.BookingTypeID) + GetAvailabilityText(event, event.BookingTypeID)}</MenuItem>)\r\n                                                                    })}\r\n                                                                </Select>\r\n                                                            </FormControl>\r\n                                                        </CardActions>\r\n                                                        : \"\"}\r\n                                                </Card>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    )\r\n                                })\r\n                                : <Grid item xs={12} alignContent=\"center\" justifyContent=\"center\" align=\"center\"><Typography variant=\"h3\" >{Moment(state.selectedDate).format('DD-MMM-YYYY')}</Typography><Typography variant=\"h3\" >{NoEventMessage}</Typography></Grid>}\r\n\r\n                        </Grid>\r\n                    </Grid>\r\n                    <Grid container item xs={12} md={4} spacing={2} alignContent='flex-start'>\r\n                        <Hidden smDown>\r\n                            <Grid item xs={12}>\r\n                                <StaticCalenderView></StaticCalenderView>\r\n                            </Grid>\r\n                        </Hidden >\r\n\r\n                        <Grid item xs={12}>\r\n                            {ReactHtmlParser(genfunction.replaceEscapeCharacters(GetBookingInfoBookingInfoDetails() ? GetBookingInfoBookingInfoDetails() : \"\"))}\r\n                        </Grid>\r\n                    </Grid>\r\n\r\n                    <div>\r\n                        <Drawer anchor=\"right\" open={state.right} onClose={() => toggleDrawer('right', false)}>\r\n                            {sideList('right')}\r\n                        </Drawer>\r\n                    </div>\r\n                </>}\r\n        </Grid>\r\n    );\r\n}\r\nexport default withRouter(CalendarHybridView);\r\n","import React, { useEffect } from 'react';\r\nimport moment from 'moment';\r\nimport CalendarNavBar from '../../components/CalendarControls/CalendarNavBar';\r\nimport CalendarControl from '../../components/CalendarControls/CalendarControl';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { actionGetExtraItems, actionResetExtraItems } from 'actions'\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionCalendarNavListView, actionCalendarNavCalendarView, actionCalendarHyridView } from 'actions';\r\nimport { genfunction } from '../../helpers';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { actionGetDisplayAreasByType } from 'actions';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\nimport { actionGetBookingTypes } from 'actions';\r\nimport { actionCalendarNavReset } from 'actions';\r\nimport CalendarListView from '../../components/CalendarControls/CalendarListView';\r\nimport CalendarHybridView from '../../components/CalendarControls/CalendarHybridView';\r\nimport { actionGetUserDefinedFields } from 'actions';\r\nconst { CalendarScreenHeading } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    padding: theme.spacing(2),\r\n    [theme.breakpoints.up('sm')]: {\r\n      marginTop: theme.spacing(5)\r\n    }\r\n  },\r\n  content: {\r\n    textAlign: \"center\"\r\n  }\r\n\r\n}));\r\n\r\nconst Calendar = (props) => {\r\n  const constredirect = (products) => {\r\n    props.history.push({\r\n      pathname: '/checkout',\r\n      products: products\r\n    })\r\n  }\r\n\r\n  const dispatch = useDispatch();\r\n  const classes = useStyles();\r\n\r\n  const calendarNavState = useSelector(state => state.reducerCalendarView);\r\n  const displayAreasState = useSelector(state => state.reducerDisplayAreas);\r\n  const bookingTypes = useSelector(state => state.reducerBookingTypes);\r\n  const events = useSelector(state => state.reducerShopCart.events);\r\n  const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n  const bookingType = useSelector(state => state.reducerBookingTypes.bookingType);\r\n  const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n  const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n  const giftcards = useSelector(state => state.reducerGiftCards);\r\n  const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields);\r\n  const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n  const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n  useEffect(() => {\r\n    if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n      giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n      actionResetPaymentTransaction(dispatch);\r\n    }\r\n  }, []);\r\n\r\n\r\n  useEffect(() => {\r\n    actionCalendarNavReset(dispatch);\r\n\r\n    var id = props.match.params.id;\r\n    if (props.match.path == \"/calendar/:id\") {\r\n      actionGetBookingTypes(dispatch, id, false);\r\n\r\n      if (shopcartreducer.managemybooking === false) { // && bookingUDFS.bookingUDFs.length < 1\r\n        actionGetUserDefinedFields(dispatch, 'Booking', id, '');\r\n      }\r\n\r\n    }\r\n\r\n    if (props.match.path == \"/calendar/Area/:id\") {\r\n      actionGetDisplayAreasByType(dispatch, \"bookingtypes\", id, true);\r\n      actionGetBookingTypes(dispatch, id, true);\r\n    }\r\n\r\n  }, []);\r\n\r\n\r\n  useEffect(() => {\r\n    if (props.match.path == \"/calendar/Area/:id\" && bookingTypes.bookingTypes.length > 0) {\r\n      let bookingListOfIds = null;\r\n\r\n      bookingTypes.bookingTypes.map(obj => {\r\n\r\n        bookingListOfIds += obj.BookingTypeID;\r\n        bookingListOfIds += \",\";\r\n      });\r\n\r\n      if (bookingListOfIds.length > 0) {\r\n        bookingListOfIds = bookingListOfIds.substr(0, bookingListOfIds.length - 1);\r\n      }\r\n\r\n      if (shopcartreducer.managemybooking === false) { // && bookingUDFS.bookingUDFs.length < 1\r\n        actionGetUserDefinedFields(dispatch, 'Booking', '', bookingListOfIds.toString());\r\n      }\r\n    }\r\n  }, [bookingTypes])\r\n\r\n  useEffect(() => {\r\n\r\n    if ((bookingTypes.bookingTypes && bookingTypes.bookingTypes.length > 0 && bookingTypes.loading === false) && (displayAreasState && displayAreasState.displayAreas && displayAreasState.displayAreas.length > 0)) {\r\n\r\n      if (props.match.path == \"/calendar/:id\" && bookingTypes.bookingTypes.find(x => x.BookingTypeID === parseInt(props.match.params.id)) === undefined) {\r\n        return;\r\n      }\r\n\r\n      adjustView();\r\n    }\r\n    else if (props.match.path == \"/calendar/:id\" && bookingTypes.bookingTypes && bookingTypes.bookingTypes.length > 0) {\r\n\r\n      if (props.match.path == \"/calendar/:id\" && bookingTypes.bookingTypes.find(x => x.BookingTypeID === parseInt(props.match.params.id)) === undefined) {\r\n        return;\r\n      }\r\n\r\n      adjustView();\r\n    }\r\n    else if (props.match.path == \"/calendar/Area/:id\" && displayAreasState && displayAreasState.displayAreas && displayAreasState.displayAreas.length > 0) {\r\n      adjustView();\r\n    }\r\n\r\n  }, [bookingTypes.bookingTypes, displayAreasState.displayAreas])\r\n\r\n\r\n  const CheckIsForceListView = () => {\r\n    if (props.match.path == \"/calendar/Area/:id\" && displayAreasState\r\n      && displayAreasState.displayAreas\r\n      && displayAreasState.displayAreas.length > 0) {\r\n      let displayArea = displayAreasState.displayAreas.find(x => x.DisplayAreaNo == props.match.params.id);\r\n      if (displayArea) {\r\n        if (displayArea.ForceListView) {\r\n          return true;\r\n        }\r\n        else {\r\n          return false;\r\n        }\r\n      }\r\n    }\r\n    else if (props.match.path == \"/calendar/:id\" && bookingTypes.bookingTypes != undefined && bookingTypes.bookingTypes.length > 0) {\r\n      var bkngTyp = bookingTypes.bookingTypes.find(x => x.BookingTypeID === parseInt(props.match.params.id));\r\n      if (bkngTyp) {\r\n        return bkngTyp.ForceListView;\r\n      }\r\n\r\n      // return bookingTypes.bookingTypes[0].ForceListView;\r\n    }\r\n    else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  const CheckIsDefaultHybridView = () => {\r\n    if (props.match.path == \"/calendar/Area/:id\" && displayAreasState\r\n      && displayAreasState.displayAreas\r\n      && displayAreasState.displayAreas.length > 0) {\r\n      let displayArea = displayAreasState.displayAreas.find(x => x.DisplayAreaNo == props.match.params.id);\r\n      if (displayArea) {\r\n        if (displayArea.DefaultHybridView) {\r\n          return true;\r\n        }\r\n        else {\r\n          return false;\r\n        }\r\n      }\r\n    }\r\n    else if (props.match.path == \"/calendar/:id\" && bookingTypes.bookingTypes != undefined && bookingTypes.bookingTypes.length > 0) {\r\n      var bkngTyp = bookingTypes.bookingTypes.find(x => x.BookingTypeID === parseInt(props.match.params.id));\r\n      if (bkngTyp) {\r\n        return bkngTyp.DefaultHybridView;\r\n      }\r\n    }\r\n    else {\r\n      return false;\r\n    }\r\n  }\r\n\r\n  const adjustView = () => {\r\n    if (CheckIsDefaultHybridView()) {\r\n      actionCalendarHyridView(dispatch);\r\n    }\r\n    else if (CheckIsForceListView()) {\r\n      actionCalendarNavListView(dispatch);\r\n    }\r\n    else {\r\n      if (calendarNavState.viewType === \"\") {\r\n        if (window.innerWidth < 850) {\r\n          actionCalendarNavListView(dispatch);\r\n        }\r\n        else {\r\n          actionCalendarNavCalendarView(dispatch);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  useEffect(() => {\r\n    if (extramItemsstate.loading === true || bookingUDFS.loading === true) {\r\n      actionStartAppLoader(dispatch);\r\n    }\r\n    else {\r\n      actionEndAppLoader(dispatch);\r\n    }\r\n  })\r\n\r\n  const GetFilterDates = (fromDate) => {\r\n\r\n    var Id = props.match.params.id;\r\n    var showDisplay = false;\r\n    let bookingType = {};\r\n    let displayArea = {};\r\n\r\n    if (props.match.path == \"/calendar/Area/:id\") {\r\n      showDisplay = true;\r\n      displayArea = displayAreasState.displayAreas.length > 0 ? displayAreasState.displayAreas.find(x => x.DisplayAreaNo == Id) : undefined;\r\n    }\r\n    else {\r\n\r\n      bookingType = bookingTypes.bookingTypes.find(x => x.BookingTypeID == Id);\r\n\r\n      if (bookingType !== undefined &&\r\n        bookingType.hasOwnProperty('NextTourDate') && bookingType.NextTourDate.length > 0) {\r\n        if (moment(genfunction.AddToDateDate(fromDate)).format('YYYY-MM-DD') <\r\n          moment(bookingType.NextTourDate).format('YYYY-MM-DD')) {\r\n          actionResetExtraItems(dispatch);\r\n          return;\r\n        }\r\n      }\r\n    }\r\n\r\n    if (bookingType !== undefined) {\r\n      actionGetExtraItems(dispatch, Id, true, showDisplay, fromDate, true);\r\n    }\r\n  }\r\n\r\n  const extramItemsstate = useSelector(state => state.reducerExtraItems);\r\n\r\n  return (\r\n    <div className={classes.root}>\r\n      {calendarNavState.viewType !== \"\" && calendarNavState.viewType !== \"HybridView\" ?\r\n        <>\r\n          <div className={classes.content}>\r\n            <Typography variant=\"h1\" component=\"h1\" color=\"primary\">{CalendarScreenHeading}</Typography>\r\n          </div>\r\n          <CalendarNavBar Path={props.match.path} bookingType={bookingType} urlID={props.match.params.id} />\r\n        </>\r\n        : \"\"}\r\n      {calendarNavState.viewType !== \"\" && calendarNavState.viewType === \"CalendarView\" ? <CalendarControl tourEvents={extramItemsstate.extramItems} Path={props.match.path} urlID={props.match.params.id} constredirect={constredirect} /> : null}\r\n      {calendarNavState.viewType !== \"\" && calendarNavState.viewType === \"ListView\" ? <CalendarListView tourEvents={extramItemsstate.extramItems} Path={props.match.path} urlID={props.match.params.id} constredirect={constredirect} onFilter={GetFilterDates} ></CalendarListView> : null}\r\n      {calendarNavState.viewType !== \"\" && calendarNavState.viewType === \"HybridView\" ? <CalendarHybridView tourEvents={extramItemsstate.extramItems} Path={props.match.path} urlID={props.match.params.id} constredirect={constredirect} onFilter={GetFilterDates} /> : null}\r\n    </div>\r\n  );\r\n}\r\n\r\nexport default Calendar;\r\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Card, CardContent, Grid, Typography, Avatar } from '@material-ui/core';\nimport ArrowDownwardIcon from '@material-ui/icons/ArrowDownward';\nimport MoneyIcon from '@material-ui/icons/Money';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%'\n  },\n  content: {\n    alignItems: 'center',\n    display: 'flex'\n  },\n  title: {\n    fontWeight: 700\n  },\n  avatar: {\n    backgroundColor: theme.palette.error.main,\n    height: 56,\n    width: 56\n  },\n  icon: {\n    height: 32,\n    width: 32\n  },\n  difference: {\n    marginTop: theme.spacing(2),\n    display: 'flex',\n    alignItems: 'center'\n  },\n  differenceIcon: {\n    color: theme.palette.error.dark\n  },\n  differenceValue: {\n    color: theme.palette.error.dark,\n    marginRight: theme.spacing(1)\n  }\n}));\n\nconst Budget = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent>\n        <Grid\n          container\n          justify=\"space-between\"\n        >\n          <Grid item>\n            <Typography\n              className={classes.title}\n              color=\"textSecondary\"\n              gutterBottom\n              variant=\"body2\"\n            >\n              BUDGET\n            </Typography>\n            <Typography variant=\"h3\">$24,000</Typography>\n          </Grid>\n          <Grid item>\n            <Avatar className={classes.avatar}>\n              <MoneyIcon className={classes.icon} />\n            </Avatar>\n          </Grid>\n        </Grid>\n        <div className={classes.difference}>\n          <ArrowDownwardIcon className={classes.differenceIcon} />\n          <Typography\n            className={classes.differenceValue}\n            variant=\"body2\"\n          >\n            12%\n          </Typography>\n          <Typography\n            className={classes.caption}\n            variant=\"caption\"\n          >\n            Since last month\n          </Typography>\n        </div>\n      </CardContent>\n    </Card>\n  );\n};\n\nBudget.propTypes = {\n  className: PropTypes.string\n};\n\nexport default Budget;\n","import uuid from 'uuid/v1';\n\nexport default [\n  {\n    id: uuid(),\n    ref: 'CDD1049',\n    amount: 30.5,\n    customer: {\n      name: 'Ekaterina Tankova'\n    },\n    createdAt: 1555016400000,\n    status: 'pending'\n  },\n  {\n    id: uuid(),\n    ref: 'CDD1048',\n    amount: 25.1,\n    customer: {\n      name: 'Cao Yu'\n    },\n    createdAt: 1555016400000,\n    status: 'delivered'\n  },\n  {\n    id: uuid(),\n    ref: 'CDD1047',\n    amount: 10.99,\n    customer: {\n      name: 'Alexa Richardson'\n    },\n    createdAt: 1554930000000,\n    status: 'refunded'\n  },\n  {\n    id: uuid(),\n    ref: 'CDD1046',\n    amount: 96.43,\n    customer: {\n      name: 'Anje Keizer'\n    },\n    createdAt: 1554757200000,\n    status: 'pending'\n  },\n  {\n    id: uuid(),\n    ref: 'CDD1045',\n    amount: 32.54,\n    customer: {\n      name: 'Clarke Gillebert'\n    },\n    createdAt: 1554670800000,\n    status: 'delivered'\n  },\n  {\n    id: uuid(),\n    ref: 'CDD1044',\n    amount: 16.76,\n    customer: {\n      name: 'Adam Denisov'\n    },\n    createdAt: 1554670800000,\n    status: 'delivered'\n  }\n];\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport moment from 'moment';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardActions,\n  CardHeader,\n  CardContent,\n  Button,\n  Divider,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableRow,\n  Tooltip,\n  TableSortLabel\n} from '@material-ui/core';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport mockData from './data';\nimport { StatusBullet } from 'components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {},\n  content: {\n    padding: 0\n  },\n  inner: {\n    minWidth: 800\n  },\n  statusContainer: {\n    display: 'flex',\n    alignItems: 'center'\n  },\n  status: {\n    marginRight: theme.spacing(1)\n  },\n  actions: {\n    justifyContent: 'flex-end'\n  }\n}));\n\nconst statusColors = {\n  delivered: 'success',\n  pending: 'info',\n  refunded: 'danger'\n};\n\nconst LatestOrders = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [orders] = useState(mockData);\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardHeader\n        action={\n          <Button\n            color=\"primary\"\n            size=\"small\"\n            variant=\"outlined\"\n          >\n            New entry\n          </Button>\n        }\n        title=\"Latest Orders\"\n      />\n      <Divider />\n      <CardContent className={classes.content}>\n        <PerfectScrollbar>\n          <div className={classes.inner}>\n            <Table>\n              <TableHead>\n                <TableRow>\n                  <TableCell>Order Ref</TableCell>\n                  <TableCell>Customer</TableCell>\n                  <TableCell sortDirection=\"desc\">\n                    <Tooltip\n                      enterDelay={300}\n                      title=\"Sort\"\n                      enterTouchDelay={0} \n                      leaveTouchDelay={3000}\n                    >\n                      <TableSortLabel\n                        active\n                        direction=\"desc\"\n                      >\n                        Date\n                      </TableSortLabel>\n                    </Tooltip>\n                  </TableCell>\n                  <TableCell>Status</TableCell>\n                </TableRow>\n              </TableHead>\n              <TableBody>\n                {orders.map(order => (\n                  <TableRow\n                    hover\n                    key={order.id}\n                  >\n                    <TableCell>{order.ref}</TableCell>\n                    <TableCell>{order.customer.name}</TableCell>\n                    <TableCell>\n                      {moment(order.createdAt).format('DD/MM/YYYY')}\n                    </TableCell>\n                    <TableCell>\n                      <div className={classes.statusContainer}>\n                        <StatusBullet\n                          className={classes.status}\n                          color={statusColors[order.status]}\n                          size=\"sm\"\n                        />\n                        {order.status}\n                      </div>\n                    </TableCell>\n                  </TableRow>\n                ))}\n              </TableBody>\n            </Table>\n          </div>\n        </PerfectScrollbar>\n      </CardContent>\n      <Divider />\n      <CardActions className={classes.actions}>\n        <Button\n          color=\"primary\"\n          size=\"small\"\n          variant=\"text\"\n        >\n          View all <ArrowRightIcon />\n        </Button>\n      </CardActions>\n    </Card>\n  );\n};\n\nLatestOrders.propTypes = {\n  className: PropTypes.string\n};\n\nexport default LatestOrders;\n","import uuid from 'uuid/v1';\nimport moment from 'moment';\n\nexport default [\n  {\n    id: uuid(),\n    name: 'Dropbox',\n    imageUrl: 'unset.png',\n    updatedAt: moment().subtract(2, 'hours')\n  },\n  {\n    id: uuid(),\n    name: 'Medium Corporation',\n    imageUrl: 'unset.png',\n    updatedAt: moment().subtract(2, 'hours')\n  },\n  {\n    id: uuid(),\n    name: 'Slack',\n    imageUrl: 'unset.png',\n    updatedAt: moment().subtract(3, 'hours')\n  },\n  {\n    id: uuid(),\n    name: 'Lyft',\n    imageUrl: 'unset.png',\n    updatedAt: moment().subtract(5, 'hours')\n  },\n  {\n    id: uuid(),\n    name: 'GitHub',\n    imageUrl: 'unset.png',\n    updatedAt: moment().subtract(9, 'hours')\n  }\n];\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  Button,\n  Divider,\n  List,\n  ListItem,\n  ListItemAvatar,\n  ListItemText,\n  IconButton\n} from '@material-ui/core';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\n\nimport mockData from './data';\n\nconst useStyles = makeStyles(() => ({\n  root: {\n    height: '100%'\n  },\n  content: {\n    padding: 0\n  },\n  image: {\n    height: 48,\n    width: 48\n  },\n  actions: {\n    justifyContent: 'flex-end'\n  }\n}));\n\nconst LatestProducts = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [products] = useState(mockData);\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardHeader\n        subtitle={`${products.length} in total`}\n        title=\"Latest products\"\n      />\n      <Divider />\n      <CardContent className={classes.content}>\n        <List>\n          {products.map((product, i) => (\n            <ListItem\n              divider={i < products.length - 1}\n              key={product.id}\n            >\n              <ListItemAvatar>\n                <img\n                  alt=\"Product\"\n                  className={classes.image}\n                  src={product.imageUrl}\n                />\n              </ListItemAvatar>\n              <ListItemText\n                primary={product.name}\n                secondary={`Updated ${product.updatedAt.fromNow()}`}\n              />\n              <IconButton\n                edge=\"end\"\n                size=\"small\"\n              >\n                <MoreVertIcon />\n              </IconButton>\n            </ListItem>\n          ))}\n        </List>\n      </CardContent>\n      <Divider />\n      <CardActions className={classes.actions}>\n        <Button\n          color=\"primary\"\n          size=\"small\"\n          variant=\"text\"\n        >\n          View all <ArrowRightIcon />\n        </Button>\n      </CardActions>\n    </Card>\n  );\n};\n\nLatestProducts.propTypes = {\n  className: PropTypes.string\n};\n\nexport default LatestProducts;\n","import palette from 'theme/palette';\n\nexport const data = {\n  labels: ['1 Aug', '2 Aug', '3 Aug', '4 Aug', '5 Aug', '6 Aug'],\n  datasets: [\n    {\n      label: 'This year',\n      backgroundColor: palette.primary.main,\n      data: [18, 5, 19, 27, 29, 19, 20]\n    },\n    {\n      label: 'Last year',\n      backgroundColor: palette.neutral,\n      data: [11, 20, 12, 29, 30, 25, 13]\n    }\n  ]\n};\n\nexport const options = {\n  responsive: true,\n  maintainAspectRatio: false,\n  animation: false,\n  legend: { display: false },\n  cornerRadius: 20,\n  tooltips: {\n    enabled: true,\n    mode: 'index',\n    intersect: false,\n    borderWidth: 1,\n    borderColor: palette.divider,\n    backgroundColor: palette.white,\n    titleFontColor: palette.text.primary,\n    bodyFontColor: palette.text.secondary,\n    footerFontColor: palette.text.secondary\n  },\n  layout: { padding: 0 },\n  scales: {\n    xAxes: [\n      {\n        barThickness: 12,\n        maxBarThickness: 10,\n        barPercentage: 0.5,\n        categoryPercentage: 0.5,\n        ticks: {\n          fontColor: palette.text.secondary\n        },\n        gridLines: {\n          display: false,\n          drawBorder: false\n        }\n      }\n    ],\n    yAxes: [\n      {\n        ticks: {\n          fontColor: palette.text.secondary,\n          beginAtZero: true,\n          min: 0\n        },\n        gridLines: {\n          borderDash: [2],\n          borderDashOffset: [2],\n          color: palette.divider,\n          drawBorder: false,\n          zeroLineBorderDash: [2],\n          zeroLineBorderDashOffset: [2],\n          zeroLineColor: palette.divider\n        }\n      }\n    ]\n  }\n};\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { Bar } from 'react-chartjs-2';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  Divider,\n  Button\n} from '@material-ui/core';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport ArrowRightIcon from '@material-ui/icons/ArrowRight';\n\nimport { data, options } from './chart';\n\nconst useStyles = makeStyles(() => ({\n  root: {},\n  chartContainer: {\n    height: 400,\n    position: 'relative'\n  },\n  actions: {\n    justifyContent: 'flex-end'\n  }\n}));\n\nconst LatestSales = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardHeader\n        action={\n          <Button\n            size=\"small\"\n            variant=\"text\"\n          >\n            Last 7 days <ArrowDropDownIcon />\n          </Button>\n        }\n        title=\"Latest Sales\"\n      />\n      <Divider />\n      <CardContent>\n        <div className={classes.chartContainer}>\n          <Bar\n            data={data}\n            options={options}\n          />\n        </div>\n      </CardContent>\n      <Divider />\n      <CardActions className={classes.actions}>\n        <Button\n          color=\"primary\"\n          size=\"small\"\n          variant=\"text\"\n        >\n          Overview <ArrowRightIcon />\n        </Button>\n      </CardActions>\n    </Card>\n  );\n};\n\nLatestSales.propTypes = {\n  className: PropTypes.string\n};\n\nexport default LatestSales;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardContent,\n  Grid,\n  Typography,\n  Avatar,\n  LinearProgress\n} from '@material-ui/core';\nimport InsertChartIcon from '@material-ui/icons/InsertChartOutlined';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%'\n  },\n  content: {\n    alignItems: 'center',\n    display: 'flex'\n  },\n  title: {\n    fontWeight: 700\n  },\n  avatar: {\n    backgroundColor: theme.palette.primary.main,\n    color: theme.palette.primary.contrastText,\n    height: 56,\n    width: 56\n  },\n  icon: {\n    height: 32,\n    width: 32\n  },\n  progress: {\n    marginTop: theme.spacing(3)\n  }\n}));\n\nconst TasksProgress = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent>\n        <Grid\n          container\n          justify=\"space-between\"\n        >\n          <Grid item>\n            <Typography\n              className={classes.title}\n              color=\"textSecondary\"\n              gutterBottom\n              variant=\"body2\"\n            >\n              TASKS PROGRESS\n            </Typography>\n            <Typography variant=\"h3\">75.5%</Typography>\n          </Grid>\n          <Grid item>\n            <Avatar className={classes.avatar}>\n              <InsertChartIcon className={classes.icon} />\n            </Avatar>\n          </Grid>\n        </Grid>\n        <LinearProgress\n          className={classes.progress}\n          value={75.5}\n          variant=\"determinate\"\n        />\n      </CardContent>\n    </Card>\n  );\n};\n\nTasksProgress.propTypes = {\n  className: PropTypes.string\n};\n\nexport default TasksProgress;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Card, CardContent, Grid, Typography, Avatar } from '@material-ui/core';\nimport AttachMoneyIcon from '@material-ui/icons/AttachMoney';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%',\n    backgroundColor: theme.palette.primary.main,\n    color: theme.palette.primary.contrastText\n  },\n  content: {\n    alignItems: 'center',\n    display: 'flex'\n  },\n  title: {\n    fontWeight: 700\n  },\n  avatar: {\n    backgroundColor: theme.palette.white,\n    color: theme.palette.primary.main,\n    height: 56,\n    width: 56\n  },\n  icon: {\n    height: 32,\n    width: 32\n  }\n}));\n\nconst TotalProfit = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent>\n        <Grid\n          container\n          justify=\"space-between\"\n        >\n          <Grid item>\n            <Typography\n              className={classes.title}\n              color=\"inherit\"\n              gutterBottom\n              variant=\"body2\"\n            >\n              TOTAL PROFIT\n            </Typography>\n            <Typography\n              color=\"inherit\"\n              variant=\"h3\"\n            >\n              $23,200\n            </Typography>\n          </Grid>\n          <Grid item>\n            <Avatar className={classes.avatar}>\n              <AttachMoneyIcon className={classes.icon} />\n            </Avatar>\n          </Grid>\n        </Grid>\n      </CardContent>\n    </Card>\n  );\n};\n\nTotalProfit.propTypes = {\n  className: PropTypes.string\n};\n\nexport default TotalProfit;\n","import React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Card, CardContent, Grid, Typography, Avatar } from '@material-ui/core';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\nimport PeopleIcon from '@material-ui/icons/PeopleOutlined';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%'\n  },\n  content: {\n    alignItems: 'center',\n    display: 'flex'\n  },\n  title: {\n    fontWeight: 700\n  },\n  avatar: {\n    backgroundColor: theme.palette.success.main,\n    height: 56,\n    width: 56\n  },\n  icon: {\n    height: 32,\n    width: 32\n  },\n  difference: {\n    marginTop: theme.spacing(2),\n    display: 'flex',\n    alignItems: 'center'\n  },\n  differenceIcon: {\n    color: theme.palette.success.dark\n  },\n  differenceValue: {\n    color: theme.palette.success.dark,\n    marginRight: theme.spacing(1)\n  }\n}));\n\nconst TotalUsers = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent>\n        <Grid\n          container\n          justify=\"space-between\"\n        >\n          <Grid item>\n            <Typography\n              className={classes.title}\n              color=\"textSecondary\"\n              gutterBottom\n              variant=\"body2\"\n            >\n              TOTAL USERS\n            </Typography>\n            <Typography variant=\"h3\">1,600</Typography>\n          </Grid>\n          <Grid item>\n            <Avatar className={classes.avatar}>\n              <PeopleIcon className={classes.icon} />\n            </Avatar>\n          </Grid>\n        </Grid>\n        <div className={classes.difference}>\n          <ArrowUpwardIcon className={classes.differenceIcon} />\n          <Typography\n            className={classes.differenceValue}\n            variant=\"body2\"\n          >\n            16%\n          </Typography>\n          <Typography\n            className={classes.caption}\n            variant=\"caption\"\n          >\n            Since last month\n          </Typography>\n        </div>\n      </CardContent>\n    </Card>\n  );\n};\n\nTotalUsers.propTypes = {\n  className: PropTypes.string\n};\n\nexport default TotalUsers;\n","import React from 'react';\nimport { Doughnut } from 'react-chartjs-2';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { makeStyles, useTheme } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  IconButton,\n  Divider,\n  Typography\n} from '@material-ui/core';\nimport LaptopMacIcon from '@material-ui/icons/LaptopMac';\nimport PhoneIphoneIcon from '@material-ui/icons/PhoneIphone';\nimport RefreshIcon from '@material-ui/icons/Refresh';\nimport TabletMacIcon from '@material-ui/icons/TabletMac';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    height: '100%'\n  },\n  chartContainer: {\n    position: 'relative',\n    height: '300px'\n  },\n  stats: {\n    marginTop: theme.spacing(2),\n    display: 'flex',\n    justifyContent: 'center'\n  },\n  device: {\n    textAlign: 'center',\n    padding: theme.spacing(1)\n  },\n  deviceIcon: {\n    color: theme.palette.icon\n  }\n}));\n\nconst UsersByDevice = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n  const theme = useTheme();\n\n  const data = {\n    datasets: [\n      {\n        data: [63, 15, 22],\n        backgroundColor: [\n          theme.palette.primary.main,\n          theme.palette.error.main,\n          theme.palette.warning.main\n        ],\n        borderWidth: 8,\n        borderColor: theme.palette.white,\n        hoverBorderColor: theme.palette.white\n      }\n    ],\n    labels: ['Desktop', 'Tablet', 'Mobile']\n  };\n\n  const options = {\n    legend: {\n      display: false\n    },\n    responsive: true,\n    maintainAspectRatio: false,\n    animation: false,\n    cutoutPercentage: 80,\n    layout: { padding: 0 },\n    tooltips: {\n      enabled: true,\n      mode: 'index',\n      intersect: false,\n      borderWidth: 1,\n      borderColor: theme.palette.divider,\n      backgroundColor: theme.palette.white,\n      titleFontColor: theme.palette.text.primary,\n      bodyFontColor: theme.palette.text.secondary,\n      footerFontColor: theme.palette.text.secondary\n    }\n  };\n\n  const devices = [\n    {\n      title: 'Desktop',\n      value: '63',\n      icon: <LaptopMacIcon />,\n      color: theme.palette.primary.main\n    },\n    {\n      title: 'Tablet',\n      value: '15',\n      icon: <TabletMacIcon />,\n      color: theme.palette.error.main\n    },\n    {\n      title: 'Mobile',\n      value: '23',\n      icon: <PhoneIphoneIcon />,\n      color: theme.palette.warning.main\n    }\n  ];\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardHeader\n        action={\n          <IconButton size=\"small\">\n            <RefreshIcon />\n          </IconButton>\n        }\n        title=\"Users By Device\"\n      />\n      <Divider />\n      <CardContent>\n        <div className={classes.chartContainer}>\n          <Doughnut\n            data={data}\n            options={options}\n          />\n        </div>\n        <div className={classes.stats}>\n          {devices.map(device => (\n            <div\n              className={classes.device}\n              key={device.title}\n            >\n              <span className={classes.deviceIcon}>{device.icon}</span>\n              <Typography variant=\"body1\">{device.title}</Typography>\n              <Typography\n                style={{ color: device.color }}\n                variant=\"h2\"\n              >\n                {device.value}%\n              </Typography>\n            </div>\n          ))}\n        </div>\n      </CardContent>\n    </Card>\n  );\n};\n\nUsersByDevice.propTypes = {\n  className: PropTypes.string\n};\n\nexport default UsersByDevice;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\n\nimport {\n  Budget,\n  TotalUsers,\n  TasksProgress,\n  TotalProfit,\n  LatestSales,\n  UsersByDevice,\n  LatestProducts,\n  LatestOrders\n} from './components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  }\n}));\n\nconst Dashboard = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Grid\n        container\n        spacing={4}\n      >\n        <Grid\n          item\n          lg={3}\n          sm={6}\n          xl={3}\n          xs={12}\n        >\n          <Budget />\n        </Grid>\n        <Grid\n          item\n          lg={3}\n          sm={6}\n          xl={3}\n          xs={12}\n        >\n          <TotalUsers />\n        </Grid>\n        <Grid\n          item\n          lg={3}\n          sm={6}\n          xl={3}\n          xs={12}\n        >\n          <TasksProgress />\n        </Grid>\n        <Grid\n          item\n          lg={3}\n          sm={6}\n          xl={3}\n          xs={12}\n        >\n          <TotalProfit />\n        </Grid>\n        <Grid\n          item\n          lg={8}\n          md={12}\n          xl={9}\n          xs={12}\n        >\n          <LatestSales />\n        </Grid>\n        <Grid\n          item\n          lg={4}\n          md={6}\n          xl={3}\n          xs={12}\n        >\n          <UsersByDevice />\n        </Grid>\n        <Grid\n          item\n          lg={4}\n          md={6}\n          xl={3}\n          xs={12}\n        >\n          <LatestProducts />\n        </Grid>\n        <Grid\n          item\n          lg={8}\n          md={12}\n          xl={9}\n          xs={12}\n        >\n          <LatestOrders />\n        </Grid>\n      </Grid>\n    </div>\n  );\n};\n\nexport default Dashboard;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  },\n  iframe: {\n    width: '100%',\n    minHeight: 640,\n    border: 0\n  }\n}));\n\nconst Icons = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <iframe\n        className={classes.iframe}\n        src=\"https://material.io/tools/icons/?icon=accessibility&style=outline\"\n        title=\"Material Design icons\"\n      />\n    </div>\n  );\n};\n\nexport default Icons;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  },\n  content: {\n    paddingTop: 150,\n    textAlign: 'center'\n  },\n  image: {\n    marginTop: 50,\n    display: 'inline-block',\n    maxWidth: '100%',\n    width: 560\n  }\n}));\n\nconst NotFound = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Grid\n        container\n        justify=\"center\"\n        spacing={4}\n      >\n        <Grid\n          item\n          lg={6}\n          xs={12}\n        >\n          <div className={classes.content}>\n            <Typography variant=\"h1\">\n              404: The page you are looking for isn???t here\n            </Typography>\n            <Typography variant=\"subtitle2\">\n              You either tried some shady route or you came here by mistake.\n              Whichever it is, try using the navigation\n            </Typography>\n          </div>\n        </Grid>\n      </Grid>\n    </div>\n  );\n};\n\nexport default NotFound;\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, CardActions, Typography, Button, CardHeader, Grid } from '@material-ui/core';\r\nimport { genfunction } from 'helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\n\r\nconst { TourDisplayAreaDefaultImage } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {},\r\n  card: {\r\n    \"&:hover\": {\r\n      transform: 'scale(1.02)',\r\n      WebkitTransform: 'scale(1.02)',\r\n      boxShadow: \"inset 0 0 0 2px\",\r\n      cursor: 'pointer'\r\n    }\r\n  },\r\n  tourheaderbox: {\r\n    backgroundColor: theme.palette.primary.main,\r\n    color: theme.palette.primary.contrastText\r\n  },\r\n  image: {\r\n    width: \"100%\",\r\n    objectFit: \"cover\",\r\n    objectPosition: \"center\"\r\n  }\r\n}));\r\n\r\nconst ProductCard = props => {\r\n\r\n  const { area } = props;\r\n  const classes = useStyles();\r\n\r\n  return (\r\n    <Card className={classes.card}>\r\n      <CardHeader className={classes.tourheaderbox}\r\n        title={area.AreaName}\r\n        titleTypographyProps={{ color: \"inherit\" }}\r\n      />\r\n      <CardContent>\r\n        <Grid container spacing={1}>\r\n          <Grid item xs={12} sm={4} >\r\n            <img alt=\"DisplayAreaImage\" className={classes.image} src={genfunction.replaceEscapeCharacters(area.ImageURL && area.ImageURL != \"\" ? area.ImageURL : TourDisplayAreaDefaultImage)} />\r\n          </Grid>\r\n          <Grid item xs={12} sm={8}>\r\n            <Typography variant='body1' color=\"textSecondary\">\r\n              {ReactHtmlParser(genfunction.replaceEscapeCharacters(area.DisplayText))}\r\n            </Typography>\r\n          </Grid>\r\n        </Grid>\r\n      </CardContent>\r\n      <CardActions>\r\n        <Grid container >\r\n          <Grid item xs={12} sm={4}>\r\n            <Button fullWidth={true} variant=\"contained\" onClick={() => props.callCalender(area)} color=\"primary\">Buy Now</Button>\r\n          </Grid>\r\n        </Grid>\r\n      </CardActions>\r\n    </Card>\r\n  );\r\n};\r\n\r\nexport default ProductCard;","import React, { useEffect } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Button } from '@material-ui/core';\nimport { ProductCard } from './components';\nimport { useDispatch, useSelector } from 'react-redux';\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\nimport { actionGetDisplayAreasByType, actionResetDisplayAreas } from 'actions';\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\nimport { actionResetBookingTypes } from 'actions';\nimport { actionCalendarNavReset } from 'actions';\nimport { useHistory } from \"react-router-dom\";\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(2),\n    [theme.breakpoints.up('sm')]: {\n      marginTop: theme.spacing(5)\n    }\n  },\n  displaynone: {\n    display: \"none\"\n  }\n}));\n\nconst ProductList = (props) => {\n\n  const dispatch = useDispatch()\n  const classes = useStyles();\n  let history = useHistory();\n\n  const displayAreasState = useSelector(state => state.reducerDisplayAreas);\n  const error = useSelector(state => state.reducerDisplayAreas.displayAreasError);\n  const events = useSelector(state => state.reducerShopCart.events);\n  const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\n  const managemybkng = useSelector(state => state.reducerShopCart.managemybooking);\n\n  useEffect(() => {\n    actionGetDisplayAreasByType(dispatch, \"bookingtypes\", null, false);\n    actionCalendarNavReset(dispatch);\n  }, []);\n\n  useEffect(() => {\n\n    if (displayAreasState.loading == true) {\n      actionStartAppLoader(dispatch);\n    }\n    else {\n      actionEndAppLoader(dispatch);\n    }\n\n  })\n\n  if (events && events.length < 1 && bookingTypes && bookingTypes.length > 0) {\n    actionResetBookingTypes(dispatch);\n  }\n\n  const constredirect = (product) => {\n\n    if (product.hasOwnProperty(\"UniqueBookingTypeID\")) {\n      props.history.push({\n        pathname: '/calendar/' + product.UniqueBookingTypeID\n      })\n    }\n    else {\n      props.history.push({\n        pathname: '/calendar/Area/' + product.DisplayAreaNo\n      })\n    }\n\n  }\n\n  const errorcancelhandle = () => {\n    actionResetDisplayAreas(dispatch);\n  }\n\n  if (displayAreasState.displayAreas === undefined) {\n    return <div>\n      <ErrorHandling msg={error} open={error.length > 0 ? true : false}\n        handleclose={errorcancelhandle} />\n    </div>\n  }\n\n  return (\n\n    <div className={classes.root}>\n      <Grid\n        container\n        spacing={2}\n        className={managemybkng === false ? '' : classes.displaynone}\n      >\n\n        {displayAreasState.displayAreas.map((area, i) => {\n          return area.ShowOnline && area !== undefined ?\n            <Grid item key={area.DisplayAreaNo}\n              lg={4} md={6} xs={12}>\n              <ProductCard area={area} callCalender={constredirect} />\n            </Grid>\n            : null\n        })}\n\n      </Grid>\n\n      {managemybkng === true ?\n        <Grid item xs={12} align=\"center\">\n          <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\n            onClick={history.goBack()}></Button>\n        </Grid>\n        : null}\n    </div>\n  );\n};\n\nexport default ProductList;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  Grid,\n  Divider,\n  FormControlLabel,\n  Checkbox,\n  Typography,\n  Button\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n  root: {},\n  item: {\n    display: 'flex',\n    flexDirection: 'column'\n  }\n}));\n\nconst Notifications = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <form>\n        <CardHeader\n          subheader=\"Manage the notifications\"\n          title=\"Notifications\"\n        />\n        <Divider />\n        <CardContent>\n          <Grid\n            container\n            spacing={6}\n            wrap=\"wrap\"\n          >\n            <Grid\n              className={classes.item}\n              item\n              md={4}\n              sm={6}\n              xs={12}\n            >\n              <Typography\n                gutterBottom\n                variant=\"h6\"\n              >\n                Notifications\n              </Typography>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    color=\"primary\"\n                    defaultChecked //\n                  />\n                }\n                label=\"Email\"\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    color=\"primary\"\n                    defaultChecked //\n                  />\n                }\n                label=\"Push Notifications\"\n              />\n              <FormControlLabel\n                control={<Checkbox color=\"primary\" />}\n                label=\"Text Messages\"\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    color=\"primary\"\n                    defaultChecked //\n                  />\n                }\n                label=\"Phone calls\"\n              />\n            </Grid>\n            <Grid\n              className={classes.item}\n              item\n              md={4}\n              sm={6}\n              xs={12}\n            >\n              <Typography\n                gutterBottom\n                variant=\"h6\"\n              >\n                Messages\n              </Typography>\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    color=\"primary\"\n                    defaultChecked //\n                  />\n                }\n                label=\"Email\"\n              />\n              <FormControlLabel\n                control={<Checkbox color=\"primary\" />}\n                label=\"Push Notifications\"\n              />\n              <FormControlLabel\n                control={\n                  <Checkbox\n                    color=\"primary\"\n                    defaultChecked //\n                  />\n                }\n                label=\"Phone calls\"\n              />\n            </Grid>\n          </Grid>\n        </CardContent>\n        <Divider />\n        <CardActions>\n          <Button\n            color=\"primary\"\n            variant=\"outlined\"\n          >\n            Save\n          </Button>\n        </CardActions>\n      </form>\n    </Card>\n  );\n};\n\nNotifications.propTypes = {\n  className: PropTypes.string\n};\n\nexport default Notifications;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardHeader,\n  CardContent,\n  CardActions,\n  Divider,\n  Button,\n  TextField\n} from '@material-ui/core';\n\nconst useStyles = makeStyles(() => ({\n  root: {}\n}));\n\nconst Password = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [values, setValues] = useState({\n    password: '',\n    confirm: ''\n  });\n\n  const handleChange = event => {\n    setValues({\n      ...values,\n      [event.target.name]: event.target.value\n    });\n  };\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <form>\n        <CardHeader\n          subheader=\"Update password\"\n          title=\"Password\"\n        />\n        <Divider />\n        <CardContent>\n          <TextField\n            fullWidth\n            label=\"Password\"\n            name=\"password\"\n            onChange={handleChange}\n            type=\"password\"\n            value={values.password}\n            variant=\"outlined\"\n          />\n          <TextField\n            fullWidth\n            label=\"Confirm password\"\n            name=\"confirm\"\n            onChange={handleChange}\n            style={{ marginTop: '1rem' }}\n            type=\"password\"\n            value={values.confirm}\n            variant=\"outlined\"\n          />\n        </CardContent>\n        <Divider />\n        <CardActions>\n          <Button\n            color=\"primary\"\n            variant=\"outlined\"\n          >\n            Update\n          </Button>\n        </CardActions>\n      </form>\n    </Card>\n  );\n};\n\nPassword.propTypes = {\n  className: PropTypes.string\n};\n\nexport default Password;\n","import React from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\n\nimport { Notifications, Password } from './components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  }\n}));\n\nconst Settings = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Grid\n        container\n        spacing={4}\n      >\n        <Grid\n          item\n          md={7}\n          xs={12}\n        >\n          <Notifications />\n        </Grid>\n        <Grid\n          item\n          md={5}\n          xs={12}\n        >\n          <Password />\n        </Grid>\n      </Grid>\n    </div>\n  );\n};\n\nexport default Settings;\n","import React, { Fragment } from 'react';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid, Typography as MuiTypography } from '@material-ui/core';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(4)\n  }\n}));\n\nconst variants = {\n  h1: 'Nisi euismod ante senectus consequat phasellus ut',\n  h2: 'Nisi euismod ante senectus consequat phasellus ut',\n  h3: 'Nisi euismod ante senectus consequat phasellus ut',\n  h4: 'Nisi euismod ante senectus consequat phasellus ut',\n  h5: 'Nisi euismod ante senectus consequat phasellus ut',\n  h6: 'Nisi euismod ante senectus consequat phasellus ut',\n  subtitle1: 'Leo varius justo aptent arcu urna felis pede nisl',\n  subtitle2: 'Leo varius justo aptent arcu urna felis pede nisl',\n  body1:\n    'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.Laoreet velit a fames commodo tristique hendrerit sociosqu rhoncus vel sapien penatibus facilisis faucibus ad. Mus purus vehicula imperdiet tempor lectus, feugiat Sapien erat viverra netus potenti mattis purus turpis. Interdum curabitur potenti tristique. Porta velit dignissim tristique ultrices primis.',\n  body2:\n    'Justo proin curabitur dictumst semper auctor, consequat tempor, nostra aenean neque turpis nunc. Leo. Sapien aliquet facilisi turpis, elit facilisi praesent porta metus leo. Dignissim amet dis nec ac integer inceptos erat dis Turpis sodales ad torquent. Dolor, erat convallis.',\n  caption: 'Accumsan leo pretium conubia ullamcorper.',\n  overline: 'Accumsan leo pretium conubia ullamcorper.',\n  button: 'Vivamus ultrices rutrum fames dictumst'\n};\n\nconst Typography = () => {\n  const classes = useStyles();\n\n  return (\n    <div className={classes.root}>\n      <Grid\n        container\n        spacing={4}\n      >\n        {Object.keys(variants).map((key, i) => (\n          <Fragment key={i}>\n            <Grid\n              item\n              sm={3}\n              xs={12}\n            >\n              <MuiTypography variant=\"caption\">{key}</MuiTypography>\n            </Grid>\n            <Grid\n              item\n              sm={9}\n              xs={12}\n            >\n              <MuiTypography variant={key}>{variants[key]}</MuiTypography>\n            </Grid>\n          </Fragment>\n        ))}\n      </Grid>\n    </div>\n  );\n};\n\nexport default Typography;\n","import React, { useState } from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport moment from 'moment';\nimport PerfectScrollbar from 'react-perfect-scrollbar';\nimport { makeStyles } from '@material-ui/styles';\nimport {\n  Card,\n  CardActions,\n  CardContent,\n  Avatar,\n  Checkbox,\n  Table,\n  TableBody,\n  TableCell,\n  TableHead,\n  TableRow,\n  Typography,\n  TablePagination\n} from '@material-ui/core';\n\nimport { getInitials } from 'helpers';\n\nconst useStyles = makeStyles(theme => ({\n  root: {},\n  content: {\n    padding: 0\n  },\n  inner: {\n    minWidth: 1050\n  },\n  nameContainer: {\n    display: 'flex',\n    alignItems: 'center'\n  },\n  avatar: {\n    marginRight: theme.spacing(2)\n  },\n  actions: {\n    justifyContent: 'flex-end'\n  }\n}));\n\nconst UsersTable = props => {\n  const { className, users, ...rest } = props;\n\n  const classes = useStyles();\n\n  const [selectedUsers, setSelectedUsers] = useState([]);\n  const [rowsPerPage, setRowsPerPage] = useState(10);\n  const [page, setPage] = useState(0);\n\n  const handleSelectAll = event => {\n    const { users } = props;\n\n    let selectedUsers;\n\n    if (event.target.checked) {\n      selectedUsers = users.map(user => user.id);\n    } else {\n      selectedUsers = [];\n    }\n\n    setSelectedUsers(selectedUsers);\n  };\n\n  const handleSelectOne = (event, id) => {\n    const selectedIndex = selectedUsers.indexOf(id);\n    let newSelectedUsers = [];\n\n    if (selectedIndex === -1) {\n      newSelectedUsers = newSelectedUsers.concat(selectedUsers, id);\n    } else if (selectedIndex === 0) {\n      newSelectedUsers = newSelectedUsers.concat(selectedUsers.slice(1));\n    } else if (selectedIndex === selectedUsers.length - 1) {\n      newSelectedUsers = newSelectedUsers.concat(selectedUsers.slice(0, -1));\n    } else if (selectedIndex > 0) {\n      newSelectedUsers = newSelectedUsers.concat(\n        selectedUsers.slice(0, selectedIndex),\n        selectedUsers.slice(selectedIndex + 1)\n      );\n    }\n\n    setSelectedUsers(newSelectedUsers);\n  };\n\n  const handlePageChange = (event, page) => {\n    setPage(page);\n  };\n\n  const handleRowsPerPageChange = event => {\n    setRowsPerPage(event.target.value);\n  };\n\n  return (\n    <Card\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <CardContent className={classes.content}>\n        <PerfectScrollbar>\n          <div className={classes.inner}>\n            <Table>\n              <TableHead>\n                <TableRow>\n                  <TableCell padding=\"checkbox\">\n                    <Checkbox\n                      checked={selectedUsers.length === users.length}\n                      color=\"primary\"\n                      indeterminate={\n                        selectedUsers.length > 0 &&\n                        selectedUsers.length < users.length\n                      }\n                      onChange={handleSelectAll}\n                    />\n                  </TableCell>\n                  <TableCell>Name</TableCell>\n                  <TableCell>Email</TableCell>\n                  <TableCell>Location</TableCell>\n                  <TableCell>Phone</TableCell>\n                  <TableCell>Registration date</TableCell>\n                </TableRow>\n              </TableHead>\n              <TableBody>\n                {users.slice(0, rowsPerPage).map(user => (\n                  <TableRow\n                    className={classes.tableRow}\n                    hover\n                    key={user.id}\n                    selected={selectedUsers.indexOf(user.id) !== -1}\n                  >\n                    <TableCell padding=\"checkbox\">\n                      <Checkbox\n                        checked={selectedUsers.indexOf(user.id) !== -1}\n                        color=\"primary\"\n                        onChange={event => handleSelectOne(event, user.id)}\n                        value=\"true\"\n                      />\n                    </TableCell>\n                    <TableCell>\n                      <div className={classes.nameContainer}>\n                        <Avatar\n                          className={classes.avatar}\n                          src={user.avatarUrl}\n                        >\n                          {getInitials(user.name)}\n                        </Avatar>\n                        <Typography variant=\"body1\">{user.name}</Typography>\n                      </div>\n                    </TableCell>\n                    <TableCell>{user.email}</TableCell>\n                    <TableCell>\n                      {user.address.city}, {user.address.state},{' '}\n                      {user.address.country}\n                    </TableCell>\n                    <TableCell>{user.phone}</TableCell>\n                    <TableCell>\n                      {moment(user.createdAt).format('DD/MM/YYYY')}\n                    </TableCell>\n                  </TableRow>\n                ))}\n              </TableBody>\n            </Table>\n          </div>\n        </PerfectScrollbar>\n      </CardContent>\n      <CardActions className={classes.actions}>\n        <TablePagination\n          component=\"div\"\n          count={users.length}\n          onChangePage={handlePageChange}\n          onChangeRowsPerPage={handleRowsPerPageChange}\n          page={page}\n          rowsPerPage={rowsPerPage}\n          rowsPerPageOptions={[5, 10, 25]}\n        />\n      </CardActions>\n    </Card>\n  );\n};\n\nUsersTable.propTypes = {\n  className: PropTypes.string,\n  users: PropTypes.array.isRequired\n};\n\nexport default UsersTable;\n","export default (name = '') =>\n  name\n    .replace(/\\s+/, ' ')\n    .split(' ')\n    .slice(0, 2)\n    .map(v => v && v[0].toUpperCase())\n    .join('');\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { makeStyles } from '@material-ui/styles';\nimport { Button } from '@material-ui/core';\n\nimport { SearchInput } from 'components';\n\nconst useStyles = makeStyles(theme => ({\n  root: {},\n  row: {\n    height: '42px',\n    display: 'flex',\n    alignItems: 'center',\n    marginTop: theme.spacing(1)\n  },\n  spacer: {\n    flexGrow: 1\n  },\n  importButton: {\n    marginRight: theme.spacing(1)\n  },\n  exportButton: {\n    marginRight: theme.spacing(1)\n  },\n  searchInput: {\n    marginRight: theme.spacing(1)\n  }\n}));\n\nconst UsersToolbar = props => {\n  const { className, ...rest } = props;\n\n  const classes = useStyles();\n\n  return (\n    <div\n      {...rest}\n      className={clsx(classes.root, className)}\n    >\n      <div className={classes.row}>\n        <span className={classes.spacer} />\n        <Button className={classes.importButton}>Import</Button>\n        <Button className={classes.exportButton}>Export</Button>\n        <Button\n          color=\"primary\"\n          variant=\"contained\"\n        >\n          Add user\n        </Button>\n      </div>\n      <div className={classes.row}>\n        <SearchInput\n          className={classes.searchInput}\n          placeholder=\"Search user\"\n        />\n      </div>\n    </div>\n  );\n};\n\nUsersToolbar.propTypes = {\n  className: PropTypes.string\n};\n\nexport default UsersToolbar;\n","import uuid from 'uuid/v1';\n\nexport default [\n  {\n    id: uuid(),\n    name: 'Ekaterina Tankova',\n    address: {\n      country: 'USA',\n      state: 'West Virginia',\n      city: 'Parkersburg',\n      street: '2849 Fulton Street'\n    },\n    email: 'ekaterina.tankova@devias.io',\n    phone: '304-428-3097',\n    avatarUrl: '/unset.png',\n    createdAt: 1555016400000\n  },\n  {\n    id: uuid(),\n    name: 'Cao Yu',\n    address: {\n      country: 'USA',\n      state: 'Bristow',\n      city: 'Iowa',\n      street: '1865  Pleasant Hill Road'\n    },\n    email: 'cao.yu@devias.io',\n    avatarUrl: '/unset.png',\n    phone: '712-351-5711',\n    createdAt: 1555016400000\n  },\n  {\n    id: uuid(),\n    name: 'Alexa Richardson',\n    address: {\n      country: 'USA',\n      state: 'Georgia',\n      city: 'Atlanta',\n      street: '4894  Lakeland Park Drive'\n    },\n    email: 'alexa.richardson@devias.io',\n    phone: '770-635-2682',\n    avatarUrl: '/unset.png',\n    createdAt: 1555016400000\n  },\n  {\n    id: uuid(),\n    name: 'Anje Keizer',\n    address: {\n      country: 'USA',\n      state: 'Ohio',\n      city: 'Dover',\n      street: '4158  Hedge Street'\n    },\n    email: 'anje.keizer@devias.io',\n    avatarUrl: '/unset.png',\n    phone: '908-691-3242',\n    createdAt: 1554930000000\n  },\n  {\n    id: uuid(),\n    name: 'Clarke Gillebert',\n    address: {\n      country: 'USA',\n      state: 'Texas',\n      city: 'Dallas',\n      street: '75247'\n    },\n    email: 'clarke.gillebert@devias.io',\n    phone: '972-333-4106',\n    avatarUrl: '/unset.png',\n    createdAt: 1554757200000\n  },\n  {\n    id: uuid(),\n    name: 'Adam Denisov',\n    address: {\n      country: 'USA',\n      state: 'California',\n      city: 'Bakerfield',\n      street: '317 Angus Road'\n    },\n    email: 'adam.denisov@devias.io',\n    phone: '858-602-3409',\n    avatarUrl: '/unset.png',\n    createdAt: 1554670800000\n  },\n  {\n    id: uuid(),\n    name: 'Ava Gregoraci',\n    address: {\n      country: 'USA',\n      state: 'California',\n      city: 'Redondo Beach',\n      street: '2188  Armbrester Drive'\n    },\n    email: 'ava.gregoraci@devias.io',\n    avatarUrl: '/unset.png',\n    phone: '415-907-2647',\n    createdAt: 1554325200000\n  },\n  {\n    id: uuid(),\n    name: 'Emilee Simchenko',\n    address: {\n      country: 'USA',\n      state: 'Nevada',\n      city: 'Las Vegas',\n      street: '1798  Hickory Ridge Drive'\n    },\n    email: 'emilee.simchenko@devias.io',\n    phone: '702-661-1654',\n    avatarUrl: '/unset.png',\n    createdAt: 1523048400000\n  },\n  {\n    id: uuid(),\n    name: 'Kwak Seong-Min',\n    address: {\n      country: 'USA',\n      state: 'Michigan',\n      city: 'Detroit',\n      street: '3934  Wildrose Lane'\n    },\n    email: 'kwak.seong.min@devias.io',\n    avatarUrl: '/unset.png',\n    phone: '313-812-8947'\n  },\n  {\n    id: uuid(),\n    name: 'Merrile Burgett',\n    address: {\n      country: 'USA',\n      state: 'Utah',\n      city: 'Salt Lake City',\n      street: '368 Lamberts Branch Road'\n    },\n    email: 'merrile.burgett@devias.io',\n    phone: '801-301-7894',\n    avatarUrl: '/unset.png',\n    createdAt: 1522702800000\n  }\n];\n","import React, { useState } from 'react';\nimport { makeStyles } from '@material-ui/styles';\n\nimport { UsersToolbar, UsersTable } from './components';\nimport mockData from './data';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(3)\n  },\n  content: {\n    marginTop: theme.spacing(2)\n  }\n}));\n\nconst UserList = () => {\n  const classes = useStyles();\n\n  const [users] = useState(mockData);\n\n  return (\n    <div className={classes.root}>\n      <UsersToolbar />\n      <div className={classes.content}>\n        <UsersTable users={users} />\n      </div>\n    </div>\n  );\n};\n\nexport default UserList;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { genfunction } from 'helpers'\nimport CancelIcon from '@material-ui/icons/Cancel'\n\nimport {\n    Card, CardContent, Typography, CardHeader, IconButton,\n    Table, TableBody, TableCell, TableRow, Hidden, Button\n} from '@material-ui/core';\n\nimport { NumberSpinner } from '../../../components/InputControls'\nimport { withRouter } from 'react-router'\nimport { useDispatch, useSelector } from 'react-redux';\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\nimport Moment from 'moment';\nimport { actionDeleteUniqueCoupon } from 'actions';\nimport { actionRemoveCoupon, actionShopCartResetError, actionCalendarNavReset } from 'actions';\n\n\nconst useStyles = makeStyles(theme => ({\n    root: {},\n    tourheaderbox: {\n        backgroundColor: theme.palette.primary.main,\n        color: theme.palette.primary.contrastText\n    },\n    tourheadertext: {\n        marginTop: \"8px\"\n    },\n    labelbold: {\n        fontWeight: \"bold\",\n        fontSize: \"18px\"\n    },\n    tablecell: {\n        padding: \"5px\"\n    }\n}));\n\nconst BookingTypeCard = props => {\n\n    const { className, products } = props;\n    const dispatch = useDispatch();\n    const displateState = useSelector(state => state.reducerDisplayAreas);\n    const [errorMsg, seterrorMsg] = useState(\"\");\n    const classes = useStyles();\n\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\n    const shopCartError = useSelector(state => state.reducerShopCart.error);\n\n\n    const CalculateMaxTickets = (TourEventID, TourProductID) => {\n\n        let event = products.find(event => event.TourEventID == TourEventID);\n\n        let fproduct = event.TourProducts.filter(p => p.TourProductID != TourProductID && p.AffectsCapacity);\n        let consumedQty = 0;\n        if (fproduct && fproduct.length > 0) {\n            consumedQty = fproduct.reduce((a, b) => {\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\n                let bqty = b.Quantity === undefined ? 0 : b.Quantity;\n                let newobj = { Quantity: aqty + bqty }\n                return newobj;\n            }).Quantity;\n        }\n        return event.TourProducts[0].MaximumTickets - consumedQty;\n    }\n\n    useEffect(() => {\n        if (shopCartError && shopCartError.length > 0) {\n            seterrorMsg(shopCartError)\n        }\n    }, [shopCartError])\n\n    const changeQuantityHandler = (reference, value) => {\n\n        if (ValidateQuanity(reference.eventId, reference.tourProductID, value)) {\n            props.changeQuantityHandler(reference, value)\n        }\n    }\n\n    const DeleteCouponsHolds = (CouponID) => {\n\n        let removeCoupon = false;\n\n        props.products.map(prod => {\n\n            if (prod.CouponItems.filter(x => x.CouponID == CouponID && x.isUniqueCoupon).length < 2) {\n                removeCoupon = true;\n            }\n\n        });\n\n        return removeCoupon;\n    }\n\n    const removeclickhandler = (TourEventId, TourProductID, couponItems) => {\n\n\n        let coupItem = couponItems ? couponItems.find(x => x.TourProductID == TourProductID && x.isUniqueCoupon) : null;\n\n        if (coupItem) {\n            if (DeleteCouponsHolds(coupItem.TourCouponID)) {\n                actionDeleteUniqueCoupon(dispatch, coupItem.CouponHoldRef);\n            }\n        }\n\n        CheckBeforeRemove(TourEventId, TourProductID);\n\n        actionRemoveCoupon(dispatch, TourEventId, TourProductID);\n\n        props.removeclickhandler(TourEventId, TourProductID);\n    }\n\n    const editClickHandler = (product) => {\n\n        actionCalendarNavReset(dispatch);\n        let bookType = bookingTypes.filter(x => x.BookingTypeID === product.BookingTypeID)[0];\n\n        props.history.push({\n\n            pathname: bookType.hasOwnProperty(\"UniqueBookingTypeID\") ? '/calendar/' + bookType.UniqueBookingTypeID : '/calendar/Area/' + bookType.DisplayArea,\n            event: product\n        })\n    }\n\n    const errorcancelhandle = () => {\n        seterrorMsg(\"\");\n        actionShopCartResetError(dispatch);\n    }\n\n    const CheckBeforeRemove = (TourEventId, TourProductID) => {\n        let event = products.find(event => event.TourEventID == TourEventId);\n        let MinTicket = event.TourProducts[0].MinimumTickets;\n        let MaxTicket = event.TourProducts[0].MaximumTickets;\n\n        let fproduct = event.TourProducts.filter(p => p.TourProductID != TourProductID & p.AffectsCapacity);\n        let consumedQty = 0;\n        if (fproduct && fproduct.length > 0) {\n            consumedQty = fproduct.reduce((a, b) => {\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\n                let bqty = b.Quantity === undefined ? 0 : b.Quantity;\n                let newobj = { Quantity: aqty + bqty }\n                return newobj;\n            }).Quantity;\n        }\n\n        if (consumedQty < MinTicket) {\n            seterrorMsg(\"Minimum tickets for this event is \" + MinTicket + \", please add more tickets.\")\n            return false;\n        }\n    }\n\n    const ValidateQuanity = (TourEventId, TourProductID, changedqty) => {\n\n        let event = products.find(event => event.TourEventID == TourEventId);\n        let MinTicket = event.TourProducts[0].MinimumTickets;\n        let MaxTicket = event.TourProducts[0].MaximumTickets;\n        let selectedTPQty;\n\n        if (event.TourProducts.find(x => x.TourProductID == TourProductID && x.AffectsCapacity)) {\n            selectedTPQty = event.TourProducts.find(x => x.TourProductID == TourProductID && x.AffectsCapacity).Quantity;\n        }\n\n        let fproduct = event.TourProducts.filter(p => p.AffectsCapacity);\n        let consumedQty = 0;\n        if (fproduct && fproduct.length > 0) {\n            consumedQty = fproduct.reduce((a, b) => {\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\n                let bqty = b.Quantity === undefined ? 0 : b.Quantity;\n                let newobj = { Quantity: aqty + bqty }\n                return newobj;\n            }).Quantity;\n        }\n\n        let newQty = changedqty - selectedTPQty;\n        consumedQty = consumedQty + newQty;\n\n        if (event.SeatsAvailable == 0 || event.BookNowOption != \"Book Now\") {\n            seterrorMsg(\"Tickets not longer available, please choose another time\");\n            return false;\n        }\n        else if (consumedQty > event.SeatsAvailable) {\n            seterrorMsg(\"Maximum of \" + event.SeatsAvailable + \" tickets available\");\n            return false;\n        }\n        else if (consumedQty < MinTicket) {\n            seterrorMsg(\"Minimum tickets per order is \" + MinTicket)\n            return false;\n        }\n        else if (consumedQty > MaxTicket) {\n            seterrorMsg(\"Maximum of \" + MaxTicket + \" tickets allowed\")\n            return false;\n        }\n        else {\n            return true;\n        }\n\n    }\n\n\n    const VisibleStartAndEndTime = (bookingtypeID, starttime) => {\n\n        let time = \"\";\n\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == bookingtypeID)[0];\n\n        if (bookType) {\n            if (bookType.ShowStartTime && bookType.ShowEndTime) {\n                time += Moment(starttime.EventStartDateTime).format('hh:mm a') + ' - ' + Moment(starttime.EventEndDateTime).format('hh:mm a');\n            }\n\n            if (bookType.ShowStartTime && !bookType.ShowEndTime) {\n                time += Moment(starttime.EventStartDateTime).format('hh:mm a');\n            }\n\n            if (!bookType.ShowStartTime && bookType.ShowEndTime) {\n                time += Moment(starttime.EventEndDateTime).format('hh:mm a');\n            }\n        }\n\n        return time;\n\n    }\n\n    const ShowWebDisplayName = (bookingtypeID, webName) => {\n\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == bookingtypeID)[0];\n        return bookType ? webName : '';\n    }\n    return (\n        products.map(product => (\n            <Card\n                key={product.TourEventID}\n                className={classes.root + ' ' + classes.tourbox}\n            >\n                <CardHeader className={classes.tourheaderbox}\n                    action={<Typography variant=\"h5\" className={classes.tourheadertext} color=\"inherit\" component=\"h5\">{window.matchMedia(\"(max-width: 500px)\").matches ? '' : genfunction.GetEventDate(product.EventStartDateTime)}</Typography>}\n                    title={window.matchMedia(\"(max-width: 500px)\").matches ? ShowWebDisplayName(product.BookingTypeID, product.EventName) + ' ' + VisibleStartAndEndTime(product.BookingTypeID, product) + '  ' + genfunction.GetEventDate(product.EventStartDateTime) : ShowWebDisplayName(product.BookingTypeID, product.EventName) + ' ' + VisibleStartAndEndTime(product.BookingTypeID, product)}\n                    titleTypographyProps={{ color: \"inherit\" }}\n                    style={window.matchMedia(\"(max-width: 500px)\").matches ? { textAlign: 'center' } : { textAlign: 'left' }}\n                />\n                <CardContent>\n                    <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\n                    <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\n                        <TableBody>\n                            {product.TourProducts.map(item => (\n                                <TableRow key={item.TourProductID}>\n                                    <TableCell className={classes.tablecell} align=\"left\">\n                                        {!genfunction.IsEditEvent(bookingTypes, product) ?\n\n                                            <IconButton\n                                                edge=\"end\"\n                                                size=\"small\"\n                                                onClick={() => removeclickhandler(product.TourEventID, item.TourProductID, product.CouponItems)}\n                                            >\n                                                <CancelIcon\n                                                    color={\"error\"}\n                                                />\n                                            </IconButton>\n                                            : null\n\n                                        }\n                                    </TableCell>\n                                    <TableCell className={classes.tablecell}>{item.TourProductName}</TableCell>\n                                    <TableCell className={classes.tablecell} align=\"right\">\n\n                                        {genfunction.IsEditEvent(bookingTypes, product) ?\n                                            <NumberSpinner refrence={{ eventId: product.TourEventID, tourProductID: item.TourProductID, eventCoupons: product.CouponItems }}\n                                                value={parseInt(item.Quantity)}\n                                                disabled={true}\n                                                minValue={parseInt(item.Quantity)}\n                                                maxValue={parseInt(item.Quantity)}\n                                                changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}\n                                            ></NumberSpinner>\n\n                                            :\n                                            <NumberSpinner refrence={{ eventId: product.TourEventID, tourProductID: item.TourProductID, eventCoupons: product.CouponItems }}\n                                                value={parseInt(item.Quantity)}\n                                                disabled={genfunction.UniqueCouponApplied(product.CouponItems, item.TourProductID, product.TourEventID)}\n                                                minValue={1} maxValue={item.AffectsCapacity ? CalculateMaxTickets(product.TourEventID, item.TourProductID) : 999} steps={1}\n                                                changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}></NumberSpinner>\n\n                                        }\n                                    </TableCell>\n                                    <Hidden smDown>\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(item.PriceMatrix[0].Price)}</TableCell>\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(item.Quantity, item.PriceMatrix ? item.PriceMatrix[0].Price : 0))}</TableCell>\n                                    </Hidden>\n                                    <Hidden smUp>\n                                        <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(item.Quantity, item.PriceMatrix && item.PriceMatrix.length > 0 ? item.PriceMatrix[0].Price : 0))}</TableCell>\n                                    </Hidden>\n                                    <Hidden xsDown mdUp>\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(item.PriceMatrix[0].Price)}</TableCell>\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(item.Quantity, item.PriceMatrix ? item.PriceMatrix[0].Price : 0))}</TableCell>\n                                    </Hidden>\n                                </TableRow>\n                            ))}\n\n                            <TableRow>\n                                <TableCell className={classes.tablecell} colSpan={2} />\n                                <TableCell className={classes.tablecell} colSpan={1}>Subtotal</TableCell>\n                                <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(product.TicketAmount)}</TableCell>\n                            </TableRow>\n                            <TableRow>\n                                <TableCell className={classes.tablecell} colSpan={2} />\n                                <TableCell className={classes.tablecell} colSpan={1}>Tax</TableCell>\n                                <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(product.TaxAmount)}</TableCell>\n                            </TableRow>\n                            <TableRow>\n\n                                <TableCell className={classes.tablecell} colSpan={2}  >\n                                    {genfunction.IsEditEvent(bookingTypes, product) ?\n                                        <Button variant=\"contained\" size=\"small\" color=\"primary\"\n                                            style={{ marginLeft: \"15px\" }}\n                                            onClick={() => editClickHandler(product)} >\n                                            Edit\n                                        </Button> : null}\n                                </TableCell>\n\n                                <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}>Total</TableCell>\n                                <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(product.TotalAmount)}</TableCell>\n                            </TableRow>\n\n                        </TableBody>\n                    </Table>\n                </CardContent>\n            </Card >\n\n        ))\n    );\n};\n\nBookingTypeCard.propTypes = {\n    products: PropTypes.array.isRequired,\n    removeclickhandler: PropTypes.func\n};\n\nexport default withRouter(BookingTypeCard);\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport * as underscore from 'underscore'\r\nimport {\r\n    TableCell, TableRow, IconButton\r\n} from '@material-ui/core';\r\nimport { genfunction } from 'helpers';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport { actionRemoveCoupon, actionShopCartRemoveGATicketCoupons } from 'actions';\r\nimport { actionDeleteUniqueCoupon } from 'actions';\r\n\r\nimport { useDispatch } from 'react-redux';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    couponAmount: {\r\n        color: 'red'\r\n    }\r\n}));\r\n\r\nconst CouponItems = (props) => {\r\n\r\n    const dispatch = useDispatch();\r\n    const classes = useStyles();\r\n\r\n    const DeleteCouponsHolds = (CouponID) => {\r\n        if (props.products) {\r\n            if (props.products.CouponItems.filter(x => x.CouponID == CouponID && x.isUniqueCoupon).length < 2) {\r\n                return true;\r\n            }\r\n        }\r\n        return false;\r\n    }\r\n\r\n    const removeclickhandler = (eventid, productid, couponID, couponRefHold) => {\r\n        if (couponRefHold !== null) {\r\n            if (DeleteCouponsHolds(couponID)) {\r\n                actionDeleteUniqueCoupon(dispatch, couponRefHold);\r\n            }\r\n        }\r\n        actionRemoveCoupon(dispatch, eventid, productid)\r\n    }\r\n\r\n    const getGATicketCoupon = () => {\r\n        let filter = props.gatickets.filter(ticket => ticket.CouponCodeApplied || ticket.CouponCodeApplied != null)\r\n        let group = underscore.groupBy(filter, (ticket) => { return ticket.CouponCodeApplied; });\r\n        return group;\r\n    }\r\n\r\n    const getGATicketDiscount = (couponcode) => {\r\n        let filter = props.gatickets.filter(ticket => ticket.CouponCodeApplied === couponcode)\r\n        var totalDiscount = underscore.reduce(filter, ((memoizer, ticket) => memoizer + (ticket.OriginalTotalAmount - ticket.TotalAmount)), 0);\r\n        return totalDiscount;\r\n    }\r\n\r\n    const getGATicketAmount = () => {\r\n        var totalAmount = underscore.reduce(props.gatickets, ((memoizer, ticket) => memoizer + ticket.OriginalTotalAmount), 0);\r\n        return totalAmount;\r\n    }\r\n\r\n    const getDonationProductAmount = () => {\r\n        let total = 0;\r\n        props.donationProducts.forEach(product => {\r\n            total += product.Amount;\r\n        });\r\n        return total;\r\n    }\r\n\r\n    const removeGATicketCouponClickHandler = (couponCode) => {\r\n        actionShopCartRemoveGATicketCoupons(dispatch, couponCode);\r\n    }\r\n\r\n    return (\r\n        <>\r\n            {/* TourEventCoupon */}\r\n            {props.products ?\r\n                <TableRow key={props.products.TourEventID}>\r\n                    <TableCell>{props.products.EventName}</TableCell>\r\n                    <TableCell align=\"right\">{genfunction.ccyFormat(\r\n                        genfunction.IsNotFullPay(props.products.PaymentOption) ? props.products.TotalSelectedAmount : props.products.TotalAmount)}</TableCell>\r\n                </TableRow> : null}\r\n            {props.products && props.products.CouponItems.length > 0 ?\r\n                props.products.CouponItems.map(e =>\r\n                    <TableRow >\r\n                        <TableCell className={classes.tablecell} align=\"left\">\r\n                            <IconButton\r\n                                edge=\"end\"\r\n                                size=\"small\"\r\n                                onClick={() => removeclickhandler(e.TourEventID, e.TourProductID, e.CouponID, e.CouponHoldRef)}>\r\n                                <CancelIcon color={\"error\"} />\r\n                            </IconButton>{'      ' + e.ApplyDiscountTourProductName + '      (' + e.UniqueCouponCode + ')'}\r\n                        </TableCell>\r\n                        <TableCell align=\"right\" className={classes.couponAmount}>-{genfunction.ccyFormat(\r\n                            genfunction.IsNotFullPay(e.PaymentOption) ? e.TotalSelectedAmount : e.TotalAmount)}</TableCell>\r\n                    </TableRow>\r\n                ) : null\r\n            }\r\n\r\n            {props.donationProducts && props.donationProducts.length > 0 ?\r\n                <TableRow key={\"DonationProducts\"}>\r\n                    <TableCell>{\"Donations\"}</TableCell>\r\n                    <TableCell align=\"right\">{genfunction.ccyFormat(getDonationProductAmount())}</TableCell>\r\n                </TableRow> : null}\r\n\r\n            {/* GATicketCoupon */}\r\n            {props.gatickets && props.gatickets.length > 0 ?\r\n                <TableRow key={\"GATicket\"}>\r\n                    <TableCell>{\"Tickets\"}</TableCell>\r\n                    <TableCell align=\"right\">{genfunction.ccyFormat(getGATicketAmount())}</TableCell>\r\n                </TableRow> : null}\r\n            {props.gatickets && props.gatickets.length > 0 ?\r\n                underscore.map(getGATicketCoupon(), (items, groupby) => {\r\n                    return (\r\n                        <TableRow key={groupby}>\r\n                            <TableCell className={classes.tablecell} align=\"left\">\r\n                                <IconButton\r\n                                    edge=\"end\"\r\n                                    size=\"small\"\r\n                                    onClick={() => removeGATicketCouponClickHandler(groupby)}\r\n                                >\r\n                                    <CancelIcon color={\"error\"} />\r\n                                </IconButton>{'Ticket Coupon (' + groupby + \")\"}\r\n                            </TableCell>\r\n                            <TableCell align=\"right\">-{genfunction.ccyFormat(getGATicketDiscount(groupby))}</TableCell>\r\n                        </TableRow>\r\n                    )\r\n                }) : null}\r\n\r\n\r\n            {props.giftcards ?\r\n                <TableRow key={props.giftcards.ProductID}>\r\n                    <TableCell>{props.giftcards.ProductName}</TableCell>\r\n                    <TableCell align=\"right\">{genfunction.ccyFormat(props.giftcards.CartTotalAmount)}</TableCell>\r\n                </TableRow> : null}\r\n\r\n\r\n        </>\r\n    );\r\n}\r\n\r\nexport default CouponItems;","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles, makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport {\r\n    Card, CardContent, CardHeader, Grid, IconButton,\r\n    Table, TableBody, TableCell, TableRow, Typography\r\n} from '@material-ui/core';\r\nimport CouponItems from '../components/CouponItems';\r\nimport { actionShopCartResetDonation, actionShopCartRemoveCouponFromMembershiptype } from 'actions';\r\n\r\nimport { actionDeleteGiftCardHold } from 'actions';\r\nimport { actionGetTransactionFee } from 'actions';\r\n\r\nconst { TransactionFeeProductID, ApplyTransactionFee } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    paybutton: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        width: \"100%\",\r\n        marginTop: \"10px\"\r\n    },\r\n    spacer: {\r\n        flexGrow: 1\r\n    },\r\n    row: {\r\n        height: '42px',\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        marginTop: theme.spacing(1)\r\n    },\r\n    center: {\r\n        position: \"relative\",\r\n        margin: \"auto\",\r\n        bottom: \"70%\"\r\n    },\r\n    diplaynone: {\r\n        display: \"none\"\r\n    },\r\n    textaligncenter: {\r\n        textAlign: \"center\"\r\n    },\r\n    hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    cashlessvalue: {\r\n        color: theme.palette.error.main\r\n    },\r\n    couponAmount: {\r\n        color: 'red'\r\n    }\r\n}));\r\n\r\nconst PayableCard = props => {\r\n    const { products, cashless, membershipPackages, gatickets, orderProducts, donationProducts } = props;\r\n\r\n    let hasitems = (products && products.length) > 0\r\n        || (membershipPackages && membershipPackages.length > 0)\r\n        || (gatickets && gatickets.length > 0)\r\n        || (orderProducts && orderProducts.length > 0)\r\n        || (donationProducts && donationProducts.length > 0);\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n\r\n\r\n    if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n        if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n            hasitems = true;\r\n        }\r\n    }\r\n\r\n    const removecashlesskhandler = (GiftcardHoldRef) => {\r\n        actionDeleteGiftCardHold(dispatch, GiftcardHoldRef);\r\n    }\r\n\r\n    const RemoveDonation = () => {\r\n        actionShopCartResetDonation(dispatch);\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (ApplyTransactionFee && TransactionFeeProductID > 0) {\r\n            actionGetTransactionFee(dispatch, TransactionFeeProductID, 'transactionfee');\r\n        }\r\n    }, [])\r\n\r\n    const GetMembershipTypeDiscount = (memTypeID) => {\r\n        let filter = membershipPackages[0].MembershipProducts.filter(x => x.MembershipTypeID === memTypeID)[0];\r\n        var totalDiscount = 0;\r\n\r\n        if (filter.MembershipType == \"AddOn\") {\r\n            totalDiscount = filter.CouponCodeIncTax;\r\n        }\r\n        else {\r\n            totalDiscount = filter.Users.length * filter.CouponCodeIncTax;\r\n        }\r\n\r\n        return totalDiscount;\r\n    }\r\n\r\n    return (\r\n        <Grid>\r\n            <Grid item xs={12}>\r\n                <Card>\r\n                    <CardHeader className={classes.tourheaderbox}\r\n                        title=\"To Pay\"\r\n                        titleTypographyProps={{ color: \"inherit\" }}\r\n                    />\r\n                    <CardContent>\r\n                        <Grid container>\r\n                            <Grid container item xs={12} className={!hasitems ? classes.hidden : \"\"} >\r\n                                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                                    <TableBody>\r\n\r\n                                        {donation.isdonationApplied ? <TableRow key={donation.price}>\r\n                                            <TableCell className={classes.tablecell} align=\"left\">\r\n                                                <IconButton\r\n                                                    edge=\"end\"\r\n                                                    size=\"small\"\r\n                                                    onClick={() => RemoveDonation()}>\r\n                                                    <CancelIcon color={\"error\"} />\r\n                                                </IconButton>{'      ' + donation.productName}\r\n                                            </TableCell>\r\n                                            <TableCell align=\"right\">{genfunction.ccyFormat(parseFloat(donation.price))}</TableCell>\r\n                                        </TableRow> : null}\r\n\r\n                                        {products.map(product => (\r\n                                            <CouponItems key={product.TourEventID} products={product} membershipPackages={membershipPackages} />\r\n                                        ))}\r\n\r\n                                        {gatickets && gatickets.length > 0 ?\r\n                                            <CouponItems key={\"GATicket\"} gatickets={gatickets} />\r\n                                            : \"\"}\r\n\r\n                                        {donationProducts && donationProducts.length > 0 ?\r\n                                            <CouponItems key={\"Donations\"} donationProducts={donationProducts} />\r\n                                            : \"\"}\r\n\r\n                                        {giftcards.giftcards && giftcards.giftcards.length > 0 ?\r\n                                            giftcards.giftcards.filter(x => x.CartQty > 0 || (x.MaxPrice !== undefined && x.TotalAmount > 0)).map(gc => (\r\n                                                <CouponItems key={gc.ProductID} giftcards={gc} />\r\n                                            )) : null}\r\n\r\n                                        {orderProducts && orderProducts.length > 0 ?\r\n                                            <TableRow key={props.products.TourEventID}>\r\n                                                <TableCell>{\"Order\"}</TableCell>\r\n                                                <TableCell align=\"right\">{genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice(orderProducts).total)}</TableCell>\r\n                                            </TableRow> : \"\"}\r\n\r\n                                        {membershipPackages && membershipPackages.length > 0 && membershipPackages[0].MembershipProducts ?\r\n                                            <CouponItems key={\"MembershipTypes\"} MembershipTypes={membershipPackages[0].MembershipProducts} />\r\n                                            : \"\"}\r\n\r\n                                        {membershipPackages && membershipPackages.length > 0 ?\r\n                                            membershipPackages.map(pack => (\r\n                                                pack.MembershipProducts && pack.MembershipProducts.filter(x => x.MembershipType === \"Membership\" && x.Users && x.Users.length > 0 || x.MembershipType === \"AddOn\" && x.Quantity > 0)\r\n                                                    .map(memType => (\r\n                                                        <>\r\n                                                            <TableRow key={memType.MembershipTypeID}>\r\n                                                                <TableCell align=\"left\">\r\n\r\n                                                                    {'      ' + memType.ProductName}\r\n                                                                </TableCell>\r\n                                                                <TableCell align=\"right\" >{genfunction.ccyFormat((memType.Users !== undefined ? memType.TotalAmount * (memType.Users ? memType.Users.length : 0) : memType.TotalAmount))}</TableCell>\r\n                                                            </TableRow>\r\n                                                            {memType.hasOwnProperty('CouponCodeApplied') && memType.CouponCodeApplied.length > 0 ?\r\n                                                                <TableRow >\r\n                                                                    <TableCell className={classes.tablecell} align=\"left\">\r\n                                                                        <IconButton\r\n                                                                            edge=\"end\"\r\n                                                                            size=\"small\"\r\n                                                                            onClick={() => actionShopCartRemoveCouponFromMembershiptype(dispatch, memType.MembershipTypeID)}>\r\n                                                                            <CancelIcon color={\"error\"} />\r\n                                                                        </IconButton>{memType.ProductName + '(' + memType.CouponCodeApplied + \")\"}\r\n                                                                    </TableCell>\r\n                                                                    {memType.hasOwnProperty('NoFinancialDis') && memType.NoFinancialDis ?\r\n                                                                        <TableCell align=\"right\" className={classes.couponAmount}>Time Extension applied</TableCell>\r\n                                                                        :\r\n                                                                        <TableCell align=\"right\" className={classes.couponAmount}>- {genfunction.ccyFormat(GetMembershipTypeDiscount(memType.MembershipTypeID))}</TableCell>\r\n                                                                    }\r\n\r\n                                                                </TableRow>\r\n                                                                : ''}\r\n                                                        </>\r\n\r\n                                                    ))\r\n                                            )\r\n                                            ) : null}\r\n\r\n                                        {showTransFee && transactionfee.transactionFee[0] && transactionfee.transactionFee[0].Price > 0 && transactionfee.transactionFee !== \"nocontent\" ? <TableRow key={transactionfee.transactionFee[0].Price}>\r\n\r\n                                            <TableCell className={classes.tablecell} align=\"left\">\r\n                                                <IconButton\r\n                                                    edge=\"end\"\r\n                                                    size=\"small\"\r\n                                                    disabled={true}>\r\n                                                </IconButton>{transactionfee.transactionFee[0].ProductName}\r\n                                            </TableCell>\r\n                                            <TableCell align=\"right\">{genfunction.ccyFormat(parseFloat(genfunction.TransactionFee(products, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts)))}</TableCell>\r\n                                        </TableRow> : null}\r\n\r\n                                        {cashless.map(objcashless => (\r\n                                            <TableRow key={objcashless.GiftcardNo}>\r\n                                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                                    <IconButton\r\n                                                        edge=\"end\"\r\n                                                        size=\"small\"\r\n                                                        onClick={() => removecashlesskhandler(objcashless.GiftcardHoldRef)}\r\n                                                    >\r\n                                                        <CancelIcon color={\"error\"} />\r\n                                                    </IconButton>\r\n                                                    {'      ' + 'Giftcard Applied - ' + genfunction.maskGiftCardNo(objcashless.GiftcardNo)}</TableCell>\r\n                                                <TableCell align=\"right\" className={classes.cashlessvalue}>{'-' + genfunction.ccyFormat(objcashless.HoldAmount)}</TableCell>\r\n                                            </TableRow>\r\n                                        ))}\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.labelbold}>Amount To Pay</TableCell>\r\n                                            <TableCell className={classes.labelbold} align=\"right\">{genfunction.ccyFormat(genfunction.subproducttotal(products, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts))}</TableCell>\r\n                                        </TableRow>\r\n                                    </TableBody>\r\n                                </Table>\r\n                            </Grid>\r\n                            <div className={classes.center + \" \" + (hasitems ? classes.diplaynone : \"\")}>\r\n                                <div className={classes.textaligncenter}>\r\n                                    <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">No item in the cart</Typography>\r\n                                </div>\r\n                            </div>\r\n                        </Grid>\r\n                    </CardContent>\r\n                </Card>\r\n            </Grid>\r\n\r\n        </Grid>\r\n    );\r\n};\r\n\r\nPayableCard.propTypes = {\r\n    products: PropTypes.array.isRequired\r\n};\r\n\r\nexport default PayableCard;\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles, makeStyles } from '@material-ui/styles';\r\nimport { CircularProgress, Typography } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    center: {\r\n        position: \"relative\",\r\n        margin: \"auto\",\r\n        bottom: \"70%\",\r\n        height: \"0px\"\r\n    },\r\n    diplaynone: {\r\n        display: \"none\"\r\n    },\r\n    textaligncenter: {\r\n        textAlign: \"center\"\r\n    }\r\n}));\r\n\r\nconst ProcessingBox = props => {\r\n    const { isshow, title, text1, text2 } = props;\r\n    const classes = useStyles();\r\n    return (\r\n\r\n        <div className={classes.center + \" \" + (!isshow ? classes.diplaynone : \"\")}>\r\n            <div className={classes.textaligncenter}>\r\n                <CircularProgress color=\"primary\" />\r\n                <Typography display=\"block\" color=\"primary\" gutterBottom={true} variant=\"h4\" component=\"h4\">{title}</Typography>\r\n                <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{text1}</Typography>\r\n                <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{text2}</Typography>\r\n            </div>\r\n        </div>\r\n\r\n    );\r\n};\r\n\r\nProcessingBox.propTypes = {\r\n    isshow: PropTypes.bool.isRequired,\r\n    title: PropTypes.string.isRequired,\r\n    text1: PropTypes.string.isRequired,\r\n    text2: PropTypes.string.isRequired,\r\n};\r\n\r\nexport default ProcessingBox;\r\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/styles';\nimport { Typography, Button, Card, CardHeader, CardContent, CardActions, Grid, Link } from '@material-ui/core';\nimport { CheckCircleOutlineOutlined } from '@material-ui/icons';\nimport { genfunction } from '../../../helpers'\nimport theme from '../../../theme'\nimport DataAccess from '../../../api/constants';\nimport Moment from 'moment';\nimport { actionResetBookingTypes } from 'actions';\nimport { useDispatch, useSelector } from 'react-redux';\n\nconst { CustomMessageforconfirmpage, BookingTypeBarcodeHeader, PaymentCompleteTitle, ConfirmationReceiptMessage,\n    DisableMemberPassBarcode, RedirectWaiverSigner, WaiverSignMessage, ShowReadableBarcode } = window['runConfig'];\n\nconst useStyles = makeStyles(theme => ({\n    center: {\n        position: \"relative\",\n        margin: \"auto\",\n        maxWidth: \"400px\"\n    },\n    diplaynone: {\n        display: \"none\"\n    },\n    textaligncenter: {\n        textAlign: \"center\"\n    },\n    headerbox: {\n        backgroundColor: theme.palette.primary.main,\n        color: theme.palette.primary.contrastText,\n        textAlign: \"left\"\n    },\n    footerbox: {\n        backgroundColor: theme.palette.primary.main,\n        color: theme.palette.primary.contrastText,\n        textAlign: \"left\",\n        padding: \"16px\"\n    },\n    headertext: {\n        marginTop: \"8px\",\n        marginRight: \"10px\"\n    },\n    image: {\n        border: \"5px solid white\"\n    }\n\n}));\n\nconst PaymentCompletebox = props => {\n    const { isshow, transaction } = props;\n    const classes = useStyles();\n    const dispatch = useDispatch();\n\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\n    const ALLGATickets = useSelector(state => state.reducerGaTicket.GATickets);\n\n    const onClickHandler = () => {\n        actionResetBookingTypes(dispatch);\n        props.onClickHandler()\n    }\n\n    const VisibleStartAndEndTime = (tourEvent) => {\n\n        let time = \"\";\n\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == tourEvent.BookingTypeID)[0];\n\n        if (bookType) {\n            if (bookType.ShowStartTime && bookType.ShowEndTime) {\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventStartDateTime) + ' - ' + Moment(tourEvent.EventEndDateTime).format('hh:mm a');\n            }\n\n            if (bookType.ShowStartTime && !bookType.ShowEndTime) {\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventStartDateTime);\n            }\n\n            if (!bookType.ShowStartTime && bookType.ShowEndTime) {\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventEndDateTime);\n            }\n\n            if (!bookType.ShowStartTime && !bookType.ShowEndTime) {\n                time += genfunction.GetEventDateReceiptFormatwithoutTime(tourEvent.EventStartDateTime);\n            }\n        }\n\n        return time;\n    }\n\n    const ShowWebDisplayName = (tourEvent) => {\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == tourEvent.BookingTypeID)[0];\n        return bookType ? tourEvent.EventName : '';\n    }\n\n    const ShowTicketDisplayName = (ticket) => {\n        const t = ALLGATickets.find(x => x.ProductID === ticket.ProductID);\n        return t && t.ProductName ? t.ProductName : '';\n    }\n\n    const ShowWaiverLinks = (tourEvent) => {\n        const bookType = bookingTypes.find(x => x.BookingTypeID == tourEvent.BookingTypeID);\n        return bookType && bookType.WaiverRequired;\n    }\n\n    const getEvent = (toureventid) => {\n        if (toureventid)\n            return transaction.Events.find(x => x.TourEventID == toureventid)\n    }\n\n    const getGATickets = () => {\n        const tickets = transaction.Products.filter(ticket => ticket.GATickets && ticket.GATickets.length > 0);\n        return tickets;\n    }\n\n    const GetGiftCards = () => {\n        let giftcards = transaction.Products.filter(x => x.Giftcards && x.Giftcards.length > 0);\n        return giftcards;\n    }\n    const groupbyTourEvent = () => {\n        let products = [];\n        transaction.Products.map(item => {\n            let itemobj = products.find(x => x.TourEventID == item.TourEventID);\n            if (itemobj == null || itemobj == undefined) {\n                if (item.TourEventID !== undefined) {\n                    products.push(item);\n                }\n            }\n        })\n        return products;\n    }\n\n    const GetMembershipPackage = () => {\n\n        let membershippackage = [];\n        let memPack = {\n            packagename: transaction.MembershipPackages[0] && transaction.MembershipPackages[0].hasOwnProperty(\"PackageName\") ? transaction.MembershipPackages[0].PackageName : \"\",\n            expiry: '',\n            primaryMemberNo: 0\n        };\n\n        if (transaction.Products && transaction.Products.length > 0) {\n            transaction.Products.map(item => {\n                if (item.hasOwnProperty(\"MemberCustomerID\") && item.hasOwnProperty(\"MembershipPackageID\")) {\n                    if (item.MemberCustomerID === transaction.CustomerID) {\n\n                        memPack.expiry = item.MembershipExpiryDate;\n                        memPack.primaryMemberNo = item.MemberNo;\n\n                        if (membershippackage.length == 0) {\n                            membershippackage.push(memPack);\n                        }\n                    }\n                }\n            });\n        }\n\n        return membershippackage;\n    }\n\n    const getProductOptions = (product) => {\n        if (product.Options) {\n\n            let productWithOptions = product.Options.filter(x => x.Products && x.Products.length > 0 && x.Products.find(y => y.IsSelected == true) != undefined);\n            if (productWithOptions && productWithOptions.length > 0) {\n                return (\n                    productWithOptions.map(option => {\n                        return (\n                            option.Products.map(opproduct => {\n                                return (\n                                    opproduct.IsSelected ?\n                                        <Typography variant='subtitle2'>\n                                            {genfunction.replaceEscapeCharacters(opproduct.ProductName)}\n                                        </Typography> : \"\"\n                                )\n                            }))\n                    })\n                );\n            }\n        }\n\n        return \"\";\n    }\n\n    const hasAnyBarcodesToShow = () => {\n        let hasBarcodes = false;\n        if (getGATickets().length > 0 || groupbyTourEvent().length > 0 || GetMembershipPackage().length > 0 || GetGiftCards().length > 0) {\n            hasBarcodes = true;\n        }\n        return hasBarcodes;\n    }\n\n    if (transaction.hasOwnProperty('Products') == false)\n        return (\"\");\n    else {\n\n        let amounts = genfunction.GetTotalAmount(transaction.Products)\n\n        return (\n            <div className={classes.center + \" \" + (!isshow ? classes.diplaynone : \"\")}>\n                <div className={classes.textaligncenter}>\n                    <CheckCircleOutlineOutlined style={{ fontSize: 80, fontWeight: \"lighter\", color: theme.palette.success.main }}></CheckCircleOutlineOutlined>\n                    <Typography display=\"block\" color=\"primary\" gutterBottom={true} variant=\"h4\" component=\"h4\">{PaymentCompleteTitle}</Typography>\n                    <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\" style={{ marginBottom: \"30px\" }}>Thank you {transaction.Customer.FirstName + \" \" + transaction.Customer.LastName}!</Typography>\n                    <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ConfirmationReceiptMessage}</Typography>\n                    <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{transaction.Customer.CustomerAddress[0].Email}</Typography>\n                    {transaction.TabID ?\n                        <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{\"Order #: \" + transaction.TabID + \" | \" + \"Location : \" + transaction.TabLocationName}</Typography>\n                        : \"\"}\n                    <Card style={{ borderRadius: \"0px\" }} >\n                        <CardHeader className={classes.headerbox}\n                            action={<Typography variant=\"h5\" className={classes.headertext} color=\"inherit\" component=\"h5\">Receipt # {transaction.ReceiptNo}</Typography>}\n                            title={\"Transaction Summary\"}\n                            titleTypographyProps={{ color: \"inherit\" }}\n                        />\n                        <CardContent>\n                            <Grid container spacing={1}>\n                                <Grid item xs={12}>\n                                    {transaction.OrderProducts.map(product => {\n                                        return (\n                                            <Grid key={product.ProductName + \"_Food_ShopCart\"} container item xs={12}>\n                                                <Grid item xs={6} className={classes.productText} align=\"left\">\n                                                    <Typography variant='h6'>\n                                                        {product.Quantity}x{genfunction.replaceEscapeCharacters(product.ProductName)}\n                                                    </Typography>\n                                                    {getProductOptions(product)}\n                                                </Grid>\n                                                <Grid item xs={6} className={classes.productText} align=\"right\">\n                                                    <Typography variant='h6'>\n                                                        {genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice([product]).subtotal)}\n                                                    </Typography>\n                                                </Grid>\n                                            </Grid>\n                                        )\n                                    })}\n                                </Grid>\n                                <Grid item xs={6} style={{ textAlign: \"left\" }}>\n                                    <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Total Sales</Typography>\n                                    <Typography variant=\"h5\" color=\"inherit\" component=\"h5\">Total Tax</Typography>\n                                </Grid>\n                                <Grid item xs={6} style={{ textAlign: \"right\" }} >\n                                    <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.ccyFormat(amounts.totalExclTax)}</Typography>\n                                    <Typography variant=\"h5\" color=\"inherit\" component=\"h5\">{genfunction.ccyFormat(amounts.totalTax)}</Typography>\n                                </Grid>\n                            </Grid>\n                        </CardContent>\n                        <CardActions disableSpacing className={classes.footerbox}>\n                            <Grid container>\n                                <Grid item xs={6}>\n                                    <Typography variant=\"h5\" color=\"inherit\" component=\"h5\">Total Paid</Typography>\n                                </Grid>\n                                <Grid item xs={6} style={{ textAlign: \"right\" }} >\n                                    <Typography variant=\"h5\" color=\"inherit\" component=\"h5\">{genfunction.ccyFormat(amounts.totalInclTax)}</Typography>\n                                </Grid>\n                            </Grid>\n                        </CardActions>\n                    </Card>\n                    {hasAnyBarcodesToShow() ?\n                        <Card style={{ marginTop: \"50px\", borderRadius: \"0px\" }}>\n                            <CardHeader className={classes.headerbox}\n                                title={BookingTypeBarcodeHeader}\n                                titleTypographyProps={{ color: \"inherit\" }}\n                            />\n                            <CardContent style={{ textAlign: \"center\" }}>\n                                {\n                                    getGATickets().length > 0 ? getGATickets().map(ticket => (\n                                        ticket.GATickets.map(gaticket => (\n                                            <div>\n                                                <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ShowTicketDisplayName(ticket)}</Typography>\n                                                <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=' + gaticket.Barcode + \"&includeLable=\" + ShowReadableBarcode} />\n                                            </div>\n                                        ))\n                                    )) : null\n                                }\n                                {\n                                    groupbyTourEvent().length > 0 ? groupbyTourEvent().map(item => (\n\n                                        <div>\n\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ShowWebDisplayName(getEvent(item.TourEventID))}</Typography>\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"subtitle2\" component=\"p\">{VisibleStartAndEndTime(getEvent(item.TourEventID))}</Typography>\n                                            {ShowWaiverLinks(getEvent(item.TourEventID)) ?\n                                                <Link href={RedirectWaiverSigner + item.BookingID + \"/\" + transaction.Customer.LastName + \"/\" + transaction.Customer.CustomerAddress[0].Email} target=\"_blank\" variant=\"subtitle2\" >{WaiverSignMessage}</Link>\n                                                : \"\"}\n                                            <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=\\\\' + item.BookingID + \"&includeLable=\" + ShowReadableBarcode} />\n                                        </div>\n                                    ))\n                                        : null\n                                }\n\n                                {\n                                    GetMembershipPackage().length > 0 && GetMembershipPackage().map(item => (\n                                        <div>\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{item.packagename}</Typography>\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"subtitle2\" component=\"p\">{'Expire : ' + genfunction.GetEventDateReceiptFormatwithoutTime(item.expiry)}</Typography>\n                                            {DisableMemberPassBarcode ?\n                                                <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=' + item.primaryMemberNo + \"&includeLable=\" + ShowReadableBarcode} /> : null}\n                                        </div>\n                                    ))\n                                }\n                                {\n                                    GetGiftCards().length > 0 ? GetGiftCards().map(giftcard => (\n                                        giftcard.Giftcards.map(gc => (\n                                            <div>\n                                                <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{giftcard.ProductName}</Typography>\n                                                <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ShowTicketDisplayName(gc.GiftcardNo)}</Typography>\n                                                <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=' + gc.GiftcardNo + \"&includeLable=\" + ShowReadableBarcode} />\n                                            </div>\n                                        ))\n                                    )) : null\n                                }\n                            </CardContent>\n                        </Card>\n                        : \"\"}\n                    <Typography display=\"block\" gutterBottom={true} style={{ marginTop: \"30px\" }} variant=\"subtitle1\" component=\"p\">{CustomMessageforconfirmpage}</Typography>\n                    <Button style={{ marginTop: 10 }} variant=\"contained\" color=\"primary\" onClick={onClickHandler}>\n                        OK\n                    </Button>\n                </div>\n            </div >\n\n        );\n    }\n};\n\nPaymentCompletebox.propTypes = {\n    isshow: PropTypes.bool.isRequired,\n    transaction: PropTypes.object.isRequired\n};\n\nexport default PaymentCompletebox;\n","import React from 'react';\r\nimport { Grid, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/styles';\r\nconst { FreeBookingMessage1, FreeBookingMessage2 } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    box100per: {\r\n        width: \"100%\",\r\n        height: \"50px\",\r\n        margin: \"5% 0% 5% 0%\"\r\n    }\r\n}));\r\n\r\nconst FreeTicketForm = (props) => {\r\n    const classes = useStyles();\r\n\r\n    return (\r\n        <div className={classes.box100per}>\r\n            <Grid container justify=\"center\" item xs={12} ms={12} lg={12}>\r\n                <Typography color=\"textSecondary\" >\r\n                    {FreeBookingMessage1}\r\n                </Typography>\r\n                <br />\r\n                <Typography color=\"textSecondary\" >\r\n                    {FreeBookingMessage2}\r\n                </Typography>\r\n            </Grid>\r\n        </div>\r\n    );\r\n}\r\n\r\nexport default FreeTicketForm;","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid, InputAdornment, InputLabel, FormControl, Select, MenuItem, FormHelperText } from '@material-ui/core';\r\nimport { actionResetFormErrorState, actionSetFormErrorState, actionSetFieldValueState } from 'actions';\r\nimport CryptoENC from 'crypto-js/enc-utf8';\r\nimport CryptoAES from 'crypto-js/aes'\r\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\r\nimport theme from '../../theme';\r\nimport { CreditCard, VpnKey, DateRange } from '@material-ui/icons';\r\nimport { genfunction } from 'helpers';\r\nimport { actionPostPaymentTransaction } from 'actions';\r\n\r\nconst { spreedlyEnvironment, RecaptchaV3Client, StreetAddressTypeID, BillingAddressTypeID, UseStreetAddressForAVS } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    iframebox: {\r\n        marginTop: \"-13px\",\r\n        height: \"31px\"\r\n    },\r\n    iconforiframe: {\r\n        marginTop: \"18px\"\r\n    },\r\n    displaynone: {\r\n        display: \"none\"\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n}));\r\n\r\nlet iframeinputstyle = \"font-family: Roboto, Helvetica, Arial, sans-serif; padding: 4px 5px 4px 30px; font-size: 16px;\"\r\n\r\n\r\nconst { forwardRef, useRef, useImperativeHandle } = React;\r\n\r\nconst Spreedly = forwardRef((props, ref) => {\r\n\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    let booking = {};\r\n\r\n    if (reducerBooking.booking[0] != null) {\r\n        booking = reducerBooking.booking[0];\r\n    }\r\n\r\n\r\n    useImperativeHandle(ref, () => ({\r\n\r\n        TransactionCall(requiredFields) {\r\n            requiredFields[\"eligible_for_card_updater\"] = 'false';\r\n            window.Spreedly.tokenizeCreditCard(requiredFields);\r\n        },\r\n        ZeroDollarTransactionCall(requiredFields) {\r\n\r\n            var client = GetClient(requiredFields[\"first_name\"], requiredFields[\"last_name\"],\r\n                requiredFields[\"email\"], UseStreetAddressForAVS ? requiredFields[\"address1\"] : '',\r\n                requiredFields[\"address2\"], requiredFields[\"city\"],\r\n                requiredFields[\"state\"], requiredFields[\"zip\"], requiredFields[\"country\"], requiredFields[\"phone_number\"], requiredFields[\"shipping_address1\"], requiredFields[\"shipping_address2\"],\r\n                requiredFields[\"shipping_city\"], requiredFields[\"shipping_state\"], requiredFields[\"shipping_zip\"], requiredFields[\"shipping_country\"], requiredFields[\"shipping_phone_number\"]);\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                    paymentTokenHandler({ token: null }, client, recaptchaToken);\r\n                }).catch(error => {\r\n                    seterrorMsg(\"Recaptcha token not fetched\")\r\n                })\r\n            }\r\n            else {\r\n                paymentTokenHandler({ token: null }, client, \"\");\r\n            }\r\n        },\r\n        CardOnFileTransaction() {\r\n\r\n            let cardonfileToken = booking.hasOwnProperty('PaymentToken') && booking.PaymentToken.length > 0 ?\r\n                booking.PaymentToken.substring(9, booking.PaymentToken.length) : '';\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                    paymentTokenHandler({ token: cardonfileToken }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n                }).catch(error => {\r\n                    seterrorMsg(\"Recaptcha token not fetched\")\r\n                })\r\n            }\r\n            else {\r\n                paymentTokenHandler({ token: cardonfileToken }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n            }\r\n        },\r\n\r\n        ReloadSpreedly() {\r\n            window.Spreedly.reload();\r\n        },\r\n        PaymentLoaded() {\r\n            return window.Spreedly;\r\n        }\r\n\r\n    }));\r\n\r\n\r\n    //const Spreedly = props => {\r\n\r\n    const dispatch = useDispatch();\r\n    const environmentKey = CryptoAES.decrypt(spreedlyEnvironment, '1271').toString(CryptoENC);\r\n    const { executeRecaptcha } = useGoogleReCaptcha();\r\n    const classes = useStyles();\r\n\r\n    const errorstate = useSelector(state => state.reducerFormError.errorstate);\r\n    const formfields = useSelector(state => state.reducerFormError.formfields);\r\n\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n\r\n    useEffect(() => {\r\n        const script = document.createElement(\"script\");\r\n        script.src = \"https://core.spreedly.com/iframe/iframe-v1.min.js\";\r\n        script.async = true;\r\n        document.body.appendChild(script);\r\n        script.onload = () => scriptLoaded();\r\n    }, []);\r\n\r\n    const GetClient = (firstName, lastName, email, street1, stree2, city, state, postCode, country, mobilePhone, shipping_address1, shipping_address2, shipping_city, shipping_state,\r\n        shipping_zip, shipping_country, shipping_phone_number) => {\r\n\r\n        var client = [\r\n            {\r\n                \"CustomerType\": \"Individual\",\r\n                \"FirstName\": firstName,\r\n                \"LastName\": lastName,\r\n                \"CreatedAsGuest\": true,\r\n                \"GuestEmail\": email,\r\n                \"DateOfBirth\": null,\r\n                \"CustomerAddress\": [\r\n                    {\r\n                        \"IsPrimaryAddress\": true,\r\n                        \"AddressTypeID\": StreetAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": street1,\r\n                        \"Street2\": stree2,\r\n                        \"CitySuburb\": city,\r\n                        \"State\": state,\r\n                        \"Postcode\": postCode,\r\n                        \"Country\": country,\r\n                        \"MobilePhone\": mobilePhone\r\n                    },\r\n                    {\r\n                        \"IsPrimaryAddress\": false,\r\n                        \"AddressTypeID\": BillingAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": shipping_address1,\r\n                        \"Street2\": shipping_address2,\r\n                        \"CitySuburb\": shipping_city,\r\n                        \"State\": shipping_state,\r\n                        \"Postcode\": shipping_zip,\r\n                        \"Country\": shipping_country,\r\n                        \"MobilePhone\": shipping_phone_number\r\n                    }\r\n                ],\r\n                \"LinkedIndividuals\": []\r\n            }\r\n        ]\r\n\r\n        return client;\r\n    }\r\n\r\n    const reseterrorfield = () => {\r\n        window.Spreedly.setStyle(\"number\", iframeinputstyle + \"width:75%;border-bottom: 1px solid gray;\")\r\n        window.Spreedly.setStyle(\"cvv\", iframeinputstyle + \"width:25%;border-bottom: 1px solid gray;\")\r\n        actionResetFormErrorState(dispatch);\r\n    }\r\n\r\n    const errorfield = (errorfield, errortext, errorstate) => {\r\n        actionSetFormErrorState(dispatch, errorfield, errortext, errorstate)\r\n\r\n        if (errorfield === \"number\")\r\n            window.Spreedly.setStyle(\"number\", iframeinputstyle + \"width:75%;border-bottom: 2px solid \" + theme.palette.error.main + \"; \");\r\n        else if (errorfield === \"cvv\")\r\n            window.Spreedly.setStyle(\"cvv\", iframeinputstyle + \"width:25%;border-bottom: 2px solid \" + theme.palette.error.main + \"; \");\r\n    }\r\n\r\n    const scriptLoaded = () => {\r\n\r\n        window.Spreedly.on(\"ready\", () => {\r\n            window.Spreedly.setFieldType(\"cvv\", \"text\");\r\n            window.Spreedly.setFieldType(\"number\", \"text\");\r\n            window.Spreedly.setNumberFormat(\"prettyFormat\");\r\n            window.Spreedly.setStyle(\"number\", iframeinputstyle + \"width:75%;border-bottom: 1px solid gray;\")\r\n            window.Spreedly.setStyle(\"cvv\", iframeinputstyle + \"width:25%;border-bottom: 1px solid gray;\")\r\n        });\r\n\r\n        window.Spreedly.on('errors', (errors) => {\r\n            for (var i = 0; i < errors.length; i++) {\r\n                if (errors[i].key === \"errors.blank\" || errors[i].key === \"errors.invalid\" ||\r\n                    errors[i].key === \"errors.blank_card_type\" || errors[i].key === \"errors.expired\") {\r\n                    errorfield(errors[i].attribute, errors[i].message, true);\r\n                    window.Spreedly.transferFocus(errors[i].attribute);\r\n                }\r\n                else {\r\n                    window.Spreedly.transferFocus(errors[i].attribute);\r\n                }\r\n            };\r\n        });\r\n\r\n        window.Spreedly.on('paymentMethod', (token, pmData) => {\r\n\r\n            reseterrorfield();\r\n\r\n            var client = GetClient(pmData.first_name, pmData.last_name, pmData.email, UseStreetAddressForAVS ? pmData.address1 : '',\r\n                pmData.address2, pmData.city, pmData.state, pmData.zip, pmData.country, pmData.phone_number, pmData.shipping_address1, pmData.shipping_address2, pmData.shipping_city, pmData.shipping_state,\r\n                pmData.shipping_zip, pmData.shipping_country, pmData.shipping_phone_number);\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                    paymentTokenHandler({ token: token, cardtype: pmData.card_type, cardnumber: pmData.number }, client, recaptchaToken);\r\n                }).catch(error => {\r\n                    seterrorMsg(\"Recaptcha token not fetched\")\r\n                })\r\n            }\r\n            else {\r\n                paymentTokenHandler({ token: token, cardtype: pmData.card_type, cardnumber: pmData.number }, client, \"\");\r\n            }\r\n        });\r\n\r\n        window.Spreedly.init(environmentKey, {\r\n            \"numberEl\": \"spreedly-number\",\r\n            \"cvvEl\": \"spreedly-cvv\"\r\n        });\r\n\r\n\r\n        window.Spreedly.on('fieldEvent', function (name, type, activeEl, inputProperties) {\r\n            if ((name == \"cvv\" || name == \"number\") && (type == \"input\" || type == \"mouseout\" || type == \"tab\" || type == \"shiftTab\")) {\r\n                window.Spreedly.validate();\r\n            }\r\n        });\r\n\r\n\r\n        window.Spreedly.on('validation', function (inputProperties) {\r\n\r\n            if (inputProperties && inputProperties.numberLength > 0) {\r\n                if (inputProperties.cvvLength < 1) {\r\n                    errorfield(\"cvv\", \"cvv is required\", true);\r\n                }\r\n                else if (!inputProperties.validCvv) {\r\n                    errorfield(\"cvv\", \"cvv entered is not valid\", true);\r\n                }\r\n                else {\r\n                    errorfield(\"cvv\", \"\", false);\r\n                }\r\n            }\r\n            else {\r\n                errorfield(\"cvv\", \"\", false);\r\n            }\r\n        });\r\n    }\r\n\r\n    const fieldhandleChange = (event) => {\r\n\r\n        if (event.target.name === \"MonthSelect\" || event.target.name === \"YearSelect\")\r\n            actionSetFieldValueState(dispatch, event.target.name, event.target.value);\r\n        else\r\n            actionSetFieldValueState(dispatch, event.currentTarget.name, event.target.value);\r\n    };\r\n\r\n    const paymentTokenHandler = (token, client, recaptchaToken) => {\r\n        actionPostPaymentTransaction(dispatch, token, client, recaptchaToken);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            {/* className={showFreeTicket || paymenttranstate.loading ? classes.displaynone : classes.visible}  */}\r\n\r\n            <Grid container item spacing={2} >\r\n                <Grid item xs={12} sm={6} >\r\n                    <div>\r\n                        <InputLabel error={errorstate.number.errorstate} shrink>\r\n                            Card Number\r\n                        </InputLabel>\r\n                        <InputAdornment className={classes.iconforiframe} position=\"start\">\r\n                            <CreditCard color=\"primary\" />\r\n                        </InputAdornment>\r\n                        <div className={classes.iframebox} id=\"spreedly-number\" >\r\n\r\n                        </div>\r\n                        <FormHelperText error={errorstate.number.errorstate}>{errorstate.number.errortext}</FormHelperText>\r\n                    </div>\r\n                </Grid>\r\n\r\n\r\n                <Grid item xs={12} sm={6} >\r\n                    <div>\r\n                        <InputLabel error={errorstate.cvv.errorstate} shrink>\r\n                            CVV\r\n                        </InputLabel>\r\n                        <InputAdornment className={classes.iconforiframe} position=\"start\">\r\n                            <VpnKey color=\"primary\" />\r\n                        </InputAdornment>\r\n                        <div className={classes.iframebox} id=\"spreedly-cvv\">\r\n\r\n                        </div>\r\n                        <FormHelperText error={errorstate.cvv.errorstate && errorstate.cvv.errortext.length > 0}>{errorstate.cvv.errortext}</FormHelperText>\r\n                    </div>\r\n                </Grid>\r\n                <Grid item xs={6} sm={3}>\r\n                    <FormControl className={classes.box100per} error={errorstate.month.errorstate}>\r\n                        <InputLabel shrink id=\"Monthlable\">\r\n                            Month\r\n                        </InputLabel>\r\n                        <Select\r\n                            labelId=\"Monthlable\"\r\n                            id=\"MonthSelect\"\r\n                            name=\"MonthSelect\"\r\n                            displayEmpty\r\n                            onChange={fieldhandleChange}\r\n                            value={formfields.MonthSelect.value}\r\n                            IconComponent={() => <DateRange color=\"primary\" />}\r\n                        >\r\n                            {genfunction.GetMonths().map((month, i) => (<MenuItem key={i} value={i + 1}>{month}</MenuItem>))}\r\n                        </Select>\r\n                        <FormHelperText>{errorstate.month.errortext}</FormHelperText>\r\n                    </FormControl>\r\n                </Grid>\r\n\r\n                <Grid item xs={6} sm={3}>\r\n                    <FormControl className={classes.box100per} error={errorstate.year.errorstate}>\r\n                        <InputLabel shrink id=\"Yearlable\">\r\n                            Year\r\n                        </InputLabel>\r\n                        <Select\r\n                            labelId=\"Yearlable\"\r\n                            id=\"YearSelect\"\r\n                            name=\"YearSelect\"\r\n                            displayEmpty\r\n                            onChange={fieldhandleChange}\r\n                            value={formfields.YearSelect.value}\r\n                            IconComponent={() => <DateRange color=\"primary\" />}\r\n                        >\r\n                            {genfunction.GetYears(10).map((year, i) => (<MenuItem key={i} value={year}>{year}</MenuItem>))}\r\n                        </Select>\r\n                        <FormHelperText>{errorstate.year.errortext}</FormHelperText>\r\n                    </FormControl>\r\n                </Grid>\r\n\r\n            </Grid>\r\n\r\n        </div>\r\n    );\r\n});\r\n\r\nexport default Spreedly;\r\n","import React from 'react'\r\nimport { useSelector } from 'react-redux';\r\nimport { Typography } from '@material-ui/core';\r\nimport { genfunction } from 'helpers';\r\n\r\nconst { Merchant1, Merchant2 } = window['runConfig'];\r\n\r\nconst MultiPayments = () => {\r\n\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const manageMyBooking = useSelector(state => state.reducerShopCart.managemybooking);\r\n    const enteredAmountToPay = useSelector(state => state.reducerShopCart.enteredAmountToPay);\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    let booking = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0] : null;\r\n\r\n    let merchantTotals = 0;\r\n    let merchant1Total = 0;\r\n    let merchant2Total = 0;\r\n\r\n\r\n    merchantTotals = manageMyBooking ?\r\n        genfunction.CalculateMultiMerchantTotalForMMB(events, cashless, (showTransFee ? transactionfee.transactionFee[0] : null), enteredAmountToPay, booking)\r\n        : genfunction.CalculateMultiMerchantTotal(events, gaTickets, membershipPackages, giftcards.giftcards, donation, (showTransFee ? transactionfee.transactionFee[0] : null), cashless, donationProducts);\r\n\r\n    merchant1Total = merchantTotals.merchant1Total;\r\n    merchant2Total = merchantTotals.merchant2Total;\r\n\r\n    return (\r\n        <div>\r\n            {merchant1Total > 0 && merchant2Total > 0 ?\r\n                <>\r\n                    <Typography color=\"textSecondary\" >The total\r\n                        {' ' + (manageMyBooking ? genfunction.ccyFormat(merchant1Total + merchant2Total) : genfunction.ccyFormat(genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gaTickets, giftcards.giftcards, orderProducts, donationProducts))) + ' '}\r\n                        will be charged in two payments:</Typography>\r\n                    <br />\r\n                    <Typography color=\"textSecondary\">{Merchant1}:  {' ' + genfunction.ccyFormat(merchant1Total) + ' '}</Typography>\r\n                    <Typography color=\"textSecondary\">{Merchant2}:  {' ' + genfunction.ccyFormat(merchant2Total) + ' '}</Typography>\r\n                </> :\r\n\r\n                merchant1Total > 0 || merchant2Total > 0 ?\r\n\r\n                    <Typography color=\"textSecondary\" >\r\n                        The total\r\n                        {' ' + (manageMyBooking ? genfunction.ccyFormat(merchant1Total + merchant2Total) : genfunction.ccyFormat(genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gaTickets, giftcards.giftcards, orderProducts, donationProducts))) + ' '}\r\n                        will appear on your statement as  {merchant1Total > 0 ? Merchant1 : Merchant2} </Typography>\r\n                    : null\r\n\r\n            }\r\n        </div>\r\n    )\r\n}\r\n\r\nexport default MultiPayments\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Button, Checkbox, FormHelperText, FormControl, Grid, InputAdornment, InputLabel, Link, MenuItem, Select, Typography } from '@material-ui/core';\r\nimport { makeStyles, useTheme } from '@material-ui/styles';\r\nimport { CreditCard, VpnKey, DateRange, Label } from '@material-ui/icons';\r\nimport { actionPostPaymentTransaction, actionShopCartShowTransFee, actionShopCartSetMmbAmountToPay } from 'actions';\r\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\r\nimport CryptoAES from 'crypto-js/aes'\r\nimport CryptoENC from 'crypto-js/enc-utf8';\r\nimport { actionSetFormErrorState } from 'actions';\r\nimport ErrorHandling from '../ErrorHandling/ErrorHandling';\r\nimport { red } from '@material-ui/core/colors';\r\nimport './Globalpayments.css';\r\nimport DialogeBox from '../DialogeBox/DialogeBox';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport MultiPayments from '../../views/Checkout/components/MultiPayments';\r\nimport { genfunction } from 'helpers'\r\n\r\nconst { BillingAddressTypeID, GPCardNumberErrorMsg, GPCVVErrorMsg, GPExpiryErrorMsg, GlobalPaymentsApiKey,\r\n    GlobalPaymentsEnvironment, GlobalPaymentsBaseURL, GlobalPaymentsEnableAutocomplete, TermsnConditionCheckMsg,\r\n    StreetAddressTypeID, RecaptchaV3Client, TermsnConditionCheckBoxText, UseStreetAddressForAVS, EnableAlternateMerchantOnline, ApplyTransactionFee } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    heading: {\r\n        marginTop: \"-18px\",\r\n        color: \"#000000\",\r\n        \"font-size\": \"11px\",\r\n        \"font-family\": \"Roboto, Helvetica, Arial, sans-serif\",\r\n        \"font-weight\": \"400\",\r\n        \"letter-spacing\": \"-0.05px\",\r\n        \"transform\": \"translate(0, 1.5px) scale(0.75)\",\r\n        \"transform-origin\": \"top left\"\r\n    },\r\n    iconforiframe: {\r\n        \"z-index\": \"1 !important\",\r\n        \"margin-top\": \"20px\"\r\n    },\r\n    box100per: {\r\n        \"margin-top\": \"-72px\"\r\n    },\r\n    mmbfakedisableButton: {\r\n        \"margin-top\": \"-72px\"\r\n    },\r\n    errorTxt: {\r\n        color: \"#e53935\"\r\n    },\r\n    errorInput: {\r\n        border: red\r\n    },\r\n    hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    visible: {\r\n        visibility: \"visible\"\r\n    },\r\n    FullWidth: {\r\n        width: \"100%\"\r\n    },\r\n    PayBtnDisable: {\r\n        'pointer-events': 'none !important'\r\n    },\r\n    PayBtnUnDisable: {\r\n        'pointer-events': 'auto !important'\r\n    }\r\n\r\n}));\r\n\r\n\r\nconst { forwardRef, useRef, useImperativeHandle } = React;\r\n\r\nconst GlobalPayments = forwardRef((props, ref) => {\r\n\r\n    useImperativeHandle(ref, () => ({\r\n\r\n        refPayByCardOnFile() {\r\n            PayByCardOnFile();\r\n        },\r\n        refReload() {\r\n            Reload();\r\n        }\r\n\r\n    }));\r\n\r\n\r\n    let val = 0;\r\n    const classes = useStyles();\r\n    const theme = useTheme();\r\n    const dispatch = useDispatch();\r\n    const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const errorstate = useSelector(state => state.reducerFormError.errorstate);\r\n    const formfields = useSelector(state => state.reducerFormError.formfields);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    let shopcartamounttoPay = useSelector(state => state.reducerShopCart.mmbAmountToPay);\r\n    const refundType = useSelector(state => state.reducerShopCart.refundType);\r\n    let enteredAmountToPay = useSelector(state => state.reducerShopCart.enteredAmountToPay);\r\n    const PaymentInfoError = useSelector(state => state.reducerPaymentTransaction.PaymentInfoError);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n\r\n\r\n    const [showPayBtn, setShowPayBtn] = useState(false);\r\n    const [tncchecked, settncChecked] = React.useState(false);\r\n    const [opentnc, setopentnc] = useState(false);\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [cardDetails, setCardDetails] = useState({});\r\n\r\n    let cardNumberRef = useRef();\r\n    let cvvRef = useRef();\r\n    let expiryDateRef = useRef();\r\n    let submitRef = useRef();\r\n\r\n    const tnccheckeHandle = (event) => {\r\n        settncChecked(event.target.checked);\r\n    };\r\n\r\n    useEffect(() => {\r\n        // if (val == 0) {\r\n        const script = document.createElement(\"script\");\r\n        script.src = GlobalPaymentsBaseURL;\r\n        script.async = true;\r\n        document.body.appendChild(script);\r\n        script.onload = () => scriptLoaded();\r\n        //  val++;\r\n        // }\r\n    }, []);\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        if ((events.length > 0 || membershipPackages.length > 0 || gatickets.length > 0 || orderProducts.length > 0 || ShowGiftCards() || donationProducts.length > 0) || props.AdditionBooking && tncchecked) {\r\n            setShowPayBtn(true);\r\n        }\r\n        else {\r\n            setShowPayBtn(false);\r\n        }\r\n    }, [events, tncchecked, formfields])\r\n\r\n    useEffect(() => {\r\n\r\n        if (errorMsg && errorMsg.length > 0 || PaymentInfoError && PaymentInfoError.length > 0) {\r\n            if (window && window.toggleButtonState) {\r\n                window.toggleButtonState(true);\r\n            }\r\n        }\r\n\r\n    }, [errorMsg, PaymentInfoError]);\r\n\r\n\r\n    const Reload = () => {\r\n\r\n        if (cardNumberRef.current && cvvRef.current && expiryDateRef.current && submitRef.current) {\r\n            cardNumberRef.current.innerHTML = \"\";\r\n            cvvRef.current.innerHTML = \"\";\r\n            expiryDateRef.current.innerHTML = \"\";\r\n            submitRef.current.innerHTML = \"\";\r\n        }\r\n\r\n        window.GlobalPayments.configure({\r\n            \"X-GP-Api-Key\": CryptoAES.decrypt(GlobalPaymentsApiKey, '1271').toString(CryptoENC),\r\n            \"X-GP-Environment\": GlobalPaymentsEnvironment,\r\n            enableAutocomplete: GlobalPaymentsEnableAutocomplete,\r\n        });\r\n\r\n        var cardForm = window.GlobalPayments.ui.form({\r\n            fields: {\r\n                \"card-number\": {\r\n                    target: \"#card-number\",\r\n                    placeholder: \"???????????? ???????????? ???????????? ????????????\",\r\n                },\r\n                \"card-expiration\": {\r\n                    target: \"#card-expiration\",\r\n                    placeholder: \"MM / YYYY\",\r\n                },\r\n                \"card-cvv\": {\r\n                    target: \"#card-cvv\",\r\n                    placeholder: \"?????????\",\r\n                },\r\n                submit: {\r\n                    target: \"#submit\",\r\n                    text: \"Pay\",\r\n                },\r\n            },\r\n            styles: {\r\n                //adding a radius on all text inputs\r\n\r\n                \"#secure-payment-field.card-number\": {\r\n                    \"font-family\": \"Roboto, Helvetica, Arial, sans-serif\",\r\n                    \"padding\": \"4px 5px 4px 30px\",\r\n                    \"font-size\": \"16px\",\r\n                    \"border\": \"none !important\",\r\n                    \"border-bottom\": \"1px solid gray !important\",\r\n                    \"width\": \"100% !important\"\r\n                },\r\n\r\n                \".card-number.card-type-amex\": {\r\n                    \"background\": \"#f3faff url(https://hps.github.io/token/gp-1.0.0/images/logo-amex@2x.png) no-repeat right\",\r\n                    \"background-position-y\": \"-12px\",\r\n                    \"background-size\": \"55px 98px\"\r\n                },\r\n                \".card-number.card-type-discover\": {\r\n                    \"background\": \"#f3faff url(https://hps.github.io/token/gp-1.0.0/images/logo-discover@2x.png) no-repeat right\",\r\n                    \"background-position-y\": \"-11px\",\r\n                    \"background-size\": \"90px 96px\"\r\n                },\r\n                \".card-number.card-type-jcb\": {\r\n                    \"background\": \"#f3faff url(https://hps.github.io/token/gp-1.0.0/images/logo-jcb@2x.png) no-repeat right\",\r\n                    \"background-position-y\": \"-6px\",\r\n                    \"background-size\": \"48px 82px\"\r\n                },\r\n                \".card-number.card-type-mastercard\": {\r\n                    \"background\": \"#f3faff url(https://hps.github.io/token/gp-1.0.0/images/logo-mastercard@2x.png) no-repeat right\",\r\n                    \"background-position-y\": \"-3px\",\r\n                    \"background-size\": \"60px 64px\"\r\n                },\r\n                \".card-number.card-type-visa\": {\r\n                    \"background\": \"#f3faff url(https://hps.github.io/token/gp-1.0.0/images/logo-visa@2x.png) no-repeat right\",\r\n                    \"background-position-y\": \"-6px\",\r\n                    \"background-size\": \"70px 75px\"\r\n                },\r\n\r\n                \"#secure-payment-field.card-cvv\": {\r\n                    \"font-family\": \"Roboto, Helvetica, Arial, sans-serif\",\r\n                    \"padding\": \"4px 5px 4px 30px\",\r\n                    \"font-size\": \"16px\",\r\n                    \"border\": \"none !important\",\r\n                    \"border-bottom\": \"1px solid gray !important\",\r\n                    \"width\": \"25% !important\"\r\n                },\r\n\r\n                \"#secure-payment-field.card-expiration\": {\r\n                    \"font-family\": \"Roboto, Helvetica, Arial, sans-serif\",\r\n                    \"padding\": \"4px 5px 4px 30px\",\r\n                    \"font-size\": \"16px\",\r\n                    \"border\": \"none !important\",\r\n                    \"border-bottom\": \"1px solid gray !important\",\r\n                    \"width\": \"25% !important\"\r\n                },\r\n\r\n                \"input[type=text]:focus-visible, input[type=tel]:focus-visible\": {\r\n                    \"outline\": \"none !important\",\r\n                    \"border\": \"none !important\",\r\n                    \"border-bottom\": \"1px solid gray !important\",\r\n                },\r\n\r\n                \"#secure-payment-field.submit:hover\": {\r\n                    \"text-decoration\": \"none\",\r\n                    \"background-color\": \"rgba(0, 0, 0, 0.04)\",\r\n                    \"color\": \"#000000\"\r\n                },\r\n                \"input.invalid\": {\r\n                    \"-webkit-box-shadow\": \"inset 0px 0px 4px 0px #ff0a0a\",\r\n                    \"box-shadow\": \"inset 0px 0px 4px 0px #ff0a0a\",\r\n                    \"border-color\": \"#ff8282\"\r\n                },\r\n\r\n                \"button[type=button]\": {\r\n                    \"background-color\": theme.palette.primary.main,\r\n                    \"color\": theme.palette.primary.contrastText,\r\n                    \"flex-basis\": \"100%\",\r\n                    \"font-size\": \"14px\",\r\n                    \"margin\": \"0 auto\",\r\n                    \"height\": \"38px\",\r\n                    \"box-sizing\": \"border-box\",\r\n                    \"border\": \"none\",\r\n                    \"border-radius\": \"4px\",\r\n                    \"cursor\": \"pointer\",\r\n                    \"position\": \"relative\",\r\n                    \"align-items\": \"center\",\r\n                    \"font-weight\": \"500 !important\",\r\n                    \"line-height\": \"1.75\",\r\n                    \"text-transform\": \"uppercase\",\r\n                    \"letter-spacing\": \"0.02857em\",\r\n                    \"font-family\": \"Roboto Helvetica Arial sans-serif !important\"\r\n                },\r\n                \"button:active\": {\r\n                    \"filter\": \"brightness(112%)\"\r\n                }\r\n            }\r\n        });\r\n\r\n        return cardForm;\r\n    }\r\n    const scriptLoaded = () => {\r\n\r\n        var cardForm = Reload();\r\n        var isCallInititaed = false;\r\n\r\n        window.GlobalPayments.on(\"error\", (resp) => {\r\n            if (props.showFreeTicket === false) {\r\n                seterrorMsg(\"Global Payment is not configured correctly, please contact administrator for more details.\");\r\n            }\r\n        });\r\n\r\n        cardForm.on(\"token-success\", (resp) => {\r\n            if (!isCallInititaed) {\r\n                window.toggleButtonState(false);\r\n                setCardDetails(resp);\r\n            }\r\n\r\n        });\r\n\r\n        function timeout(ms) {\r\n            return new Promise(resolve => setTimeout(resolve, ms));\r\n        }\r\n        async function updatetsates() {\r\n            ResetCreditCard();\r\n            await timeout(3000);\r\n        }\r\n\r\n        cardForm.on(\"token-error\", function (resp) {\r\n\r\n            window.toggleButtonState(true);\r\n            updatetsates();\r\n\r\n            if (resp && resp.error) {\r\n\r\n                if (resp.error.detail && resp.error.detail.length > 0 && resp.error.detail[0].hasOwnProperty('data_path')) {\r\n\r\n                    if (resp.error.detail[0].data_path.includes('card_number') || resp.error.detail[0].data_path.includes('card-number')) {\r\n                        errorfield('number', GPCardNumberErrorMsg, true);\r\n                    }\r\n\r\n                    if (resp.error.detail[0].data_path.includes('security')) {\r\n                        errorfield('cvv', GPCVVErrorMsg, true);\r\n                    }\r\n\r\n                    if (resp.error.detail[0].data_path.includes('expiry_year') || resp.error.detail[0].data_path.includes('card-expiration')) {\r\n                        errorfield('MonthAndYear', GPExpiryErrorMsg, true);\r\n                    }\r\n\r\n                    if (resp.error.detail[0].description.includes('expiry')) {\r\n                        errorfield('MonthAndYear', GPExpiryErrorMsg, true);\r\n                    }\r\n                }\r\n\r\n                if (resp.error.code && resp.error.code.includes('invalid_card')) {\r\n                    errorfield('number', GPCardNumberErrorMsg, true);\r\n                }\r\n            }\r\n        });\r\n\r\n        cardForm.on(\"card-number-test\", (resp) => {\r\n            if (resp.valid)\r\n                errorfield('number', '', false);\r\n        });\r\n\r\n        cardForm.on(\"card-expiration-test\", (resp) => {\r\n            if (resp.valid)\r\n                errorfield('MonthAndYear', '', false);\r\n        });\r\n\r\n\r\n        cardForm.on(\"card-cvv-test\", (resp) => {\r\n            if (resp.valid)\r\n                errorfield('cvv', '', false);\r\n        });\r\n\r\n        // called during callbacks, changes CSS of Submit button if all 3 callbacks return true\r\n        // by calling addStylesheet on cardForm (PayFields) object\r\n        window.toggleButtonState = (isEnabled) => {\r\n\r\n            cardForm.addStylesheet(isEnabled ? {\r\n                \"button\": {\r\n                    \"color\": \"#FFFFFF\",\r\n                    \"background-color\": \"#0000FF\",\r\n                    \"pointer-events\": \"auto\",\r\n                    \"cursor\": \"pointer\"\r\n                }\r\n            } : {\r\n                \"button\": {\r\n                    \"background\": \"#e0f1ff\",\r\n                    \"color\": \" #808080\",\r\n                    \"pointer-events\": \"none\",\r\n                    \"cursor\": \"not-allowed\"\r\n                }\r\n            });\r\n\r\n            if (!isEnabled) {\r\n                isCallInititaed = true;\r\n            } else {\r\n                isCallInititaed = false;\r\n            }\r\n        };\r\n    };\r\n\r\n    const PayByCardOnFile = () => {\r\n\r\n        var booking = reducerBooking.booking[0];\r\n\r\n        let cardonfileToken = \"\";\r\n        let cardMaskedNum = \"\";\r\n        let cardType = \"\";\r\n\r\n        if (booking && booking.hasOwnProperty('PaymentToken') && booking.PaymentToken.length > 10) {\r\n            cardonfileToken = booking.PaymentToken.substring(booking.PaymentToken.length - 10);\r\n        }\r\n\r\n        if (booking && booking.hasOwnProperty('PaymentDescription') && booking.PaymentDescription.length > 10) {\r\n            cardType = booking.PaymentDescription.substring(0, booking.PaymentDescription.indexOf('-') - 1).trim();\r\n            cardMaskedNum = booking.PaymentDescription.substring(booking.PaymentDescription.indexOf('-') + 1, booking.PaymentDescription.length).trim();\r\n        }\r\n\r\n        if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n            executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                paymentTokenHandler({ token: cardonfileToken, cardtype: cardType, cardnumber: cardMaskedNum }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n            }).catch(error => {\r\n                seterrorMsg(\"Recaptcha token not fetched\")\r\n            })\r\n        }\r\n        else {\r\n            paymentTokenHandler({ token: cardonfileToken, cardtype: cardType, cardnumber: cardMaskedNum }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n        }\r\n    }\r\n\r\n\r\n    const PurchaseItems = (resp) => {\r\n\r\n        if (genfunction.IsObjectNotNullOrEmptyOrUndefined(resp)) {\r\n            if (resp.hasOwnProperty('cvv_present') && resp.cvv_present === false) {\r\n                errorfield('cvv', 'Card CVV is required.', true);\r\n                window.toggleButtonState(true);\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (!props.ValidatePaymentFields()) {\r\n            window.toggleButtonState(true);\r\n            return;\r\n        }\r\n\r\n        if (props.ValidatePaymentFields()) {\r\n\r\n            ResetCreditCard();\r\n\r\n            if (props.mmbPayBy === undefined || props.mmbPayBy !== \"CardOnFile\") {\r\n\r\n                var client = GetClient(formfields.first_name.value, formfields.last_name.value, formfields.email.value.trim(), UseStreetAddressForAVS ? formfields.address1.value : '',\r\n                    formfields.address2.value, formfields.city.value, formfields.state.value, formfields.zip.value, formfields.country.value, formfields.phone_number.value,\r\n                    formfields.shipping_address1.value, formfields.shipping_address2.value, formfields.shipping_city.value, formfields.shipping_state.value,\r\n                    formfields.shipping_zip.value, formfields.shipping_country.value, formfields.shipping_phone_number.value);\r\n\r\n                if (!props.showFreeTicket) {\r\n                    if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                        executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                            paymentTokenHandler({ token: resp.temporary_token, cardtype: resp.card.type, cardnumber: resp.card.masked_card_number }, client, recaptchaToken);\r\n                        }).catch(error => {\r\n                            seterrorMsg(\"Recaptcha token not fetched\")\r\n                        })\r\n                    }\r\n                    else {\r\n                        paymentTokenHandler({ token: resp.temporary_token, cardtype: resp.card.type, cardnumber: resp.card.masked_card_number }, client, \"\");\r\n                    }\r\n                }\r\n\r\n                if (props.showFreeTicket) {\r\n                    if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                        executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                            paymentTokenHandler({ token: null }, client, recaptchaToken);\r\n                        }).catch(error => {\r\n                            seterrorMsg(\"Recaptcha token not fetched\")\r\n                        })\r\n                    }\r\n                    else {\r\n                        paymentTokenHandler({ token: null }, client, \"\");\r\n                    }\r\n                }\r\n            }\r\n        }\r\n        else if (props.managemyBooking && props.mmbPayBy === \"CardOnFile\") {\r\n            PayByCardOnFile();\r\n        }\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        if (cardDetails && cardDetails.hasOwnProperty('temporary_token') && cardDetails.temporary_token.length > 0) {\r\n            PurchaseItems(cardDetails);\r\n        }\r\n    }, [cardDetails])\r\n\r\n    const ResetCreditCard = () => {\r\n\r\n        errorfield('number', '', false);\r\n        errorfield('cvv', '', false);\r\n        errorfield('MonthAndYear', '', false);\r\n    }\r\n\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n        return res;\r\n    }\r\n\r\n    const errorfield = (errorfield, errortext, errorstate) => {\r\n        actionSetFormErrorState(dispatch, errorfield, errortext, errorstate);\r\n    }\r\n\r\n    const paymentTokenHandler = (token, client, recaptchaToken) => {\r\n        actionPostPaymentTransaction(dispatch, token, client, recaptchaToken);\r\n    }\r\n\r\n    const GetClient = (firstName, lastName, email, street1, stree2, city, state, postCode, country, mobilePhone, shipping_address1, shipping_address2, shipping_city, shipping_state,\r\n        shipping_zip, shipping_country, shipping_phone_number) => {\r\n\r\n        var client = [\r\n            {\r\n                \"CustomerType\": \"Individual\",\r\n                \"FirstName\": firstName,\r\n                \"LastName\": lastName,\r\n                \"CreatedAsGuest\": true,\r\n                \"GuestEmail\": email,\r\n                \"DateOfBirth\": null,\r\n                \"CustomerAddress\": [\r\n                    {\r\n                        \"IsPrimaryAddress\": true,\r\n                        \"AddressTypeID\": StreetAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": street1,\r\n                        \"Street2\": stree2,\r\n                        \"CitySuburb\": city,\r\n                        \"State\": state,\r\n                        \"Postcode\": postCode,\r\n                        \"Country\": country,\r\n                        \"MobilePhone\": mobilePhone\r\n                    },\r\n                    {\r\n                        \"IsPrimaryAddress\": false,\r\n                        \"AddressTypeID\": BillingAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": shipping_address1,\r\n                        \"Street2\": shipping_address2,\r\n                        \"CitySuburb\": shipping_city,\r\n                        \"State\": shipping_state,\r\n                        \"Postcode\": shipping_zip,\r\n                        \"Country\": shipping_country,\r\n                        \"MobilePhone\": shipping_phone_number\r\n                    }\r\n                ],\r\n                \"LinkedIndividuals\": []\r\n            }\r\n        ]\r\n\r\n        return client;\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const getTNC = () => {\r\n        return ReactHtmlParser(TermsnConditionCheckMsg);\r\n    }\r\n\r\n    const GetTransOptionalText = () => {\r\n        let optionalTxt = '';\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            optionalTxt = transactionfee.transactionFee[0].TransactionFeeOptionalText;\r\n\r\n            if (refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0))\r\n                optionalTxt += ' [' + genfunction.ccyFormat(parseFloat(genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal))) + ']';\r\n\r\n            else\r\n                optionalTxt += ' [' + genfunction.ccyFormat(parseFloat(genfunction.TransactionFee(events, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts))) + ']';\r\n        }\r\n\r\n        return optionalTxt;\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                actionShopCartShowTransFee(dispatch, true);\r\n            }\r\n        }\r\n\r\n    }, [transactionfee])\r\n\r\n    const transFeeCheckHandler = (event) => {\r\n        actionShopCartShowTransFee(dispatch, event.target.checked);\r\n\r\n        let transFee;\r\n        if (props.managemyBooking) {\r\n\r\n            if (refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0)) {\r\n                transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal)\r\n            }\r\n            else {\r\n                transFee = genfunction.TransactionFee(events, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n            }\r\n\r\n            let amoutToPay = event.target.checked ? genfunction.Rounded(shopcartamounttoPay + transFee) : genfunction.Rounded(shopcartamounttoPay - transFee);\r\n            actionShopCartSetMmbAmountToPay(dispatch, amoutToPay);\r\n        }\r\n\r\n    };\r\n\r\n    const transFeeCheckBox = () => {\r\n\r\n        let showTFBox = true;\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeOptional === false && transactionfee.transactionFee[0].TransactionFeeByDefault === false) {\r\n                showTFBox = false;\r\n                if (!showTransFee && ApplyTransactionFee) {\r\n                    actionShopCartShowTransFee(dispatch, true);\r\n                }\r\n            }\r\n        }\r\n\r\n        return showTFBox;\r\n    };\r\n\r\n    return (\r\n        <div>\r\n            <ErrorHandling msg={errorMsg} open={errorMsg && errorMsg.length > 0} handleclose={errorcancelhandle} />\r\n            {props.showFreeTicket === false ?\r\n                <>\r\n                    <form id=\"form1\" method=\"get\" >\r\n                        <FormControl role=\"form\">\r\n                            <Grid container item spacing={2} >\r\n                                <Grid item xs={12} sm={6} >\r\n                                    <div>\r\n                                        <label className={classes.heading}>Card Number</label>\r\n\r\n                                        <InputAdornment position=\"start\">\r\n                                            <CreditCard className={classes.iconforiframe} color=\"primary\" />\r\n                                        </InputAdornment>\r\n                                        <div id=\"card-number\" ref={cardNumberRef}>\r\n\r\n                                        </div>\r\n                                        <FormHelperText className={classes.errorTxt}>{errorstate.number.errorstate ? errorstate.number.errortext : ''}</FormHelperText>\r\n                                    </div>\r\n                                </Grid>\r\n\r\n                                <Grid item xs={12} sm={6} >\r\n                                    <div>\r\n                                        <label className={classes.heading} shrink=\"true\">CVV</label>\r\n\r\n                                        <InputAdornment position=\"start\">\r\n                                            <VpnKey color=\"primary\" className={classes.iconforiframe} />\r\n                                        </InputAdornment>\r\n                                        <div id=\"card-cvv\" ref={cvvRef}>\r\n\r\n                                        </div>\r\n                                        <FormHelperText className={classes.errorTxt}>{errorstate.cvv.errortext}</FormHelperText>\r\n                                    </div>\r\n                                </Grid>\r\n                                <Grid item xs={12} sm={12} >\r\n                                    <div>\r\n                                        <label className={classes.heading}>Card Expiry</label>\r\n\r\n                                        <InputAdornment position=\"start\">\r\n                                            <DateRange color=\"primary\" className={classes.iconforiframe} />\r\n                                        </InputAdornment>\r\n\r\n                                        <div className={classes.errorInput} id=\"card-expiration\" ref={expiryDateRef}>\r\n                                        </div>\r\n                                        <FormHelperText className={classes.errorTxt}>{errorstate.MonthAndYear.errortext}</FormHelperText>\r\n                                    </div>\r\n                                </Grid>\r\n\r\n                                {ApplyTransactionFee && transFeeCheckBox() === true ?\r\n                                    < Grid item xs={12} sm={12}>\r\n                                        <Checkbox\r\n                                            color=\"primary\"\r\n                                            checked={showTransFee}\r\n                                            onChange={transFeeCheckHandler}\r\n                                            inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                        />\r\n                                        <Typography color=\"textSecondary\" component=\"span\" >\r\n                                            {GetTransOptionalText()}\r\n                                        </Typography>\r\n                                    </Grid>\r\n                                    : null}\r\n\r\n                                <Grid item xs={12} sm={12}>\r\n                                    <Checkbox\r\n                                        color=\"primary\"\r\n                                        checked={tncchecked}\r\n                                        onChange={tnccheckeHandle}\r\n                                        inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                    />\r\n                                    <Typography color=\"textSecondary\" component=\"span\" >\r\n                                        {TermsnConditionCheckBoxText}\r\n                                        <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                                    </Typography>\r\n\r\n                                </Grid>\r\n                                <Grid item xs={12}>\r\n                                    {tncchecked && EnableAlternateMerchantOnline ? <MultiPayments /> : null}\r\n                                </Grid>\r\n\r\n                                <Grid item xs={12} sm={12}>\r\n                                    <>\r\n                                        <div id=\"submit\" className={(showPayBtn ? classes.visible : classes.hidden) + \" \" +\r\n                                            (!tncchecked || stopUserToPurchase === true ? classes.PayBtnDisable : classes.PayBtnUnDisable)} ref={submitRef}>\r\n                                        </div>\r\n                                        <Button\r\n                                            disabled={!props.AdditionBooking}\r\n                                            className={classes.primarycolor + \" \" + classes.FullWidth + \" \" +\r\n                                                (props.mmbPayBy === false ? classes.box100per : classes.mmbfakedisableButton) + \" \" +\r\n                                                (showPayBtn ? classes.hidden : classes.visible)}\r\n                                        >Pay</Button>\r\n                                    </>\r\n\r\n                                </Grid>\r\n                            </Grid>\r\n                        </FormControl >\r\n                    </form>\r\n                </>\r\n                :\r\n                <>\r\n                    <Grid item xs={12} sm={12}>\r\n                        <Checkbox\r\n                            color=\"primary\"\r\n                            checked={tncchecked}\r\n                            onChange={tnccheckeHandle}\r\n                            inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                        />\r\n                        <Typography color=\"textSecondary\" component=\"span\" >\r\n                            {TermsnConditionCheckBoxText}\r\n                            <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={12} sm={12}>\r\n                        <Button\r\n                            disabled={!tncchecked}\r\n                            className={classes.primarycolor + \" \" + classes.FullWidth} onClick={() => PurchaseItems(null)}>Pay</Button>\r\n                    </Grid>\r\n                </>\r\n            }\r\n\r\n            <DialogeBox open={opentnc} title={\"Terms and Conditions\"}\r\n                message={getTNC()}\r\n                button1text={\"Close\"}\r\n                button1clickhandler={() => { setopentnc(false) }}></DialogeBox>\r\n\r\n        </div >\r\n    );\r\n});\r\n\r\nexport default GlobalPayments;\r\n","const { StreetAddressTypeID, BillingAddressTypeID } = window['runConfig'];\r\n\r\nexport default {\r\n\r\n    GetClient(firstName, lastName, email, street1, stree2, city, state, postCode, country, mobilePhone, shipping_address1, shipping_address2, shipping_city, shipping_state,\r\n        shipping_zip, shipping_country, shipping_phone_number) {\r\n\r\n        var client = [\r\n            {\r\n                \"CustomerType\": \"Individual\",\r\n                \"FirstName\": firstName,\r\n                \"LastName\": lastName,\r\n                \"CreatedAsGuest\": true,\r\n                \"GuestEmail\": email,\r\n                \"DateOfBirth\": null,\r\n                \"CustomerAddress\": [\r\n                    {\r\n                        \"IsPrimaryAddress\": true,\r\n                        \"AddressTypeID\": StreetAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": street1,\r\n                        \"Street2\": stree2,\r\n                        \"CitySuburb\": city,\r\n                        \"State\": state,\r\n                        \"Postcode\": postCode,\r\n                        \"Country\": country,\r\n                        \"MobilePhone\": mobilePhone\r\n                    },\r\n                    {\r\n                        \"IsPrimaryAddress\": false,\r\n                        \"AddressTypeID\": BillingAddressTypeID,\r\n                        \"Email\": email,\r\n                        \"Street1\": shipping_address1,\r\n                        \"Street2\": shipping_address2,\r\n                        \"CitySuburb\": shipping_city,\r\n                        \"State\": shipping_state,\r\n                        \"Postcode\": shipping_zip,\r\n                        \"Country\": shipping_country,\r\n                        \"MobilePhone\": shipping_phone_number\r\n                    }\r\n                ],\r\n                \"LinkedIndividuals\": []\r\n            }\r\n        ]\r\n\r\n        return client;\r\n    }\r\n}","import React, { useState } from 'react';\r\nimport { Spreedly, GlobalPayments } from './index'\r\nimport PropTypes from 'prop-types';\r\n\r\nconst { forwardRef, useRef, useImperativeHandle } = React;\r\n\r\n//const Payments = props => {\r\nconst Payments = forwardRef((props, ref) => {\r\n\r\n    const { type, showFreeTkt, managemyBooking, mmbPayBy } = props;\r\n\r\n    const spreedlyRef = useRef();\r\n    const globalPaymentsRef = useRef();\r\n\r\n\r\n    useImperativeHandle(ref, () => ({\r\n\r\n        SpreedlyTransactionCall(requiredFields) {\r\n            spreedlyRef.current.TransactionCall(requiredFields);\r\n        },\r\n        SpreedlyZeroDollarTransactionCall(requiredFields) {\r\n            spreedlyRef.current.ZeroDollarTransactionCall(requiredFields);\r\n        },\r\n        ReloadSpreedly() {\r\n            spreedlyRef.current.ReloadSpreedly();\r\n        },\r\n        PaymentLoaded() {\r\n            spreedlyRef.current.PaymentLoaded();\r\n        },\r\n        SpreedlyCardOnFileTransaction() {\r\n            spreedlyRef.current.CardOnFileTransaction();\r\n        },\r\n        PayByCardOnFile() {\r\n            globalPaymentsRef.current.refPayByCardOnFile();\r\n        },\r\n        GPReload() {\r\n            globalPaymentsRef.current.refReload();\r\n        }\r\n    }));\r\n\r\n    return (\r\n        <div>\r\n            {type === 'Spreedly' ? <Spreedly ref={spreedlyRef} /> : null}\r\n\r\n            {type === 'GlobalPayments' ?\r\n                <GlobalPayments\r\n                    ref={globalPaymentsRef}\r\n                    showFreeTicket={showFreeTkt}\r\n                    ValidatePaymentFields={props.ValidatePaymentFields}\r\n                    managemyBooking={props.managemyBooking}\r\n                    mmbPayBy={props.mmbPayBy}\r\n                    AdditionBooking={props.AdditionBooking}\r\n                /> : null}\r\n\r\n        </div >\r\n    );\r\n});\r\n\r\nPayments.propTypes = {\r\n    type: PropTypes.string.isRequired,\r\n    tokenization: PropTypes.func.isRequired\r\n};\r\n\r\nexport default Payments;\r\n","import React, { useEffect, useState, useCallback } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, Grid, CardHeader, Button, TextField, FormControl, FormControlLabel, FormHelperText, Checkbox, Typography, Link, useForkRef } from '@material-ui/core';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\r\nimport MaskedInput from 'react-text-mask';\r\n\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport ProcessingBox from './ProcessingBox';\r\nimport PaymentCompletebox from './PaymentCompletebox';\r\n\r\nimport {\r\n    actionShopCartResetState, actionShopCartResetStateWithUniqueCouponHold, actionResetFormErrorState, actionSetFormErrorState, actionSetFieldValueState,\r\n    actionShopCartRemoveGiftcards, actionShopCartApplyMembershipOnEvents, actionShopCartResetMembership, actionShopCartResetIDME,\r\n    actionShopCartUpdateMembershipEmail, actionShopCartResetMembershipPackage, actionShopCartApplyidmeCostratesOnEvents,\r\n    actionShopCartValidMember, actionShopCartShowTransFee, actionResetCustomerAddresses, actionResetCustomer, actionEndMemberValidationLoading, actionResetPaymentTransaction,\r\n    actionGetMemberValidation, actionResetMemberValidation, actionGetExtraItems, actionResetExtraItems, actionGetCostRate, actionResetCostRate,\r\n    actionGetIDMEUSERDATA, actionResetIDMEUSERDATA, actionGetCountryAndState, actionResetCountryAndState, actionValidateRecaptchaToken, actionValidateRecaptchaReset,\r\n    actionResetGiftCards, actionResetMembershipPackages, actionGetDonation, actionResetUDFs, actionResetMembershipUDFs\r\n} from 'actions';\r\n\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport DialogeBox from '../../../components/DialogeBox/DialogeBox';\r\nimport { genfunction } from 'helpers'\r\nimport { formstates } from '../';\r\nimport FreeTicketForm from '../components/FreeTicketForm';\r\nimport CryptoAES from 'crypto-js/aes'\r\nimport CryptoENC from 'crypto-js/enc-utf8';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../../actions/actionAppLoader';\r\nimport Payments from '../../../components/Payments/Payments';\r\nimport { actionResetCustomerUdfs } from 'actions';\r\nimport MultiPayments from './MultiPayments';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { actionStopUserToPurchase } from 'actions';\r\n\r\n\r\nconst { forwardRef, useRef, useImperativeHandle } = React;\r\n\r\nconst { RedirectAfterCheckout, Titleforloadingpayment, Subtitle1forloadingpayment, Subtitle2forloadingpayment,\r\n    EmailRegex, DefaultCostRateID, MembershipCostRateMatches, CouponAndGiftcardAlreadyApplied, Membershipsuccess,\r\n    HideMemberValidation, UserMembershipValidatedEmailAndLastName, RemoveMembershipCouponAndGiftcard, TermsnConditionCheckBoxText, TermsnConditionCheckMsg,\r\n    RemoveMembershipsuccess, IamMember, LastNameAndEmailORPhoneORAddressForMembership, RequiredEmailORPhoneORAddressForMembership,\r\n    PaymentFormHeading, UseStreetAddressForAVS, RecaptchaV3Client, ShowFullAddressOnCheckout,\r\n    CheckForIDmeValidProducts, IDmeAPIurl, IDmeClientID, IDmeRedirectURI, IDmeResponseType, IDmeScope, IDmeHeading, IDmeSuccessMsg,\r\n    IDmeInvalidGroup, IDmeResponseTypeError, IDmeInvalidClient, IDmeInvalidRedirectUri, IDmeAccessDenied, AddPersonZipCodeLength,\r\n    AddPersonCityLength, AddPersonAddress1Length, AddPersonAddress2Length, AddPersonEmailLength,\r\n    AddPersonFirstNameLength, AddPersonLastNameLength, PaymentMethodType, PhoneNumberMandatory, ValidMemberMsg, ApplyTransactionFee, EnableAlternateMerchantOnline,\r\n    PhoneNumberMessage } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    iconforiframe: {\r\n        marginTop: \"18px\"\r\n    },\r\n    iframebox: {\r\n        marginTop: \"-13px\",\r\n        height: \"31px\"\r\n    },\r\n    hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    displaynone: {\r\n        display: \"none\"\r\n    },\r\n    visible: {\r\n        visibility: \"visible\"\r\n    },\r\n    btnAlign: {\r\n        marginTop: '10px'\r\n    },\r\n    imMember: {\r\n        marginTop: '15px'\r\n    },\r\n    clearButton: {\r\n        \"& .MuiButtonBase-root.MuiAutocomplete-clearIndicator\": {\r\n            color: theme.palette.primary.main\r\n        }\r\n    }\r\n}));\r\n\r\nfunction TextMaskCustom(props) {\r\n    const { inputRef, onChange, value, ...other } = props;\r\n    let pnMask = ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n    return (\r\n        <MaskedInput\r\n            value={value}\r\n            {...other}\r\n            ref={(ref) => {\r\n                inputRef(ref ? ref.inputElement : null);\r\n            }}\r\n            onChange={onChange}\r\n            mask={pnMask}\r\n        />\r\n    );\r\n}\r\n\r\nlet PaymentForm = forwardRef((props, ref) => {\r\n\r\n    const paymentsRef = useRef();\r\n    const classes = useStyles();\r\n    const [pfstate, setpfstate] = useState(formstates.initialpaystate);\r\n    //const [errorstate, seterrorstate] = useState(formstates.initialerrorstate)\r\n    const dispatch = useDispatch();\r\n    const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n\r\n    useImperativeHandle(ref, () => ({\r\n        ReloadGateways() {\r\n            ReloadGateway();\r\n        }\r\n    }));\r\n\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    const errorstate = useSelector(state => state.reducerFormError.errorstate);\r\n    const formfields = useSelector(state => state.reducerFormError.formfields);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const costrate = useSelector(state => state.reducerCostRate);\r\n    const idmeuserdata = useSelector(state => state.reducerIDMeUserData);\r\n    const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields);\r\n    const membershipTypesUdfs = useSelector(state => state.reducerMembershipUserDefinedFields);\r\n    const countryandstates = useSelector(state => state.reducerCountryAndState.countryandstate);\r\n    const customerUdfs = useSelector(state => state.reducerCustomerUDFs);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const recaptacha = useSelector(state => state.reducerRecaptcha);\r\n    const sessionID = useSelector(state => state.reducerGlobal.sessionID);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n    const customerAddresses = useSelector(state => state.reducerCustomerAddresses.customerAddresses);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [opentnc, setopentnc] = useState(false);\r\n    const [tncchecked, settncChecked] = React.useState(false);\r\n    const [colorState, setColorState] = React.useState('');\r\n    const [removeMembershipState, setremoveMembershipState] = React.useState(false);\r\n    const [removemembershipcouponandgifts, setremovemembershipcouponandgifts] = React.useState(false);\r\n\r\n    var requiredFields = {};\r\n    let inputreferences = [];\r\n\r\n    inputreferences.first_name = React.useRef();\r\n    inputreferences.last_name = React.useRef();\r\n    inputreferences.email = React.useRef();\r\n    inputreferences.phone_number = React.useRef();\r\n    inputreferences.address1 = React.useRef();\r\n    inputreferences.country = React.useRef();\r\n    inputreferences.state = React.useRef();\r\n    inputreferences.city = React.useRef();\r\n    inputreferences.zip = React.useRef();\r\n    inputreferences.memberno = React.useRef();\r\n    inputreferences.shipping_phone_number = React.useRef();\r\n    inputreferences.shipping_address1 = React.useRef();\r\n    inputreferences.shipping_city = React.useRef();\r\n    inputreferences.shipping_state = React.useRef();\r\n    inputreferences.shipping_zip = React.useRef();\r\n    inputreferences.shipping_country = React.useRef();\r\n\r\n    const paymenttranstate = useSelector(state => {\r\n        return (\r\n            {\r\n                loading: state.reducerPaymentTransaction.loading,\r\n                haspaid: state.reducerPaymentTransaction.Payment.hasOwnProperty('Products'),\r\n                paymentinfo: state.reducerPaymentTransaction.Payment,\r\n                errormsg: state.reducerPaymentTransaction.PaymentInfoError\r\n            }\r\n        )\r\n\r\n    });\r\n\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (paymenttranstate.haspaid) {\r\n            actionResetMemberValidation(dispatch);\r\n            setTimeout(() => { window.scrollTo(0, 0) }, 0);\r\n\r\n        }\r\n    }, [paymenttranstate.haspaid])\r\n\r\n    useEffect(() => {\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                actionShopCartShowTransFee(dispatch, true);\r\n            }\r\n        }\r\n\r\n    }, [transactionfee])\r\n\r\n    const handleReCaptchaVerify = useCallback(async () => {\r\n\r\n        if (!executeRecaptcha) {\r\n            console.log('Execute recaptcha not yet available.');\r\n            return;\r\n        }\r\n\r\n        let token = await executeRecaptcha('ecommerce');\r\n\r\n        if (token.length > 0) {\r\n            actionValidateRecaptchaToken(dispatch, token, sessionID);\r\n        }\r\n        else {\r\n            seterrorMsg(\"Recaptcha token not fetched.\");\r\n        }\r\n\r\n    }, [executeRecaptcha]);\r\n\r\n    useEffect(() => {\r\n\r\n        if ((events && events.length > 0) || (gatickets && gatickets.length > 0) ||\r\n            (membershipPackages && membershipPackages.length > 0) || ShowGiftCards() ||\r\n            (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '' && (stopUserToPurchase !== undefined\r\n                && stopUserToPurchase === false) && (sessionID !== undefined && sessionID.length > 0)\r\n                && (recaptacha.validToken !== undefined && recaptacha.validToken === false)) {\r\n\r\n                handleReCaptchaVerify();\r\n            }\r\n\r\n            if (recaptacha.validTokenError.length > 0) {\r\n                seterrorMsg(recaptacha.validTokenError);\r\n            }\r\n        }\r\n\r\n    }, [handleReCaptchaVerify, RecaptchaV3Client, stopUserToPurchase, sessionID, recaptacha.validToken])\r\n\r\n    useEffect(() => {\r\n        if (paymenttranstate.errormsg.includes(\"Payment has been unsuccessful. To make this purchase, please contact us directly.\")) {\r\n            actionStopUserToPurchase(dispatch);\r\n        }\r\n    }, [paymenttranstate.errormsg]);\r\n\r\n\r\n\r\n    useEffect(() => {\r\n        if (recaptacha.validTokenError.length > 0) {\r\n            seterrorMsg(recaptacha.validTokenError);\r\n\r\n            if(recaptacha.validTokenError.includes('Too many attempts detected from this IP, Email and Browser Session.'))\r\n            {\r\n                actionStopUserToPurchase(dispatch);\r\n            }\r\n        }\r\n\r\n    }, [recaptacha.validTokenError]);\r\n\r\n    useEffect(() => {\r\n        if ((events.length > 0 || membershipPackages.length > 0 || gatickets.length > 0 || orderProducts.length > 0 || ShowGiftCards() || (donationProducts && donationProducts.length > 0)) && paymenttranstate.haspaid) {\r\n            actionShopCartResetState(dispatch);\r\n            if (bookingUDFS.bookingUDFs.length > 0) {\r\n                actionResetUDFs(dispatch);\r\n            }\r\n\r\n            actionValidateRecaptchaReset(dispatch);\r\n\r\n        }\r\n\r\n        if (ShowGiftCards() === true && paymenttranstate.haspaid) {\r\n            actionResetGiftCards(dispatch);\r\n        }\r\n\r\n    })\r\n\r\n    useEffect(() => {\r\n\r\n        if (paymenttranstate.haspaid) {\r\n            if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n                actionResetMembershipUDFs(dispatch);\r\n            }\r\n\r\n            if (customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0) {\r\n                actionResetCustomerUdfs(dispatch);\r\n            }\r\n        }\r\n\r\n\r\n    }, [paymenttranstate.haspaid])\r\n\r\n\r\n    useEffect(() => {\r\n\r\n        if ((events.length > 0 || membershipPackages.length > 0 || gatickets.length > 0 || orderProducts.length > 0 || ShowGiftCards() || (donationProducts && donationProducts.length > 0)) && tncchecked) {\r\n            setpfstate({\r\n                ...pfstate,\r\n                disablepay: false\r\n            })\r\n        }\r\n        else if (pfstate.disablepay == false) {\r\n            setpfstate({\r\n                ...pfstate,\r\n                disablepay: true\r\n            })\r\n        }\r\n\r\n        let btnStatus = document.getElementById(\"btnApplyMembership\");\r\n\r\n        if (formfields.checkBoxMember.value === true &&\r\n            btnStatus.name !== \"Remove\" &&\r\n            removeMembershipState === false) {\r\n            setpfstate({\r\n                ...pfstate,\r\n                disablepay: true\r\n            })\r\n        }\r\n\r\n    }, [events, tncchecked, formfields])\r\n\r\n\r\n    const getTNC = () => {\r\n        return ReactHtmlParser(TermsnConditionCheckMsg);\r\n    }\r\n\r\n    const tnccheckeHandle = (event) => {\r\n        settncChecked(event.target.checked);\r\n    };\r\n\r\n    const transFeeCheckHandler = (event) => {\r\n        actionShopCartShowTransFee(dispatch, event.target.checked);\r\n    };\r\n\r\n    const transFeeCheckBox = () => {\r\n\r\n        let showTFBox = true;\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeOptional === false && transactionfee.transactionFee[0].TransactionFeeByDefault === false) {\r\n                showTFBox = false;\r\n                if (!showTransFee && ApplyTransactionFee) {\r\n                    actionShopCartShowTransFee(dispatch, true);\r\n                }\r\n            }\r\n        }\r\n\r\n        return showTFBox;\r\n    };\r\n\r\n    const filterOptions = createFilterOptions({\r\n        stringify: (option) => option.Country + '' + option.State,\r\n    });\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetPaymentTransaction(dispatch);\r\n\r\n        seterrorMsg(\"\");\r\n\r\n        if (colorState !== 'info') {\r\n            actionResetIDMEUSERDATA(dispatch);\r\n            actionResetCostRate(dispatch);\r\n        }\r\n    }\r\n\r\n    const onClickPaymentHandler = () => {\r\n\r\n        actionResetPaymentTransaction(dispatch);\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n        actionResetMemberValidation(dispatch);\r\n        actionShopCartResetMembershipPackage(dispatch);\r\n        actionResetExtraItems(dispatch);\r\n        actionGetDonation(dispatch);\r\n        actionResetMembershipPackages(dispatch);\r\n        actionResetCostRate(dispatch);\r\n        actionResetCountryAndState(dispatch);\r\n\r\n        if (idmeuserdata && idmeuserdata.userdata) {\r\n            actionResetIDMEUSERDATA(dispatch);\r\n        }\r\n\r\n        if (bookingUDFS.bookingUDFs.length > 0) {\r\n            actionResetUDFs(dispatch);\r\n        }\r\n\r\n        if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n            actionResetMembershipUDFs(dispatch);\r\n        }\r\n\r\n        if (customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0) {\r\n            actionResetCustomerUdfs(dispatch);\r\n        }\r\n\r\n        if (customerAddresses && customerAddresses.length > 0) {\r\n            actionResetCustomerAddresses(dispatch);\r\n        }\r\n\r\n        if (customer.customer && customer.customer.length > 0) {\r\n            actionResetCustomer(dispatch);\r\n        }\r\n\r\n        ReloadGateway();\r\n\r\n        window.location.href = RedirectAfterCheckout;\r\n    }\r\n\r\n\r\n    const ReloadGateway = () => {\r\n        if (PaymentMethodType === \"Spreedly\") {\r\n            paymentsRef.current.ReloadSpreedly();\r\n        }\r\n        else {\r\n            paymentsRef.current.GPReload();\r\n        }\r\n    }\r\n\r\n    const reseterrorfield = () => {\r\n        actionResetFormErrorState(dispatch);\r\n    }\r\n\r\n    const errorfield = (errorfield, errortext, errorstate) => {\r\n        actionSetFormErrorState(dispatch, errorfield, errortext, errorstate)\r\n    }\r\n\r\n    const checkfieldvalidation = (fields) => {\r\n        for (let prop in fields) {\r\n            if (fields[prop] == \"\") {\r\n                if (prop === 'phone_number') {\r\n                    errorfield(prop, PhoneNumberMessage, true);\r\n                }\r\n                else {\r\n                    errorfield(prop, prop + \" is required.\", true);\r\n                }\r\n\r\n                inputreferences[prop].current.focus();\r\n                window.scrollBy(0, -65);\r\n                return false\r\n            }\r\n            else {\r\n                errorfield(prop, \"\", false)\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    const ValidateQuanity = () => {\r\n\r\n        let isvalid = true;\r\n        events.forEach(event => {\r\n\r\n            if (genfunction.IsEditEvent(bookingTypes, event))\r\n                return;\r\n\r\n            let MinTicket = event.TourProducts[0].MinimumTickets;\r\n\r\n            let fproduct = event.TourProducts.filter(p => p.AffectsCapacity);\r\n            let consumedQty = 0;\r\n            if (fproduct && fproduct.length > 0) {\r\n                consumedQty = fproduct.reduce((a, b) => {\r\n                    let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                    let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                    let newobj = { Quantity: aqty + bqty }\r\n                    return newobj;\r\n                }).Quantity;\r\n            }\r\n\r\n            if (consumedQty < MinTicket) {\r\n                seterrorMsg(\"Minimum tickets for event is \" + MinTicket + \", please add more tickets.\")\r\n                isvalid = false;\r\n            }\r\n        });\r\n\r\n        return isvalid;\r\n    }\r\n\r\n    const billingAddressSameAsAbover = () => {\r\n\r\n        if (formfields.billingAddressSame.value) {\r\n            formfields.shipping_address1.value = formfields.address1.value;\r\n            formfields.shipping_address2.value = formfields.address2.value;\r\n            formfields.shipping_city.value = formfields.city.value;\r\n            formfields.shipping_state.value = formfields.state.value;\r\n            formfields.shipping_zip.value = formfields.zip.value;\r\n            formfields.shipping_country.value = formfields.country.value;\r\n            formfields.shipping_phone_number.value = formfields.phone_number.value;\r\n        }\r\n    }\r\n\r\n    const BindRequiredFields = () => {\r\n\r\n        requiredFields = {};\r\n\r\n        if (PhoneNumberMandatory || (orderProducts && orderProducts.length > 0)) {\r\n            requiredFields[\"phone_number\"] = formfields.phone_number.value.trim();\r\n            requiredFields[\"shipping_phone_number\"] = formfields.shipping_phone_number.value;\r\n        }\r\n\r\n        requiredFields[\"email\"] = formfields.email.value.trim();\r\n        if (UseStreetAddressForAVS)\r\n            requiredFields[\"address1\"] = formfields.address1.value;\r\n        requiredFields[\"country\"] = formfields.country.value;\r\n        requiredFields[\"city\"] = formfields.city.value;\r\n\r\n        if (isShowCountryFields(\"ShowState\")) {\r\n            requiredFields[\"state\"] = formfields.state.value;\r\n        }\r\n        else {\r\n            formfields.state.value = \"0\";\r\n        }\r\n\r\n        if (isShowCountryFields(\"ShowPostalCode\")) {\r\n            if (formfields.zip.value.length > 5)\r\n                requiredFields[\"zip\"] = formfields.zip.value.substring(0, 5);\r\n            else\r\n                requiredFields[\"zip\"] = formfields.zip.value;\r\n        }\r\n        else {\r\n            formfields.zip.value = \"0\";\r\n        }\r\n\r\n        requiredFields[\"first_name\"] = formfields.first_name.value;\r\n        requiredFields[\"last_name\"] = formfields.last_name.value;\r\n\r\n        requiredFields[\"shipping_address1\"] = formfields.shipping_address1.value;\r\n        requiredFields[\"shipping_city\"] = formfields.shipping_city.value;\r\n\r\n        if (isShowShippingCountryFields(\"ShowState\")) {\r\n            requiredFields[\"shipping_state\"] = formfields.shipping_state.value;\r\n        }\r\n        else {\r\n            formfields.shipping_state.value = \"0\";\r\n        }\r\n\r\n        if (isShowShippingCountryFields(\"ShowPostalCode\")) {\r\n            requiredFields[\"shipping_zip\"] = formfields.shipping_zip.value;\r\n        }\r\n        else {\r\n            formfields.shipping_zip.value = \"0\";\r\n        }\r\n\r\n        requiredFields[\"shipping_country\"] = formfields.shipping_country.value;\r\n\r\n        if (ShowFullAddressOnCheckout == false) {\r\n            requiredFields[\"address1\"] = requiredFields[\"country\"] = requiredFields[\"city\"] = requiredFields[\"state\"] = undefined;\r\n            requiredFields[\"shipping_address1\"] = requiredFields[\"shipping_country\"] = requiredFields[\"shipping_city\"] = requiredFields[\"shipping_state\"] = undefined;\r\n        }\r\n\r\n        if (checkfieldvalidation(requiredFields) == false) { return; }\r\n        if (validateEmail(requiredFields[\"email\"]) == false) {\r\n            errorfield(\"email\", \"Please enter a valid email address\", true);\r\n            inputreferences['email'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else if (requiredFields[\"phone_number\"] && validatePhoneNum(requiredFields[\"phone_number\"]) == false) {\r\n            errorfield(\"phone_number\", \"Please enter a valid phone #\", true);\r\n            inputreferences['phone_number'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else if (requiredFields[\"shipping_phone_number\"] && validatePhoneNum(requiredFields[\"shipping_phone_number\"]) == false) {\r\n            errorfield(\"shipping_phone_number\", \"Please enter a valid phone #\", true);\r\n            inputreferences['shipping_phone_number'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else {\r\n\r\n            if (PhoneNumberMandatory || (orderProducts && orderProducts.length == 0)) {\r\n                requiredFields[\"phone_number\"] = formfields.phone_number.value;\r\n                requiredFields[\"shipping_phone_number\"] = formfields.shipping_phone_number.value;\r\n            }\r\n\r\n            requiredFields[\"address2\"] = formfields.address2.value;\r\n            requiredFields[\"shipping_address2\"] = formfields.shipping_address2.value;\r\n\r\n            if (shopcartreducer.membershipValidation.ismembershipApplied &&\r\n                ((shopcartreducer.membershipValidation.memberEmail.length > 0 && shopcartreducer.membershipValidation.memberEmail !== formfields.email.value)\r\n                    || (shopcartreducer.membershipValidation.memberLastName.length > 0 && shopcartreducer.membershipValidation.memberLastName !== formfields.last_name.value))) {\r\n                setColorState('');\r\n                seterrorMsg(UserMembershipValidatedEmailAndLastName);\r\n                return;\r\n            }\r\n        }\r\n\r\n        return requiredFields;\r\n    }\r\n\r\n    const ValidatePaymentFields = () => {\r\n        setColorState('');\r\n\r\n        if (ValidateQuanity() == false)\r\n            return;\r\n\r\n        billingAddressSameAsAbover();\r\n\r\n        reseterrorfield();\r\n\r\n        requiredFields = BindRequiredFields();\r\n\r\n        return requiredFields ? true : false;\r\n    }\r\n\r\n    const submitPaymentForm = () => {\r\n\r\n        if (ValidatePaymentFields()) {\r\n\r\n            if (genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts) > 0) {\r\n                requiredFields[\"month\"] = formfields.MonthSelect.value;\r\n                requiredFields[\"year\"] = formfields.YearSelect.value;\r\n                //reseterrorfield();\r\n                paymentsRef.current.SpreedlyTransactionCall(requiredFields);\r\n            }\r\n            else {\r\n                paymentsRef.current.SpreedlyZeroDollarTransactionCall(requiredFields);\r\n            }\r\n        }\r\n    }\r\n\r\n    const onClickPayBtn = useDebouncedCallback(submitPaymentForm, 5000, { leading: true });\r\n\r\n\r\n    function validateEmail(email) {\r\n        var re = new RegExp(EmailRegex);\r\n        return re.test(String(email).toLowerCase());\r\n    }\r\n\r\n    function validatePhoneNum(phoneNum) {\r\n        let cusNumber = phoneNum.replace(/\\D/g, \"\");\r\n        if (cusNumber != \"\" && cusNumber.length < 10) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    const fieldhandleChange = (event) => {\r\n        if (event.currentTarget.name === \"checkBoxMember\")\r\n            actionSetFieldValueState(dispatch, event.currentTarget.name, event.target.checked);\r\n        else\r\n            actionSetFieldValueState(dispatch, event.currentTarget.name, event.target.value);\r\n\r\n    };\r\n\r\n    const onChangeCountry = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"country\", value === null ? \"\" : value.Country);\r\n        onChangeState(event, null);\r\n    }\r\n\r\n    const onChangeState = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"state\", value === null ? \"\" : value.State);\r\n\r\n    }\r\n\r\n    const onChangeShippingCountry = (event, value) => {\r\n        if (value === null) {\r\n            actionSetFieldValueState(dispatch, \"shipping_country\", \"\")\r\n            actionSetFieldValueState(dispatch, \"shipping_state\", \"\")\r\n        }\r\n        else\r\n            actionSetFieldValueState(dispatch, \"shipping_country\", value.Country);\r\n\r\n        onChangeShippingState(event, null);\r\n\r\n    }\r\n    const onChangeShippingState = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"shipping_state\", value === null ? \"\" : value.State);\r\n\r\n    }\r\n    useEffect(() => {\r\n        actionGetCountryAndState(dispatch);\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (countryandstates && countryandstates.length > 0) {\r\n            if (formfields.country.value == \"\")\r\n                actionSetFieldValueState(dispatch, \"country\", countryandstates[0].Country);\r\n            if (formfields.shipping_country.value == \"\") {\r\n                actionSetFieldValueState(dispatch, \"shipping_country\", countryandstates[0].Country);\r\n            }\r\n        }\r\n    }, [countryandstates]);\r\n\r\n    const isShowCountryFields = (columnName) => {\r\n        return genfunction.GetValueFromCountryAndState(countryandstates, formfields.country.value, columnName);\r\n\r\n    }\r\n\r\n    const isShowShippingCountryFields = (columnName) => {\r\n        return genfunction.GetValueFromCountryAndState(countryandstates, formfields.shipping_country.value, columnName);\r\n    }\r\n\r\n    const openerrorpopup = () => {\r\n        return (paymenttranstate.errormsg != \"\" || errorMsg != \"\")\r\n    }\r\n\r\n    //Membership Validation\r\n\r\n    const [open, setOpen] = React.useState(false);\r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleCloseDialog = (event) => {\r\n        actionSetFieldValueState(dispatch, \"email\", event.currentTarget.name);\r\n        actionShopCartUpdateMembershipEmail(dispatch, event.currentTarget.name);\r\n        setOpen(false);\r\n    };\r\n\r\n    const memberValidationReducer = useSelector(state => state.reducerMemberValidation);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const tourEvents = useSelector(state => state.reducerExtraItems.extramItems);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n\r\n    useEffect(() => {\r\n        if (memberValidationReducer.loading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [memberValidationReducer.loading]);\r\n\r\n\r\n    useEffect(() => {\r\n        if (memberValidationReducer && (shopcartreducer.membershipValidation.ismembershipApplied === false)) {\r\n            if (memberValidationReducer.membervalidationError && memberValidationReducer.membervalidationError.length > 0) {\r\n\r\n                setColorState('');\r\n                seterrorMsg(memberValidationReducer.membervalidationError);\r\n            }\r\n\r\n            if (memberValidationReducer.membervalidation && memberValidationReducer.membervalidation.MemberValidation !== undefined) {\r\n\r\n                if (!genfunction.ValidateMemberValidate(memberValidationReducer.membervalidation.MemberValidation[0])) {\r\n                    seterrorMsg(LastNameAndEmailORPhoneORAddressForMembership);\r\n                    actionResetMemberValidation(dispatch);\r\n                    return;\r\n                }\r\n\r\n                if (events && events.length > 0) {\r\n\r\n                    if (memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty('AlertMessage')\r\n                    ) {\r\n                        setColorState('info');\r\n                        seterrorMsg(memberValidationReducer.membervalidation.MemberValidation[0].AlertMessage);\r\n                        actionSetFieldValueState(dispatch, \"memberno\", \"\");\r\n                        actionResetMemberValidation(dispatch);\r\n\r\n                        return;\r\n                    }\r\n\r\n                    if (memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty('CostRateID')) {\r\n                        if (DefaultCostRateID == memberValidationReducer.membervalidation.MemberValidation[0].CostRateID) {\r\n                            setColorState('info');\r\n                            seterrorMsg(MembershipCostRateMatches)\r\n                            actionSetFieldValueState(dispatch, \"memberno\", \"\");\r\n                            actionResetMemberValidation(dispatch);\r\n                            return;\r\n                        }\r\n\r\n                        if (DefaultCostRateID != memberValidationReducer.membervalidation.MemberValidation[0].CostRateID) {\r\n                            if (shopcartreducer.cashless.length > 0 || shopcartreducer.tourCoupons.length > 0) {\r\n                                RemoveCouponsAndGiftCards();\r\n                            }\r\n\r\n                            GetTourEvents();\r\n                        }\r\n                    }\r\n\r\n                }\r\n                else if ((membershipPackages && membershipPackages.length > 0) || (gatickets && gatickets.length > 0) || ShowGiftCards() || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n                    setColorState('info');\r\n                    seterrorMsg(ValidMemberMsg);\r\n\r\n                    actionShopCartValidMember(dispatch,\r\n                        memberValidationReducer.membervalidation.MemberValidation[0].CostRateID,\r\n                        formfields.memberno.value,\r\n                        formfields.email.value,\r\n                        formfields.last_name.value);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if (memberValidationReducer.membervalidation !== undefined && memberValidationReducer.membervalidation.MemberValidation !== undefined && memberValidationReducer.loading) {\r\n                actionEndMemberValidationLoading(dispatch);\r\n            }\r\n        }\r\n    }, [memberValidationReducer]);\r\n\r\n    useEffect(() => {\r\n        if ((shopcartreducer.IDME.isIdMeApplied || shopcartreducer.membershipValidation.ismembershipApplied) && removeMembershipState === false) {\r\n            if (genfunction.IsOrganization(events)) {\r\n                setremoveMembershipState(true);\r\n                actionResetMemberValidation(dispatch);\r\n\r\n                if (events && events.length > 0) {\r\n                    RemoveCouponsAndGiftCards();\r\n                    GetTourEvents();\r\n                }\r\n                else if ((membershipPackages && membershipPackages.length > 0) || (gatickets && gatickets.length > 0) || ShowGiftCards() || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n                    RemoveMembership();\r\n                }\r\n            }\r\n        }\r\n    }, [events])\r\n\r\n    useEffect(() => {\r\n\r\n        if (memberValidationReducer.membervalidation &&\r\n            memberValidationReducer.membervalidation.MemberValidation !== undefined\r\n            && (shopcartreducer.membershipValidation.ismembershipApplied === false) && events.length > 0 && formfields.checkBoxMember.value == true) {\r\n\r\n            actionShopCartApplyMembershipOnEvents(dispatch, memberValidationReducer.membervalidation.MemberValidation[0].CostRateID, tourEvents, formfields.memberno.value, formfields.email.value, formfields.last_name.value);\r\n\r\n            if (memberValidationReducer.membervalidation.MemberValidation[0].EmailMatched == false\r\n                && document.getElementById('Email').value !== memberValidationReducer.membervalidation.MemberValidation[0].EmailOnFile) {\r\n                handleClickOpen();\r\n            }\r\n\r\n            if (removemembershipcouponandgifts) {\r\n                setColorState('info');\r\n                seterrorMsg(CouponAndGiftcardAlreadyApplied);\r\n            }\r\n            else {\r\n                if (colorState !== 'info') {\r\n                    setColorState('info');\r\n                    seterrorMsg(Membershipsuccess);\r\n\r\n                    if (idmeuserdata && idmeuserdata.userdata.hasOwnProperty('attributes') && idmeuserdata.userdataerror.length < 1) {\r\n                        actionResetCostRate(dispatch);\r\n                        actionResetIDMEUSERDATA(dispatch);\r\n                    }\r\n                }\r\n            }\r\n        }\r\n\r\n        let btnStatus = document.getElementById(\"btnApplyMembership\");\r\n\r\n        if (btnStatus && btnStatus.name === \"Remove\" && removeMembershipState) {\r\n\r\n            actionShopCartApplyMembershipOnEvents(dispatch, DefaultCostRateID, tourEvents, 0, \"\", \"\");\r\n            RemoveMembership();\r\n        }\r\n        else if (genfunction.IsOrganization(events) && shopcartreducer.IDME.isIdMeApplied && removeMembershipState) {\r\n\r\n            actionShopCartApplyidmeCostratesOnEvents(dispatch, DefaultCostRateID, tourEvents);\r\n            RemoveMembership();\r\n        }\r\n    }, [tourEvents]);\r\n\r\n    useEffect(() => {\r\n        genfunction.CalculateAmountSelectedForMembers(events, bookingTypes);\r\n\r\n    }, [tourEvents, events])\r\n\r\n    const RemoveMembership = () => {\r\n\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n        actionEndMemberValidationLoading(dispatch);\r\n        actionSetFieldValueState(dispatch, \"memberno\", \"\");\r\n        actionSetFieldValueState(dispatch, \"checkBoxMember\", false);\r\n\r\n        setColorState('info');\r\n\r\n        if (removemembershipcouponandgifts)\r\n            seterrorMsg(RemoveMembershipCouponAndGiftcard)\r\n        else\r\n            seterrorMsg(RemoveMembershipsuccess)\r\n\r\n        setremoveMembershipState(false);\r\n\r\n    }\r\n\r\n    const GetTourEvents = () => {\r\n\r\n        let eventslist = genfunction.GetTourEventsList(events);\r\n        actionGetExtraItems(dispatch, null, null, null, null, null, null, eventslist);\r\n    }\r\n\r\n    const RemoveCouponsAndGiftCards = () => {\r\n\r\n        if (shopcartreducer.cashless.length > 0) {\r\n            actionShopCartRemoveGiftcards(dispatch);\r\n            setremovemembershipcouponandgifts(true);\r\n        }\r\n\r\n        if (shopcartreducer.tourCoupons.length > 0) {\r\n            actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n            setremovemembershipcouponandgifts(true);\r\n        }\r\n    }\r\n\r\n    const MemberValidation = (memberno) => {\r\n\r\n        errorcancelhandle();\r\n        setColorState('');\r\n        setremovemembershipcouponandgifts(false);\r\n\r\n        var requiredFields1 = {};\r\n        requiredFields1[\"memberno\"] = document.getElementById(\"memberno\").value;\r\n        requiredFields1[\"last_name\"] = document.getElementById(\"Lname\").value;\r\n        var email = document.getElementById(\"Email\").value.trim();\r\n        var phone = document.getElementById(\"phone_number\").value;\r\n        var address = '';\r\n\r\n        if ((ShowFullAddressOnCheckout)) {\r\n            address = document.getElementById(\"address1\").value;\r\n        }\r\n        var buttonState = document.getElementById(\"btnApplyMembership\").name;\r\n\r\n        if (buttonState === \"Apply\") {\r\n\r\n            if (checkfieldvalidation(requiredFields1) == false) { return; }\r\n\r\n            if (email.length < 1 && phone.length < 1 && address.length < 1) {\r\n                seterrorMsg(RequiredEmailORPhoneORAddressForMembership);\r\n                return;\r\n            }\r\n\r\n            if (email.length > 0 && validateEmail(email) == false) {\r\n                errorfield(\"email\", \"Please enter a valid email address\", true);\r\n                inputreferences['email'].current.focus();\r\n                window.scrollBy(0, -65);\r\n                return;\r\n            }\r\n\r\n            if (memberno.trim().length > 1) {\r\n\r\n                if (memberValidationReducer.membervalidation &&\r\n                    memberValidationReducer.membervalidation.MemberValidation !== undefined) {\r\n                    actionResetMemberValidation(dispatch);\r\n                }\r\n\r\n                if (events && events.length > 0) {\r\n                    let latestDate = genfunction.GetLatestTourEvent(events);\r\n                    actionGetMemberValidation(dispatch, memberno, requiredFields1[\"last_name\"], email, phone, address, latestDate);\r\n                }\r\n                else if ((membershipPackages && membershipPackages.length > 0) || (gatickets && gatickets.length > 0) || ShowGiftCards() || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n                    actionGetMemberValidation(dispatch, memberno, requiredFields1[\"last_name\"], email, phone, address, null);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n\r\n            setremoveMembershipState(true);\r\n            actionResetMemberValidation(dispatch);\r\n\r\n            if (events && events.length > 0) {\r\n                RemoveCouponsAndGiftCards();\r\n                GetTourEvents();\r\n            }\r\n            if ((membershipPackages && membershipPackages.length > 0) || (gatickets && gatickets.length > 0) || ShowGiftCards() || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n                RemoveMembership();\r\n            }\r\n        }\r\n    }\r\n\r\n    //Membership Validation End\r\n\r\n\r\n    //IDme Intregration Start\r\n\r\n    useEffect(() => {\r\n        if (events && events.length > 0 && window.location.href.includes('?#access_token=') && window.location.href.includes('token_type') && window.location.href.includes('expires_in')\r\n            && !idmeuserdata.loading && !idmeuserdata.userdata.hasOwnProperty('attributes') && idmeuserdata.userdataerror.length < 1) {\r\n\r\n            let indexOfAccessToken = parseInt(window.location.href.indexOf('access_token=')) + 13;\r\n            let idmeAccessToken = window.location.href.substr(indexOfAccessToken, 32);\r\n            actionGetIDMEUSERDATA(dispatch, idmeAccessToken);\r\n        }\r\n\r\n        if (events && events.length > 0 && window.location.href.includes('?#error=invalid_scope')) {\r\n            seterrorMsg(IDmeInvalidGroup);\r\n        }\r\n\r\n        if (events && events.length > 0 && window.location.href.includes('?#error=unsupported_response_type')) {\r\n            seterrorMsg(IDmeResponseTypeError);\r\n        }\r\n\r\n        if (events && events.length > 0 && window.location.href.includes('?#error=invalid_client')) {\r\n            seterrorMsg(IDmeInvalidClient);\r\n        }\r\n\r\n        if (events && events.length > 0 && window.location.href.includes('?#error=invalid_redirect_uri')) {\r\n            seterrorMsg(IDmeInvalidRedirectUri);\r\n        }\r\n\r\n        if (events && events.length > 0 && window.location.href.includes('?#error=access_denied')) {\r\n            seterrorMsg(IDmeAccessDenied);\r\n        }\r\n\r\n    }, [window.location.href]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (idmeuserdata.userdata &&\r\n            idmeuserdata.userdata.hasOwnProperty('attributes') && idmeuserdata.userdata.hasOwnProperty('status')) {\r\n\r\n            let group = '';\r\n            let subgroups = '';\r\n\r\n            if (idmeuserdata.userdata.status.length > 0) {\r\n                group = idmeuserdata.userdata.status[0].group;\r\n                subgroups = idmeuserdata.userdata.status[0].subgroups;\r\n            }\r\n\r\n            actionGetCostRate(dispatch, group, subgroups);\r\n        }\r\n\r\n        if (idmeuserdata.userdataerror.hasOwnProperty('Errors') && idmeuserdata.userdataerror.Errors.length > 0 && errorMsg.length == 0) {\r\n            seterrorMsg(idmeuserdata.userdataerror.Errors[0].ErrorMessage)\r\n        }\r\n    }, [idmeuserdata]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (costrate.costrate.hasOwnProperty('CostRateID') && costrate.costrate.CostRateID > -1 && shopcartreducer.IDME.idmecostrate !== costrate.costrate.CostRateID\r\n            && costrate.loading === false && !genfunction.IsOrganization(events)) {\r\n            GetTourEvents();\r\n        }\r\n\r\n        if (costrate.costraterror.length > 0) {\r\n            seterrorMsg(costrate.costraterror);\r\n        }\r\n    }, [costrate.costrate]);\r\n\r\n    useEffect(() => {\r\n        if (costrate.costrate.hasOwnProperty('CostRateID') && costrate.costrate.CostRateID > -1 && shopcartreducer.IDME.isIdMeApplied === false\r\n            && events.length > 0 && !genfunction.IsOrganization(events)) {\r\n            actionShopCartApplyidmeCostratesOnEvents(dispatch, costrate.costrate.CostRateID, tourEvents);\r\n            if (colorState !== 'info') {\r\n                setColorState('info');\r\n                seterrorMsg(IDmeSuccessMsg)\r\n            }\r\n        }\r\n\r\n    }, [tourEvents]);\r\n\r\n    const ConnectIDME = () => {\r\n\r\n        let idmeApiurl = CryptoAES.decrypt(IDmeAPIurl, '1271').toString(CryptoENC);\r\n        let idmeclientID = CryptoAES.decrypt(IDmeClientID, '1271').toString(CryptoENC);\r\n\r\n        let idmeurl = idmeApiurl + idmeclientID + '&redirect_uri=' + IDmeRedirectURI + '&response_type=' + IDmeResponseType + '&scopes=' + IDmeScope;\r\n        return idmeurl;\r\n    }\r\n\r\n    const ShowIDME = () => {\r\n\r\n        let show = false;\r\n        let costrate = DefaultCostRateID;\r\n\r\n        if (shopcartreducer.membershipValidation.ismembershipApplied) {\r\n            costrate = shopcartreducer.membershipValidation.membershipcostrate;\r\n        }\r\n\r\n        if (shopcartreducer.IDME.isIdMeApplied) {\r\n            costrate = shopcartreducer.IDME.idmecostrate;\r\n        }\r\n\r\n        events && events.length > 0 && events.map(e => {\r\n            e.TourProducts.map(prods => {\r\n                if (prods.hasOwnProperty('PriceMatrix') &&\r\n                    prods.PriceMatrix.filter(x => x.CostRateID === costrate && x.VerifyGroupMembership === true).length > 0) {\r\n                    show = true;\r\n                }\r\n            })\r\n        });\r\n\r\n        if (show && genfunction.IsOrganization(events)) {\r\n            show = false;\r\n        }\r\n\r\n        if (shopcartreducer.IDME.isIdMeApplied) {\r\n            show = false;\r\n        }\r\n\r\n        return show && CheckForIDmeValidProducts;\r\n    }\r\n\r\n    //IDme Intregration End\r\n\r\n    const changeBillingAddress = () => {\r\n        actionSetFieldValueState(dispatch, 'billingAddressSame', !formfields.billingAddressSame.value);\r\n    }\r\n    let displayclass = \"\";\r\n    if (paymenttranstate.loading)\r\n        displayclass = classes.hidden;\r\n    else if (paymenttranstate.haspaid)\r\n        displayclass = classes.displaynone;\r\n\r\n\r\n\r\n    const GetTransOptionalText = () => {\r\n        let optionalTxt = '';\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            optionalTxt = transactionfee.transactionFee[0].TransactionFeeOptionalText;\r\n\r\n            optionalTxt += ' [' + genfunction.ccyFormat(parseFloat(genfunction.TransactionFee(events, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts))) + ']';\r\n        }\r\n\r\n        return optionalTxt;\r\n    }\r\n\r\n    let showFreeTicket = ((events && events.length > 0) || (gatickets && gatickets.length > 0) || (membershipPackages && membershipPackages.length > 0) || (orderProducts && orderProducts.length) || (donationProducts && donationProducts.length > 0)) > 0 && genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts) == 0 ? true : false;\r\n\r\n    let memberemailonFile = GetEmailOnFileVal(memberValidationReducer);\r\n\r\n    let membershipInCart = membershipPackages && membershipPackages.length > 0 ? true : false;\r\n\r\n    return (\r\n        <Card id=\"pform\" className={classes.box100per}>\r\n            <CardHeader className={classes.primarycolor}\r\n                title={PaymentFormHeading}\r\n                titleTypographyProps={{ color: \"inherit\" }} />\r\n            <CardContent>\r\n                <Grid container>\r\n                    <Grid container item xs={12}>\r\n                        <Grid container spacing={2} className={displayclass}>\r\n                            <Grid item xs={6}>\r\n                                <TextField\r\n                                    id=\"Fname\"\r\n                                    label=\"First Name\"\r\n                                    name=\"first_name\"\r\n                                    fullWidth={true}\r\n                                    autoFocus\r\n                                    inputRef={inputreferences['first_name']}\r\n                                    error={errorstate.first_name.errorstate}\r\n                                    helperText={errorstate.first_name.errortext}\r\n                                    onChange={fieldhandleChange}\r\n                                    value={formfields.first_name.value}\r\n                                    inputProps={{ maxLength: AddPersonFirstNameLength }}\r\n                                    disabled={membershipInCart}\r\n                                />\r\n                            </Grid>\r\n                            <Grid item xs={6}>\r\n                                <TextField\r\n                                    id=\"Lname\"\r\n                                    label=\"Last Name\"\r\n                                    name=\"last_name\"\r\n                                    fullWidth={true}\r\n                                    inputRef={inputreferences['last_name']}\r\n                                    error={errorstate.last_name.errorstate}\r\n                                    helperText={errorstate.last_name.errortext}\r\n                                    onChange={fieldhandleChange}\r\n                                    value={formfields.last_name.value}\r\n                                    inputProps={{ maxLength: AddPersonLastNameLength }}\r\n                                    disabled={membershipInCart}\r\n                                />\r\n                            </Grid>\r\n                            <Grid item md={HideMemberValidation === true || genfunction.IsOrganization(events) ? 12 : 8} sm={HideMemberValidation === true || genfunction.IsOrganization(events) ? 12 : 8} xs={12} >\r\n                                <TextField\r\n                                    id=\"Email\"\r\n                                    label=\"Email\"\r\n                                    name=\"email\"\r\n                                    fullWidth={true}\r\n                                    inputRef={inputreferences['email']}\r\n                                    error={errorstate.email.errorstate}\r\n                                    helperText={errorstate.email.errortext}\r\n                                    type=\"email\"\r\n                                    onChange={fieldhandleChange}\r\n                                    value={formfields.email.value}\r\n                                    inputProps={{ maxLength: AddPersonEmailLength }}\r\n                                    disabled={membershipInCart}\r\n                                />\r\n                            </Grid>\r\n                            {HideMemberValidation === false && !genfunction.IsOrganization(events) ?\r\n                                <Grid item md={4} sm={4} xs={12} className={classes.imMember}>\r\n                                    <Checkbox\r\n                                        id=\"chkimMember\"\r\n                                        name=\"checkBoxMember\"\r\n                                        color=\"primary\"\r\n                                        size=\"small\"\r\n                                        checked={formfields.checkBoxMember.value}\r\n                                        onChange={fieldhandleChange}\r\n                                        inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                    />\r\n                                    <Typography color=\"textSecondary\" component=\"span\" >\r\n                                        {IamMember}\r\n                                    </Typography>\r\n                                </Grid> : null}\r\n\r\n                            {formfields.checkBoxMember.value ?\r\n                                <Grid item md={10} sm={9} xs={9}>\r\n                                    <TextField\r\n                                        id=\"memberno\"\r\n                                        name=\"memberno\"\r\n                                        label=\"Member #\"\r\n                                        inputRef={inputreferences['memberno']}\r\n                                        fullWidth={true}\r\n                                        error={errorstate.memberno.errorstate}\r\n                                        helperText={errorstate.memberno.errortext}\r\n                                        onChange={fieldhandleChange}\r\n                                        value={formfields.memberno.value}\r\n                                    />\r\n                                </Grid> : null}\r\n                            {formfields.checkBoxMember.value ?\r\n                                <Grid item md={2} sm={3} xs={3}>\r\n                                    <Button className={classes.btnAlign}\r\n                                        size=\"medium\" variant=\"contained\"\r\n                                        color=\"primary\"\r\n                                        id=\"btnApplyMembership\"\r\n                                        name={shopcartreducer.membershipValidation.ismembershipApplied ? 'Remove' : 'Apply'}\r\n                                        onClick={() => { MemberValidation(formfields.memberno.value) }}\r\n                                    >{shopcartreducer.membershipValidation.ismembershipApplied ? 'Remove' : 'Apply'}</Button>\r\n                                </Grid> : null}\r\n\r\n                            {ShowIDME() ?\r\n                                <Grid item xs={12} align=\"center\">\r\n                                    <div id=\"idme-verification\">\r\n                                        <Typography variant=\"body1\">{IDmeHeading}</Typography>\r\n                                        <a href={ConnectIDME()}>\r\n                                            <img src=\"https://s3.amazonaws.com/idme/developer/idme-buttons/assets/img/verify.svg\" height=\"50\" />\r\n                                        </a>\r\n                                        <p>\r\n                                            <Typography variant=\"body1\"> <img src=\"https://developers.id.me/assets/buttons/lock-icon-a5b18fbb34d393a80967c08399786f95955ee818b693b97d3f37698e2bc113f2.svg\" height=\"10\" />\r\n                                                Verification by ID.me ???\r\n                                                <a href=\"https://www.id.me/about\" target='_new'>What is ID.me?</a>\r\n                                            </Typography>\r\n                                        </p>\r\n                                    </div>\r\n                                </Grid>\r\n                                : null}\r\n\r\n                            <Grid item xs={12}>\r\n                                <TextField\r\n                                    id=\"phone_number\"\r\n                                    name=\"phone_number\"\r\n                                    label={(PhoneNumberMandatory || (orderProducts && orderProducts.length > 0)) ? \"Phone #\" : \"Phone # (Optional)\"}\r\n                                    onChange={fieldhandleChange}\r\n                                    value={formfields.phone_number.value}\r\n                                    inputRef={inputreferences['phone_number']}\r\n                                    fullWidth={true}\r\n\r\n                                    error={errorstate.phone_number.errorstate}\r\n                                    helperText={errorstate.phone_number.errortext}\r\n                                    InputProps={{\r\n                                        inputComponent: TextMaskCustom,\r\n                                        inputMode: 'numeric', pattern: '[0-9]*'\r\n                                    }}\r\n                                    disabled={membershipInCart}\r\n                                >\r\n                                </TextField>\r\n                            </Grid>\r\n\r\n\r\n                            {ShowFullAddressOnCheckout ?\r\n                                <>\r\n                                    <Grid item xs={12} md={12}>\r\n\r\n                                        {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) ?\r\n\r\n                                            <FormControl className={classes.box100per} error={errorstate.country.errorstate}>\r\n                                                <Autocomplete filterOptions={filterOptions}\r\n                                                    id=\"country\"\r\n                                                    name=\"country\"\r\n                                                    options={countryandstates}\r\n                                                    fullWidth={true}\r\n                                                    onChange={onChangeCountry}\r\n                                                    autoHighlight\r\n                                                    getOptionLabel={(option) => {\r\n                                                        if (option.hasOwnProperty('Country')) {\r\n                                                            return option.Country;\r\n                                                        }\r\n                                                        return option;\r\n                                                    }}\r\n                                                    value={formfields.country.value}\r\n                                                    //   defaultValue={ countryandstates[0]}\r\n                                                    renderOption={(option) => (\r\n                                                        <>\r\n                                                            <img\r\n                                                                loading=\"lazy\"\r\n                                                                width=\"40\"\r\n                                                                src={`https://flagcdn.com/w40/${option.ISOCode}.png`}\r\n                                                                srcSet={`https://flagcdn.com/w80/${option.ISOCode}.png 2x`}\r\n                                                                alt=\"\"\r\n                                                                style={{ margin: \"10px\" }}\r\n                                                            />\r\n                                                            {` ${option.Country} `}</>\r\n                                                    )}\r\n\r\n                                                    style={{ width: \"100%\" }}\r\n                                                    renderInput={(params) =>\r\n                                                    (<TextField inputRef={inputreferences['country']} label=\"Country\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                    />\r\n                                                    )}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                                <FormHelperText>{errorstate.country.errortext}</FormHelperText>\r\n                                            </FormControl>\r\n                                            : \"\"}\r\n\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={12}>\r\n                                        <TextField\r\n                                            id=\"address1\"\r\n                                            name=\"address1\"\r\n                                            label=\"Address 1\"\r\n                                            inputRef={inputreferences['address1']}\r\n                                            fullWidth={true}\r\n                                            error={errorstate.address1.errorstate}\r\n                                            helperText={errorstate.address1.errortext}\r\n                                            onChange={fieldhandleChange}\r\n                                            value={formfields.address1.value}\r\n                                            inputProps={{ maxLength: AddPersonAddress1Length }}\r\n                                            disabled={membershipInCart}\r\n                                        />\r\n                                    </Grid>\r\n                                    <Grid item xs={12}>\r\n                                        <TextField\r\n                                            id=\"address2\"\r\n                                            name=\"address2\"\r\n                                            label=\"Address 2 (Optional)\"\r\n                                            fullWidth={true}\r\n                                            error={errorstate.address2.errorstate}\r\n                                            helperText={errorstate.address2.errortext}\r\n                                            onChange={fieldhandleChange}\r\n                                            value={formfields.address2.value}\r\n                                            inputProps={{ maxLength: AddPersonAddress2Length }}\r\n                                            disabled={membershipInCart}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={12} md={12}>\r\n                                        <TextField\r\n                                            id=\"city\"\r\n                                            label={isShowCountryFields(\"CityText\")}\r\n                                            name=\"city\"\r\n                                            inputRef={inputreferences['city']}\r\n                                            fullWidth={true}\r\n                                            error={errorstate.city.errorstate}\r\n                                            helperText={errorstate.city.errortext}\r\n                                            onChange={fieldhandleChange}\r\n                                            value={formfields.city.value}\r\n                                            inputProps={{ maxLength: AddPersonCityLength }}\r\n                                            disabled={membershipInCart}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={12} md={isShowCountryFields(\"ShowPostalCode\") ? 6 : 12}>\r\n\r\n                                        {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) && isShowCountryFields(\"ShowState\") ?\r\n\r\n                                            <FormControl className={classes.box100per} error={errorstate.state.errorstate}>\r\n                                                <Autocomplete filterOptions={filterOptions}\r\n                                                    id=\"state\"\r\n                                                    name=\"state\"\r\n                                                    autoHighlight\r\n                                                    options={\r\n                                                        formfields.country.value ? countryandstates.filter(\r\n                                                            x => x.Country == formfields.country.value).map(o => o.hasOwnProperty(\"Picklist\") ? o.Picklist : [])[0]\r\n                                                            : []\r\n                                                    }\r\n                                                    fullWidth={true}\r\n                                                    onChange={onChangeState}\r\n                                                    getOptionLabel={(option) => {\r\n                                                        if (option.hasOwnProperty('State')) {\r\n                                                            return option.State;\r\n                                                        }\r\n                                                        return option;\r\n                                                    }}\r\n                                                    value={formfields.state.value}\r\n\r\n                                                    style={{ width: \"100%\" }}\r\n                                                    renderInput={(params) =>\r\n                                                    (<TextField inputRef={inputreferences['state']} label=\"State\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                    />\r\n                                                    )}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                                <FormHelperText>{errorstate.state.errortext}</FormHelperText>\r\n                                            </FormControl>\r\n                                            : \"\"}\r\n\r\n                                    </Grid>\r\n                                </>\r\n                                : \"\"}\r\n\r\n\r\n                            < Grid item xs={12} md={isShowCountryFields(\"ShowState\") ? 6 : 12}>\r\n                                {isShowCountryFields(\"ShowPostalCode\") == true ?\r\n                                    <TextField\r\n                                        id=\"zip\"\r\n                                        label={isShowCountryFields(\"PostalCodeName\")}\r\n                                        name=\"zip\"\r\n                                        inputRef={inputreferences['zip']}\r\n                                        fullWidth={true}\r\n                                        error={errorstate.zip.errorstate}\r\n                                        helperText={errorstate.zip.errortext}\r\n                                        onChange={fieldhandleChange}\r\n                                        value={formfields.zip.value}\r\n                                        inputProps={{ maxLength: AddPersonZipCodeLength }}\r\n                                        disabled={membershipInCart}\r\n                                    />\r\n                                    : \"\"}\r\n                            </Grid>\r\n\r\n\r\n                            {ShowFullAddressOnCheckout ?\r\n                                <>\r\n                                    <Grid item xs={12}>\r\n                                        <FormControlLabel\r\n                                            control={\r\n                                                <Checkbox\r\n                                                    inputProps={{ 'aria-label': 'primary checkbox' }}\r\n                                                    name=\"checkboxBillingAddress\"\r\n                                                    color=\"primary\"\r\n                                                    onChange={() => changeBillingAddress()}\r\n                                                    checked={formfields.billingAddressSame.value}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                            }\r\n                                            label=\"Billing Address same as above\"\r\n                                        />\r\n                                    </Grid>\r\n                                    {formfields.billingAddressSame.value == false ?\r\n                                        <>\r\n                                            <Grid item xs={12}>\r\n                                                <Typography variant=\"h4\">Billing Address</Typography>\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12}>\r\n                                                <TextField\r\n                                                    id=\"shipping_phone_number\"\r\n                                                    name=\"shipping_phone_number\"\r\n                                                    label={(PhoneNumberMandatory || (orderProducts && orderProducts.length > 0)) ? \"Phone #\" : \"Phone # (Optional)\"}\r\n                                                    inputRef={inputreferences['shipping_phone_number']}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.shipping_phone_number.value}\r\n                                                    fullWidth={true}\r\n                                                    error={errorstate.shipping_phone_number.errorstate}\r\n                                                    helperText={errorstate.shipping_phone_number.errortext}\r\n                                                    InputProps={{\r\n                                                        inputComponent: TextMaskCustom,\r\n                                                        inputMode: 'numeric', pattern: '[0-9]*'\r\n                                                    }}\r\n                                                    disabled={membershipInCart}\r\n                                                >\r\n                                                </TextField>\r\n                                            </Grid>\r\n                                            <Grid item xs={12} md={12}>\r\n\r\n                                                {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) ?\r\n\r\n                                                    <FormControl className={classes.box100per} error={errorstate.shipping_country.errorstate}>\r\n                                                        <Autocomplete filterOptions={filterOptions}\r\n                                                            id=\"shipping_country\"\r\n                                                            name=\"shipping_country\"\r\n                                                            options={countryandstates}\r\n                                                            fullWidth={true}\r\n                                                            onChange={onChangeShippingCountry}\r\n                                                            autoHighlight\r\n                                                            getOptionLabel={(option) => {\r\n                                                                if (option.hasOwnProperty('Country')) {\r\n                                                                    return option.Country;\r\n                                                                }\r\n                                                                return option;\r\n                                                            }}\r\n                                                            value={formfields.shipping_country.value}\r\n                                                            renderOption={(option) => (\r\n                                                                <>\r\n                                                                    <img\r\n                                                                        loading=\"lazy\"\r\n                                                                        width=\"40\"\r\n                                                                        src={`https://flagcdn.com/w40/${option.ISOCode}.png`}\r\n                                                                        srcSet={`https://flagcdn.com/w80/${option.ISOCode}.png 2x`}\r\n                                                                        alt=\"\"\r\n                                                                        style={{ margin: \"10px\" }}\r\n                                                                    />\r\n                                                                    {` ${option.Country} `}</>\r\n                                                            )}\r\n\r\n                                                            style={{ width: \"100%\" }}\r\n                                                            renderInput={(params) =>\r\n                                                            (<TextField inputRef={inputreferences['shipping_country']} label=\"Country\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                            />\r\n                                                            )}\r\n                                                            disabled={membershipInCart}\r\n                                                        />\r\n                                                        <FormHelperText>{errorstate.shipping_country.errortext}</FormHelperText>\r\n                                                    </FormControl>\r\n                                                    : \"\"}\r\n\r\n                                            </Grid>\r\n                                            <Grid item xs={12}>\r\n                                                <TextField\r\n                                                    id=\"shipping_address1\"\r\n                                                    name=\"shipping_address1\"\r\n                                                    label=\"Address 1\"\r\n                                                    inputRef={inputreferences['shipping_address1']}\r\n                                                    fullWidth={true}\r\n                                                    error={errorstate.shipping_address1.errorstate}\r\n                                                    helperText={errorstate.shipping_address1.errortext}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.shipping_address1.value}\r\n                                                    inputProps={{ maxLength: AddPersonAddress1Length }}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                            </Grid>\r\n                                            <Grid item xs={12}>\r\n                                                <TextField\r\n                                                    id=\"shipping_address2\"\r\n                                                    name=\"shipping_address2\"\r\n                                                    label=\"Address 2 (Optional)\"\r\n                                                    fullWidth={true}\r\n                                                    error={errorstate.shipping_address2.errorstate}\r\n                                                    helperText={errorstate.shipping_address2.errortext}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.shipping_address2.value}\r\n                                                    inputProps={{ maxLength: AddPersonAddress2Length }}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12} md={12}>\r\n                                                <TextField\r\n                                                    id=\"shipping_city\"\r\n                                                    label={isShowShippingCountryFields(\"CityText\")}\r\n                                                    name=\"shipping_city\"\r\n                                                    inputRef={inputreferences['shipping_city']}\r\n                                                    fullWidth={true}\r\n                                                    error={errorstate.shipping_city.errorstate}\r\n                                                    helperText={errorstate.shipping_city.errortext}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.shipping_city.value}\r\n                                                    inputProps={{ maxLength: AddPersonCityLength }}\r\n                                                    disabled={membershipInCart}\r\n                                                />\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12} md={isShowShippingCountryFields(\"ShowPostalCode\") ? 6 : 12}>\r\n\r\n                                                {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) && isShowShippingCountryFields(\"ShowState\") ?\r\n\r\n                                                    <FormControl className={classes.box100per} error={errorstate.shipping_state.errorstate}>\r\n\r\n                                                        <Autocomplete filterOptions={filterOptions}\r\n                                                            id=\"shipping_state\"\r\n                                                            name=\"shipping_state\"\r\n                                                            autoHighlight\r\n                                                            options={\r\n                                                                formfields.shipping_country.value ? countryandstates.filter(\r\n                                                                    x => x.Country == formfields.shipping_country.value).map(o => o.hasOwnProperty(\"Picklist\") ? o.Picklist : [])[0]\r\n                                                                    : []\r\n                                                            }\r\n                                                            fullWidth={true}\r\n                                                            onChange={onChangeShippingState}\r\n                                                            getOptionLabel={(option) => {\r\n                                                                if (option.hasOwnProperty('State')) {\r\n                                                                    return option.State;\r\n                                                                }\r\n                                                                return option;\r\n                                                            }}\r\n                                                            value={formfields.shipping_state.value}\r\n                                                            style={{ width: \"100%\" }}\r\n                                                            renderInput={(params) =>\r\n                                                            (<TextField inputRef={inputreferences['shipping_state']} label=\"State\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                            />\r\n                                                            )}\r\n                                                            disabled={membershipInCart}\r\n                                                        />\r\n                                                        <FormHelperText>{errorstate.shipping_state.errortext}</FormHelperText>\r\n                                                    </FormControl>\r\n                                                    : \"\"}\r\n\r\n\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12} md={isShowShippingCountryFields(\"ShowState\") ? 6 : 12}>\r\n                                                {isShowShippingCountryFields(\"ShowPostalCode\") ?\r\n                                                    <TextField\r\n                                                        id=\"shipping_zip\"\r\n                                                        label={isShowShippingCountryFields(\"PostalCodeName\")}\r\n                                                        name=\"shipping_zip\"\r\n                                                        inputRef={inputreferences['shipping_zip']}\r\n                                                        fullWidth={true}\r\n                                                        error={errorstate.shipping_zip.errorstate}\r\n                                                        helperText={errorstate.shipping_zip.errortext}\r\n                                                        onChange={fieldhandleChange}\r\n                                                        value={formfields.shipping_zip.value}\r\n                                                        inputProps={{ maxLength: AddPersonZipCodeLength }}\r\n                                                        disabled={membershipInCart}\r\n                                                    />\r\n                                                    : \"\"}\r\n                                            </Grid>\r\n                                        </>\r\n                                        : null}\r\n                                </> : \"\"}\r\n                            {showFreeTicket ? <FreeTicketForm /> : null}\r\n                            <Grid container item spacing={2} className={(showFreeTicket && PaymentMethodType === \"Spreedly\") || paymenttranstate.loading ? classes.displaynone : classes.visible} >\r\n\r\n                                <Grid item xs={12}>\r\n                                    <Payments type={PaymentMethodType}\r\n                                        ref={paymentsRef} ValidatePaymentFields={ValidatePaymentFields}\r\n                                        showFreeTkt={showFreeTicket}\r\n                                        managemyBooking={false}\r\n                                        AdditionBooking={false}\r\n                                    />\r\n                                </Grid>\r\n                            </Grid>\r\n\r\n\r\n                            {PaymentMethodType === \"Spreedly\" ?\r\n                                <>\r\n                                    {ApplyTransactionFee && transFeeCheckBox() === true && showFreeTicket === false ?\r\n                                        < Grid item xs={12}>\r\n                                            <Checkbox\r\n                                                color=\"primary\"\r\n                                                checked={showTransFee}\r\n                                                onChange={transFeeCheckHandler}\r\n                                                inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                            />\r\n                                            <Typography color=\"textSecondary\" component=\"span\" >\r\n                                                {GetTransOptionalText()}\r\n                                            </Typography>\r\n                                        </Grid>\r\n                                        : null}\r\n\r\n                                    < Grid item xs={12}>\r\n                                        <Checkbox\r\n                                            color=\"primary\"\r\n                                            checked={tncchecked}\r\n                                            onChange={tnccheckeHandle}\r\n                                            inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                        />\r\n                                        <Typography color=\"textSecondary\" component=\"span\" >\r\n                                            {TermsnConditionCheckBoxText}\r\n                                            <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                                        </Typography>\r\n\r\n                                    </Grid>\r\n                                    <Grid item xs={12}>\r\n                                        {tncchecked && EnableAlternateMerchantOnline && !showFreeTicket && (orderProducts && orderProducts.length < 1) ? <MultiPayments /> : null}\r\n                                    </Grid>\r\n                                    <Grid item xs={12}>\r\n                                        <Button\r\n\r\n                                            disabled={pfstate.disablepay ||\r\n                                                ((genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts) > 0)\r\n                                                    && errorstate.cvv.errorstate) || onClickPayBtn.isPending()\r\n                                                || stopUserToPurchase === true}\r\n                                            className={classes.primarycolor + \" \" + classes.box100per}\r\n                                            onClick={onClickPayBtn}\r\n                                        >Pay</Button>\r\n                                    </Grid> </> : null}\r\n\r\n                        </Grid>\r\n                        <ProcessingBox isshow={paymenttranstate.loading} title={Titleforloadingpayment} text1={Subtitle1forloadingpayment} text2={Subtitle2forloadingpayment} ></ProcessingBox>\r\n                        <PaymentCompletebox isshow={paymenttranstate.haspaid} onClickHandler={onClickPaymentHandler} transaction={paymenttranstate.paymentinfo} ></PaymentCompletebox>\r\n                        <ErrorHandling color={colorState} msg={paymenttranstate.errormsg != \"\" ? paymenttranstate.errormsg : errorMsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n                        <DialogeBox open={opentnc} title={\"Terms and Conditions\"}\r\n                            message={getTNC()}\r\n                            button1text={\"Close\"}\r\n                            button1clickhandler={() => { setopentnc(false) }}></DialogeBox>\r\n                        <Dialog\r\n                            open={open}\r\n                            onClose={handleCloseDialog}\r\n                            aria-labelledby=\"alert-dialog-title\"\r\n                            aria-describedby=\"alert-dialog-description\"\r\n                            disableEscapeKeyDown={false}\r\n                            disableBackdropClick={false}\r\n                        >\r\n                            <DialogTitle id=\"alert-dialog-title\">{\"Confirmation\"}</DialogTitle>\r\n                            <DialogContent>\r\n                                <DialogContentText id=\"alert-dialog-description\">\r\n                                    Email does not match. Email on file is {memberemailonFile}. Would you like to use this email or update the email address on file?\r\n                                </DialogContentText>\r\n                            </DialogContent>\r\n                            <DialogActions>\r\n                                <Button id=\"1\" name={memberemailonFile} onClick={handleCloseDialog} color=\"primary\">\r\n                                    Use {memberemailonFile}\r\n                                </Button>\r\n                                <Button id=\"2\" name={formfields.email.value} onClick={handleCloseDialog} color=\"primary\" autoFocus>\r\n                                    Update my record to use {formfields.email.value}.\r\n                                </Button>\r\n                            </DialogActions>\r\n                        </Dialog>\r\n\r\n                    </Grid>\r\n                </Grid>\r\n            </CardContent>\r\n\r\n        </Card >\r\n\r\n    );\r\n\r\n});\r\n\r\nexport default PaymentForm;\r\n\r\nfunction GetEmailOnFileVal(memberValidationReducer) {\r\n    return memberValidationReducer.membervalidation !== undefined\r\n        && memberValidationReducer.membervalidation.MemberValidation !== undefined\r\n        && memberValidationReducer.membervalidation.MemberValidation[0] !== undefined\r\n        && memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty(\"EmailOnFile\") ?\r\n        memberValidationReducer.membervalidation.MemberValidation[0].EmailOnFile : '';\r\n}\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { TextField, Button, Card, CardContent, CardHeader, Grid } from '@material-ui/core';\r\nimport { actionGetCoupon, actionResetCoupon, actionEndCouponLoading } from 'actions';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport PinCodeDialogeBox from '../../../components/DialogeBox/PinCodeDialogeBox'\r\nimport { genfunction } from '../../../helpers'\r\nimport { actionAddGiftCardHold, actionResetGiftCardHoldState, actionRecalculateGiftCardHold } from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions';\r\nimport { actionShopCardAddGiftCard, actionResetCouponAlreadyApplied, actionResetCouponRemoveReset } from 'actions';\r\nimport { actionResetUniqueCouponCardHoldState } from 'actions';\r\nimport { actionDeleteUniqueCoupon } from 'actions';\r\n\r\nconst { HighestCouponAlreadyApplied, HideCoupons, HideGiftCards, GiftCardEnterPinTitle, GiftCardEnterPinSubTitle1, UseGiftcardPIN, CouponNotApplicableOnOtherPaymentMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    btnAlign: {\r\n        marginTop: '17px'\r\n    }\r\n}));\r\n\r\nconst CouponGiftCard = props => {\r\n    const [state, setState] = React.useState({ couponCode: '' });\r\n    const { products } = props;\r\n    const classes = useStyles();\r\n    const [giftCardno, setgiftCardno] = useState(\"\");\r\n    const [Pin, setPin] = useState(\"\");\r\n    const [showPinPopUp, setShowPinPopUp] = useState(\"\");\r\n    const [errormsg, seterrormsg] = useState(\"\");\r\n    const [colorState, setColorState] = React.useState('');\r\n\r\n    const dispatch = useDispatch();\r\n    const { GiftCardHold, GiftCardHoldLoading, GiftCardHoldError } = useSelector(state => state.reducerGiftCardHold);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n\r\n    useEffect(() => {\r\n        seterrormsg(GiftCardHoldError)\r\n    }, [GiftCardHoldError]);\r\n\r\n\r\n    useEffect(() => {\r\n        if (GiftCardHoldLoading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [GiftCardHoldLoading]);\r\n\r\n    useEffect(() => {\r\n        if (GiftCardHold.GiftcardHoldRef)\r\n            ValidateAndAddGiftCard(GiftCardHold)\r\n    }, [GiftCardHold]);\r\n\r\n    useEffect(() => {\r\n        RecalculationGiftCard();\r\n    }, [events, donation, showTransFee])\r\n\r\n    const ValidateAndAddGiftCard = (giftcardholdresponse) => {\r\n        if (giftcardholdresponse.HoldAmount == 0) {\r\n            seterrormsg('Giftcard is already consumed');\r\n        }\r\n        else {\r\n            actionShopCardAddGiftCard(dispatch, giftcardholdresponse);\r\n            actionResetGiftCardHoldState(dispatch);\r\n        }\r\n    }\r\n\r\n    const RecalculationGiftCard = () => {\r\n        const totalamount = genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n        if (totalamount != 0 && cashless.length > 0) {\r\n            actionRecalculateGiftCardHold(dispatch);\r\n        }\r\n    }\r\n\r\n    const CheckGiftCard = (giftcardNo) => {\r\n        const totalamount = genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n        if (totalamount <= 0) {\r\n            seterrormsg('Please add item in cart before applying Giftcard.')\r\n        }\r\n        else if (giftCardno == '') {\r\n            seterrormsg('Please enter Giftcard number.')\r\n        }\r\n        else {\r\n\r\n            if (UseGiftcardPIN == \"false\") {\r\n                actionAddGiftCardHold(dispatch, giftcardNo);\r\n                setgiftCardno('');\r\n            }\r\n            else {\r\n                setPin(\"\");\r\n                setShowPinPopUp(true);\r\n            }\r\n        }\r\n    }\r\n\r\n    const hasamount = () => {\r\n        const totalamount = genfunction.subproducttotal(events, cashless, donation, (showTransFee ? transactionfee.transactionFee[0] : null), membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n        return totalamount > 0;\r\n    }\r\n\r\n    const openerrorpopup = () => {\r\n        return (errormsg != \"\")\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetGiftCardHoldState(dispatch);\r\n        actionResetUniqueCouponCardHoldState(dispatch);\r\n        actionResetCouponAlreadyApplied(dispatch);\r\n        actionResetCoupon(dispatch);\r\n        setgiftCardno('');\r\n        seterrormsg('');\r\n    }\r\n\r\n    const reducerCoupon = useSelector(state => state.reducerCoupon);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const uniqueCouponHolds = useSelector(state => state.reducerUniqueCouponHolds);\r\n\r\n    const handleChange = (e) => {\r\n\r\n        setState({ ...state, couponCode: e.target.value });\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (reducerCoupon.couponError !== undefined && reducerCoupon.couponError.length > 0) {\r\n            seterrormsg(reducerCoupon.couponError);\r\n        }\r\n    }, [reducerCoupon.couponError]);\r\n\r\n    useEffect(() => {\r\n        if (shopcartreducer !== undefined && shopcartreducer.couponAlreadyApplied) {\r\n            seterrormsg(HighestCouponAlreadyApplied);\r\n        }\r\n    }, [shopcartreducer.couponAlreadyApplied]);\r\n\r\n    useEffect(() => {\r\n        if (uniqueCouponHolds !== undefined && uniqueCouponHolds.UniqueCouponError.length > 0) {\r\n            seterrormsg(uniqueCouponHolds.UniqueCouponError);\r\n            actionEndCouponLoading(dispatch);\r\n        }\r\n    }, [uniqueCouponHolds.UniqueCouponError]);\r\n\r\n    useEffect(() => {\r\n        if (shopcartreducer !== undefined && shopcartreducer.removeCoupon.length > 0) {\r\n            actionDeleteUniqueCoupon(dispatch, shopcartreducer.removeCoupon);\r\n            actionResetCouponRemoveReset(dispatch);\r\n        }\r\n    }, [shopcartreducer.removeCoupon]);\r\n\r\n    useEffect(() => {\r\n        if (reducerCoupon.loading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [reducerCoupon.loading]);\r\n\r\n    const redirectCall = (couponCode) => {\r\n\r\n        if (couponCode.length > 0) {\r\n\r\n            if (!CheckUniqueCouponAlreadyApplied(couponCode)) {\r\n                actionGetCoupon(dispatch, couponCode);\r\n                setState({ ...state, couponCode: '' });\r\n\r\n                if (shopcartreducer.events.filter(x => x.PaymentOption === \"OtherPay\").length > 0) {\r\n                    setColorState('info');\r\n                    seterrormsg(CouponNotApplicableOnOtherPaymentMsg)\r\n                }\r\n            }\r\n            else {\r\n                seterrormsg(\"Unique Coupon already applied, please remove existing coupon and try again.\");\r\n            }\r\n        }\r\n    }\r\n\r\n    const CheckUniqueCouponAlreadyApplied = (couponCode) => {\r\n\r\n        let exist = false;\r\n        if (events && events.length > 0) {\r\n\r\n            events.map(e => {\r\n\r\n                if (e.CouponItems.filter(x => x.UniqueCouponCode == couponCode && x.isUniqueCoupon).length > 0) {\r\n                    exist = true;\r\n                }\r\n            });\r\n        }\r\n\r\n        return exist;\r\n    }\r\n\r\n    const GetPinPopupButtonText = () => {\r\n        if (UseGiftcardPIN == \"optional\")\r\n            return \"Skip, I don???t have one\";\r\n        else if (UseGiftcardPIN == \"required\")\r\n            return \"Cancel\";\r\n    }\r\n\r\n    const PinConfirmHandler = () => {\r\n        if (Pin == undefined || Pin == \"\") {\r\n            seterrormsg(\"Please Enter valid Pin\")\r\n        }\r\n        else {\r\n            setShowPinPopUp(false);\r\n            actionAddGiftCardHold(dispatch, giftCardno + \"--\" + Pin);\r\n            setgiftCardno('');\r\n        }\r\n    }\r\n\r\n    const PinCancelHandler = () => {\r\n        setShowPinPopUp(false);\r\n        setgiftCardno('');\r\n        if (UseGiftcardPIN == \"optional\") {\r\n            actionAddGiftCardHold(dispatch, giftCardno);\r\n        }\r\n    }\r\n\r\n    const onChangePinHandler = (pin) => {\r\n        setPin(pin);\r\n    }\r\n\r\n    const GiftCardsOnly = () => {\r\n        let res = false;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0 && giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n            res = true;\r\n        }\r\n\r\n        if ((events && events.length > 0) || (membershipPackages && membershipPackages.length > 0) || (gatickets && gatickets.length > 0) || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n            res = false;\r\n        }\r\n\r\n        return res;\r\n    }\r\n    return (\r\n        <Grid>\r\n            <ErrorHandling color={colorState} msg={errormsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n            <PinCodeDialogeBox open={showPinPopUp} button1text={GetPinPopupButtonText()} button2text=\"OK\"\r\n                button1clickhandler={PinCancelHandler} button2clickhandler={PinConfirmHandler} pinTextChange={onChangePinHandler}\r\n                title={GiftCardEnterPinTitle} message={GiftCardEnterPinSubTitle1} ></PinCodeDialogeBox>\r\n            {HideCoupons === false || HideGiftCards === false ?\r\n\r\n                <Grid item xs={12}>\r\n                    <Card>\r\n                        <CardHeader className={classes.tourheaderbox}\r\n                            title=\"Apply a Coupon or Gift Card\"\r\n                            titleTypographyProps={{ color: \"inherit\" }}\r\n                        />\r\n                        <CardContent>\r\n                            <Grid container>\r\n\r\n                                <Grid container item sm={12} >\r\n                                    {HideCoupons === false ? <Grid item sm={6} xs={12}>\r\n                                        <TextField id=\"standard-basic\"\r\n                                            onChange={e => handleChange(e)}\r\n                                            label=\"Enter Coupon Code\"\r\n                                            value={state.couponCode}\r\n                                        />\r\n                                        <Button className={classes.btnAlign} size=\"small\" variant=\"contained\" color=\"primary\"\r\n                                            onClick={() => redirectCall(state.couponCode)}\r\n                                            disabled={GiftCardsOnly()}\r\n                                        >Apply</Button>\r\n                                    </Grid> : null}\r\n\r\n                                    {HideGiftCards === false ? <Grid item sm={6} xs={12}>\r\n                                        <TextField id=\"standard-basic\" label=\"Enter Gift Card Number\"\r\n                                            value={giftCardno}\r\n                                            onChange={event => {\r\n                                                setgiftCardno(event.target.value);\r\n                                            }} />\r\n                                        <Button className={classes.btnAlign} size=\"small\" variant=\"contained\"\r\n                                            disabled={!hasamount()}\r\n                                            color=\"primary\"\r\n                                            onClick={() => { CheckGiftCard(giftCardno) }}\r\n                                        >Apply</Button>\r\n                                    </Grid> : null}\r\n\r\n                                </Grid>\r\n                            </Grid>\r\n                        </CardContent>\r\n                    </Card>\r\n                </Grid>\r\n                : null}\r\n\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default CouponGiftCard;\r\n","import React from 'react';\r\nimport { Typography } from '@material-ui/core';\r\nimport { useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers'\r\nconst { CartDiscardMsg, CartDiscardTime } = window['runConfig'];\r\n\r\n\r\n\r\nconst CartDiscardTimeInfo = props => {\r\n\r\n    const carddiscard = useSelector(state => state.reducerCardDiscardTime);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const MembershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const GATickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    function millisecondsToTime(milli) {\r\n        var seconds = Math.floor((milli / 1000) % 60);\r\n        var minutes = Math.floor((milli / (60 * 1000)) % 60);\r\n        return minutes + \":\" + genfunction.PaddingString(seconds, \"0\", 2);\r\n    }\r\n\r\n    return (\r\n        (events.length > 0 || MembershipPackages.length > 0 || GATickets.length > 0 || orderProducts.length > 0 || ShowGiftCards() || donationProducts.length > 0) && CartDiscardTime > 0 ?\r\n\r\n            <Typography variant=\"h5\" component=\"h5\" style={{ marginTop: props.MarginTop }}>\r\n                {CartDiscardMsg} {\" \"} {millisecondsToTime(carddiscard.DiscardTime * 1000)}\r\n            </Typography> : \"\"\r\n\r\n    );\r\n};\r\n\r\nexport default CartDiscardTimeInfo;\r\n","import React, { useEffect } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { actionGetDonation } from 'actions';\r\nimport { actionShopCartUpdatePopupCounts } from 'actions';\r\nimport { FormattedInputs } from '../../../components/InputControls';\r\nimport { makeStyles } from '@material-ui/styles';\r\n\r\nconst { DonationProductID, DonationHeading, DonationDetails, InvalidDOnationAmount, Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    errorFont: {\r\n        color: 'red'\r\n    }\r\n}));\r\n\r\nexport default function DonationPopUp(props) {\r\n\r\n    const classes = useStyles();\r\n\r\n    useEffect(() => {\r\n        if (DonationProductID !== undefined) {\r\n            actionGetDonation(dispatch, DonationProductID, 'donation');\r\n        }\r\n    }, []);\r\n\r\n    const dispatch = useDispatch();\r\n    const donations = useSelector(state => state.reducerDonation);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n\r\n    const [open, setOpen] = React.useState(false);\r\n    const [showOthers, setshowOthers] = React.useState(false);\r\n    const [donationPrice, setdonationPrice] = React.useState(0);\r\n    const [productName, setproductName] = React.useState('');\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n    if (props.showDialog && open === false && ((events && events.length > 0) || (gatickets && gatickets.length > 0) || (membershipPackages && membershipPackages.length > 0) || (donationProducts && donationProducts.length > 0) || ShowGiftCards()) && donation.popupCounts === 0 && donationProducts.length == 0) {\r\n        setOpen(true);\r\n        actionShopCartUpdatePopupCounts(dispatch)\r\n    }\r\n\r\n    const Validated = (val) => {\r\n        if (val)\r\n            seterrorMsg('');\r\n        else\r\n            seterrorMsg(InvalidDOnationAmount);\r\n    }\r\n\r\n    const ApplyDonation = () => {\r\n\r\n        if (donationPrice === \"\" || donationPrice === 0 || donationPrice < 0.1) {\r\n            Validated(false);\r\n            return;\r\n        }\r\n\r\n        if (errorMsg !== '' && errorMsg.length > 0) {\r\n            return;\r\n        }\r\n\r\n        props.ApplyDonation(DonationProductID, productName, donationPrice, showOthers ? true : false);\r\n        props.CloseDonationPopUp();\r\n        setOpen(false);\r\n    }\r\n\r\n    const handleClose = () => {\r\n        props.CloseDonationPopUp();\r\n        setOpen(false);\r\n        Validated(true);\r\n    };\r\n\r\n    const handleChange = (event) => {\r\n\r\n        if (event.target.value === \"Other\") {\r\n            setdonationPrice('');\r\n            setshowOthers(true)\r\n        }\r\n        else {\r\n            setshowOthers(false);\r\n            setdonationPrice(event.target.value);\r\n            setproductName(event.target.name);\r\n            Validated(true);\r\n        }\r\n    };\r\n\r\n    const handleOtherPrice = (event) => {\r\n        setdonationPrice(event.target.value);\r\n        setproductName(event.target.name);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Dialog open={open} onClose={handleClose} aria-labelledby=\"form-dialog-title\">\r\n                <DialogTitle id=\"form-dialog-title\">{DonationHeading}</DialogTitle>\r\n                <DialogContent>\r\n                    <DialogContentText>\r\n                        {DonationDetails}\r\n                    </DialogContentText>\r\n                    <DialogContentText className={classes.errorFont}>\r\n                        {errorMsg}\r\n                    </DialogContentText>\r\n                    <RadioGroup aria-label=\"donations\" name=\"donationspop\" >\r\n\r\n                        {donations.donations !== \"nocontent\" && donations.donations.length > 0 ?\r\n                            donations.donations.map((dona, i) => {\r\n\r\n                                return dona.Price > 0 ?\r\n\r\n                                    dona.hasOwnProperty(\"MaxPrice\") ?\r\n                                        <div className={'MuiFormControlLabel-root'} key={donations}>\r\n                                            <FormControlLabel key={i} value=\"Other\" control={<Radio />} label=\"Other\" onChange={handleChange} />\r\n                                            {showOthers ?\r\n                                                <FormattedInputs\r\n                                                    minValue={dona.Price}\r\n                                                    maxValue={dona.MaxPrice}\r\n                                                    productName={dona.ProductName}\r\n                                                    handleOtherPrice={handleOtherPrice}\r\n                                                    Validated={Validated}\r\n                                                    keyVal={i}\r\n                                                ></FormattedInputs> : null}\r\n\r\n                                        </div>\r\n                                        :\r\n                                        <FormControlLabel key={i} value={dona.Price.toString()} name={dona.ProductName} control={<Radio />} label={Currency + dona.Price} onChange={handleChange} />\r\n\r\n                                    : null\r\n                            }) : null}\r\n\r\n                    </RadioGroup>\r\n                </DialogContent>\r\n                <DialogActions>\r\n\r\n                    <Button onClick={ApplyDonation} variant=\"contained\" size=\"medium\" color=\"primary\" >\r\n                        Donate\r\n                    </Button>\r\n                    <Button onClick={handleClose} variant=\"contained\" size=\"medium\" color=\"primary\" >\r\n                        No Thanks\r\n                    </Button>\r\n                </DialogActions>\r\n            </Dialog>\r\n        </div>\r\n    );\r\n}\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, CardHeader, Grid, Typography, Button } from '@material-ui/core';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport { FormattedInputs } from '../../../components/InputControls';\r\nimport { actionGetDonation } from 'actions';\r\n\r\nconst { DonationHeading, DonationDetails, ShowDonationsSections, DonationProductID, InvalidDOnationAmount, Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    itemsmarginR: {\r\n        'margin-right': '10px',\r\n        display: 'block !important'\r\n    },\r\n    donateBtn: {\r\n        justifyContent: 'center',\r\n        display: 'flex',\r\n        marginTop: '10px'\r\n    },\r\n    errorFont: {\r\n        color: 'red'\r\n    }\r\n}));\r\n\r\n\r\nconst Donations = props => {\r\n\r\n    const donations = useSelector(state => state.reducerDonation);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n\r\n    const [showOthers, setshowOthers] = React.useState(false);\r\n    const [donationPrice, setdonationPrice] = React.useState(0);\r\n    const [productName, setproductName] = React.useState('');\r\n    const [checkexist, setcheckexist] = React.useState(false);\r\n    const [validateMsg, setvalidateMsg] = useState('');\r\n\r\n    const [errormsg, seterrormsg] = useState(\"\");\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    useEffect(() => {\r\n        if (DonationProductID !== undefined && (donations.donations.length === 0 || donations.donations.length === undefined))\r\n            actionGetDonation(dispatch, DonationProductID, 'donation');\r\n    }, []);\r\n\r\n\r\n    useEffect(() => {\r\n        if (donation.isdonationApplied === false) {\r\n            setcheckexist(false);\r\n            setdonationPrice(0);\r\n        }\r\n    }, [donation.isdonationApplied]);\r\n\r\n    const openerrorpopup = () => {\r\n        return (errormsg != \"\")\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n\r\n        seterrormsg('');\r\n    }\r\n\r\n\r\n    const ApplyDonation = () => {\r\n\r\n        if (donationPrice === \"\" || donationPrice === 0 || donationPrice < 0.1) {\r\n            Validated(false);\r\n            return;\r\n        }\r\n\r\n        if (validateMsg !== '' && validateMsg.length > 0) {\r\n            return;\r\n        }\r\n\r\n        props.ApplyDonation(DonationProductID, productName, donationPrice, showOthers ? true : false);\r\n    }\r\n\r\n    const Validated = (val) => {\r\n        if (val)\r\n            setvalidateMsg('');\r\n        else\r\n            setvalidateMsg(InvalidDOnationAmount);\r\n    }\r\n\r\n    const handleChange = (event) => {\r\n\r\n        setcheckexist(true);\r\n\r\n        if (event.target.value === \"Other\") {\r\n            setshowOthers(true)\r\n            setdonationPrice('');\r\n        }\r\n        else {\r\n            setshowOthers(false);\r\n            setdonationPrice(event.target.value);\r\n            setproductName(event.target.name);\r\n            setvalidateMsg('');\r\n        }\r\n    };\r\n\r\n    const handleOtherPrice = (event) => {\r\n        setdonationPrice(event.target.value);\r\n        setproductName(event.target.name);\r\n\r\n        if (donation && donation.isdonationApplied && donation.otherAmount) {\r\n            setshowOthers(true);\r\n            setcheckexist(true);\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Grid>\r\n            <ErrorHandling msg={errormsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n\r\n            {ShowDonationsSections ?\r\n\r\n                <Grid item xs={12}>\r\n                    <Card>\r\n                        <CardHeader className={classes.tourheaderbox}\r\n                            title={DonationHeading}\r\n                            titleTypographyProps={{ color: \"inherit\" }}\r\n                        />\r\n                        <CardContent>\r\n                            <Grid container>\r\n                                <Typography style={{ marginTop: \"10px\" }}>\r\n                                    {DonationDetails}\r\n                                </Typography>\r\n                            </Grid>\r\n                            <Grid container >\r\n                                <Typography style={{ marginTop: \"10px\", color: \"Red\" }}>\r\n                                    {validateMsg}\r\n                                </Typography>\r\n                            </Grid>\r\n                            <Grid container alignItems=\"center\" item xs={12} ms={12} lg={12}>\r\n\r\n                                <RadioGroup aria-label=\"donations\" value={checkexist ? showOthers ? 'Other' : donationPrice : donation.isdonationApplied ? donation.otherAmount ? 'Other' : donation.price : ''} name=\"donations\" >\r\n\r\n                                    {donations.donations !== \"nocontent\" && donations.donations.length > 0 ?\r\n                                        donations.donations.map((dona, i) => {\r\n\r\n                                            return dona.Price > 0 ?\r\n\r\n                                                dona.hasOwnProperty(\"MaxPrice\") ?\r\n\r\n                                                    <div className={'MuiFormControlLabel-root'} key={donations}>\r\n\r\n                                                        <FormControlLabel key={i} value=\"Other\" control={<Radio />} label=\"Other\" onChange={handleChange} />\r\n\r\n                                                        {showOthers || (checkexist === false && donation.otherAmount) ?\r\n\r\n                                                            <FormattedInputs\r\n                                                                donaValue={checkexist ? donationPrice : donation.isdonationApplied ? donation.price : donationPrice}\r\n                                                                minValue={dona.Price}\r\n                                                                maxValue={dona.MaxPrice}\r\n                                                                productName={dona.ProductName}\r\n                                                                handleOtherPrice={handleOtherPrice}\r\n                                                                Validated={Validated}\r\n                                                                keyVal={i}\r\n                                                            ></FormattedInputs> : null}\r\n\r\n                                                    </div>\r\n                                                    :\r\n\r\n                                                    <FormControlLabel key={i} value={dona.Price.toString()} name={dona.ProductName} control={<Radio />} label={Currency + '' + dona.Price} onChange={handleChange} />\r\n\r\n                                                : null\r\n                                        }) : null}\r\n\r\n                                </RadioGroup>\r\n                            </Grid>\r\n                            <div className={classes.donateBtn}>\r\n                                <Button onClick={ApplyDonation} disabled={donation.isdonationApplied} variant=\"contained\" size=\"large\" color=\"primary\" >\r\n                                    Donate\r\n                                </Button>\r\n                            </div>\r\n                        </CardContent>\r\n                    </Card>\r\n                </Grid>\r\n                : null}\r\n\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default Donations;\r\n","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { Card, CardContent, CardHeader, IconButton, Table, TableBody, TableCell, TableRow, Hidden } from '@material-ui/core';\r\nimport { withRouter } from 'react-router';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { actionShopCartAddMembershipPackage, actionDeleteMembershipTypePerson } from 'actions';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { actionRecalculateGiftCardHold } from 'actions';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheadertext: {\r\n        marginTop: \"8px\"\r\n    },\r\n    tourbox: {\r\n        marginBottom: \"10px\"\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\"\r\n    },\r\n    AddHoverOnIcons: {\r\n        cursor: \"pointer !important\"\r\n    }\r\n}));\r\n\r\nconst MembershipPackagesCard = props => {\r\n\r\n    const { className } = props;\r\n    const dispatch = useDispatch();\r\n    const classes = useStyles();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n\r\n\r\n    const changeQuantityHandler = (reference, quantity, memTypeID, mempack) => {\r\n        //Check Min and Max Quantity\r\n        //need to add\r\n\r\n        mempack.MembershipProducts = mempack.MembershipProducts.map(memprod => {\r\n\r\n            if (memprod.MembershipType === \"AddOn\" && memprod.MembershipTypeID == memTypeID) {\r\n                memprod.Quantity = quantity;\r\n            }\r\n\r\n            return memprod;\r\n        })\r\n\r\n        actionShopCartAddMembershipPackage(dispatch, mempack);\r\n    }\r\n\r\n    const removemembershipType = (memPackage, memType) => {\r\n\r\n        if (memType && memType.MinQuantity < 1) {\r\n            memPackage.MembershipProducts = memPackage.MembershipProducts.map(m => {\r\n\r\n                if (m.MembershipTypeID == memType.MembershipTypeID) {\r\n                    if (m.MembershipType === \"Membership\") {\r\n                        m.Users = [];\r\n                    }\r\n                    else if (m.MembershipType === \"AddOn\") {\r\n                        m.Quantity = 0;\r\n                    }\r\n                }\r\n                return m;\r\n            });\r\n\r\n            actionShopCartAddMembershipPackage(dispatch, memPackage);\r\n\r\n\r\n        }\r\n        else {\r\n            seterrorMsg('Minimum Quantity for this Membership is ' + memType.MinQuantity + ', You Can not remove it.');\r\n        }\r\n    }\r\n\r\n    const removeUserFromMembershipType = (memPackage, memProdType, user) => {\r\n\r\n        if (user && user.isPrimaryMember) {\r\n            seterrorMsg(user.firstName + ' ' + user.lastName + ' is primary member, you cannot remove it.');\r\n            return;\r\n        }\r\n\r\n        if (memProdType && memProdType.MinQuantity < 1 || (memProdType.MembershipType == \"Membership\" && memProdType.Users && memProdType.Users.length > memProdType.MinQuantity)) {\r\n\r\n            memPackage.MembershipProducts = memPackage.MembershipProducts.map(m => {\r\n\r\n                if (m.MembershipTypeID == m.MembershipTypeID && m.MembershipType === \"Membership\") {\r\n\r\n                    m.Users = m.Users.filter(x => x.userNo != user.userNo);\r\n                }\r\n\r\n                return m;\r\n            });\r\n\r\n            actionShopCartAddMembershipPackage(dispatch, memPackage);\r\n            actionDeleteMembershipTypePerson(dispatch, memPackage.MembershipPackageID, memProdType.MembershipTypeID, user.userNo);\r\n\r\n            if (cashless && cashless.length > 0) {\r\n                actionRecalculateGiftCardHold(dispatch);\r\n            }\r\n        }\r\n        else {\r\n            seterrorMsg('Minimum Quantity for this Membership is ' + memProdType.MinQuantity + ', You Can not remove it.');\r\n        }\r\n\r\n\r\n\r\n    }\r\n\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const replaceEscapeCharacters = (item) => {\r\n        var itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n        itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n        return itemValue;\r\n    }\r\n\r\n\r\n    const EditMembershipPackage = (membership) => {\r\n\r\n        props.history.push({\r\n            pathname: '/memberships/join/' + membership.MembershipPackageID\r\n        })\r\n    }\r\n\r\n    return (\r\n        props.membershipPackages ?\r\n            props.membershipPackages.map(memPackage => (\r\n                <Card\r\n                    key={memPackage.MembershipPackageID}\r\n                    className={classes.root + ' ' + classes.tourbox}\r\n                >\r\n                    <CardHeader className={classes.tourheaderbox}\r\n                        title={memPackage.PackageName}\r\n                        titleTypographyProps={{ color: \"inherit\" }}\r\n                        action={\r\n                            <EditIcon\r\n\r\n                                className={classes.AddHoverOnIcons}\r\n                                color={\"white\"}\r\n                                onClick={() => { EditMembershipPackage(memPackage) }}\r\n                            />\r\n                        }\r\n                    >\r\n                    </CardHeader>\r\n                    <CardContent>\r\n                        <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                        <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                            <TableBody>\r\n                                {memPackage.MembershipProducts && memPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\" && x.Users !== undefined && x.Users.length > 0).map(memProdType => (\r\n\r\n                                    <><TableRow key={memProdType.MembershipTypeID}>\r\n                                        <TableCell className={classes.tablecell} >{replaceEscapeCharacters(memProdType.ProductName)}</TableCell>\r\n                                        <TableCell className={classes.tablecell}>{memProdType.MembershipDuration}</TableCell>\r\n                                        <TableCell className={classes.tablecell} >{genfunction.ccyFormat(memProdType.Price)}</TableCell>\r\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(memProdType.Price * memProdType.Users.length)}</TableCell>\r\n                                    </TableRow>\r\n                                        {\r\n                                            memProdType.MembershipType === \"Membership\" && memProdType.Users && memProdType.Users.length > 0 && memProdType.Users.map(user => (\r\n                                                <TableRow key={user.userNo}>\r\n                                                    <Hidden smDown>\r\n                                                        <TableCell className={classes.tablecell}></TableCell>\r\n                                                        <TableCell className={classes.tablecell}></TableCell>\r\n                                                        <TableCell className={classes.tablecell} align=\"left\">\r\n                                                            <IconButton\r\n                                                                edge=\"end\"\r\n                                                                size=\"small\"\r\n                                                                onClick={() => removeUserFromMembershipType(memPackage, memProdType, user)}\r\n                                                            >\r\n                                                                <CancelIcon\r\n                                                                    color={\"error\"}\r\n                                                                />\r\n                                                            </IconButton>\r\n                                                        </TableCell>\r\n                                                        <TableCell className={classes.tablecell} align=\"right\" colSpan={2}>{user.firstName + ' ' + user.lastName}</TableCell>\r\n\r\n                                                    </Hidden>\r\n\r\n                                                    <Hidden smUp>\r\n                                                        <TableCell className={classes.tablecell}></TableCell>\r\n                                                        <TableCell className={classes.tablecell} align=\"left\">\r\n                                                            <IconButton\r\n                                                                edge=\"end\"\r\n                                                                size=\"small\"\r\n                                                                onClick={() => removeUserFromMembershipType(memPackage, memProdType, user)}\r\n                                                            >\r\n                                                                <CancelIcon\r\n                                                                    color={\"error\"}\r\n                                                                />\r\n                                                            </IconButton>\r\n                                                        </TableCell>\r\n                                                        <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{user.firstName + ' ' + user.lastName}</TableCell>\r\n\r\n                                                    </Hidden>\r\n\r\n                                                </TableRow>\r\n\r\n                                            ))\r\n                                        }</>\r\n                                ))}\r\n\r\n                                {memPackage.MembershipProducts.filter(x => x.MembershipType === \"AddOn\" && x.Quantity > 0).map(memProdType => (\r\n\r\n                                    <TableRow key={memProdType.MembershipTypeID}>\r\n                                        <TableCell className={classes.tablecell} align=\"left\">\r\n                                            <IconButton\r\n                                                edge=\"end\"\r\n                                                size=\"small\"\r\n                                                onClick={() => removemembershipType(memPackage, memProdType)}\r\n                                            >\r\n                                                <CancelIcon\r\n                                                    color={\"error\"}\r\n                                                />\r\n                                            </IconButton>\r\n                                        </TableCell>\r\n                                        <TableCell className={classes.tablecell}>{replaceEscapeCharacters(memProdType.ProductName)}</TableCell>\r\n\r\n                                        <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(memProdType.Price)}</TableCell>\r\n\r\n                                        <Hidden smDown>\r\n                                            <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(memProdType.Price)}</TableCell>\r\n                                        </Hidden>\r\n                                        <Hidden smUp>\r\n                                            <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(1, memProdType.Price))}</TableCell>\r\n                                        </Hidden>\r\n                                    </TableRow>\r\n\r\n                                ))}\r\n\r\n\r\n                                <TableRow>\r\n                                    <TableCell className={classes.tablecell} />\r\n                                    <TableCell className={classes.tablecell} colSpan={2} >Subtotal</TableCell>\r\n                                    <TableCell className={classes.tablecell} colSpan={1} align=\"right\">{genfunction.ccyFormat(memPackage.SubTotal)}</TableCell>\r\n                                </TableRow>\r\n                                <TableRow>\r\n                                    <TableCell className={classes.tablecell} colSpan={1} />\r\n                                    <TableCell className={classes.tablecell} colSpan={1} >Tax</TableCell>\r\n                                    <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(memPackage.TotalTax)}</TableCell>\r\n                                </TableRow>\r\n                                <TableRow>\r\n                                    <TableCell className={classes.tablecell} colSpan={1} />\r\n                                    <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}>Total</TableCell>\r\n                                    <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(memPackage.TotalAmount)}</TableCell>\r\n                                </TableRow>\r\n\r\n                            </TableBody>\r\n                        </Table>\r\n                    </CardContent>\r\n                </Card >\r\n\r\n            )) : null\r\n    );\r\n};\r\n\r\n\r\nexport default withRouter(MembershipPackagesCard);\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport {\r\n    Card, CardContent, CardHeader, IconButton,\r\n    Table, TableBody, TableCell, TableRow, Hidden\r\n} from '@material-ui/core';\r\n\r\nimport { NumberSpinner } from '../../../components/InputControls'\r\nimport { withRouter } from 'react-router'\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheadertext: {\r\n        marginTop: \"8px\"\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\"\r\n    }\r\n}));\r\n\r\nconst GATicketCard = props => {\r\n\r\n    const { products } = props;\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const classes = useStyles();\r\n\r\n    const changeQuantityHandler = (reference, value) => {\r\n        props.changeQuantityHandler(reference, value);\r\n    }\r\n\r\n    const removeclickhandler = (ProductID) => {\r\n        props.removeclickhandler(ProductID);\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const MaxTicketQuantity = (ProductID) => {\r\n        let ticket = products.find(p => p.ProductID === ProductID);\r\n        let fproduct = products.filter(p => p.ProductID === ProductID);\r\n        let consumedQty = 0;\r\n        if (fproduct && fproduct.length > 0) {\r\n            consumedQty = fproduct.reduce((a, b) => {\r\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                let newobj = { Quantity: aqty + bqty }\r\n                return newobj;\r\n            }).Quantity;\r\n        }\r\n        return ticket.MaxQuantity - consumedQty;\r\n    }\r\n\r\n    const getTotalAmount = () => {\r\n        let amount = {\r\n            ticketamount: 0,\r\n            tax: 0,\r\n            total: 0,\r\n        }\r\n\r\n        products.forEach(ticket => {\r\n            amount.ticketamount += ticket.OriginalTicketAmount;\r\n            amount.tax += ticket.OriginalTaxAmount;\r\n            amount.total += ticket.OriginalTotalAmount;\r\n        });\r\n\r\n        return amount;\r\n    }\r\n    return (\r\n        <Card\r\n            className={classes.root}\r\n        >\r\n            <CardHeader className={classes.tourheaderbox}\r\n                title={\"Tickets\"}\r\n                titleTypographyProps={{ color: \"inherit\" }}\r\n            />\r\n            <CardContent>\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                    <TableBody>\r\n                        {products.map(ticket => (\r\n                            <TableRow key={ticket.ProductID}>\r\n                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                    <IconButton\r\n                                        edge=\"end\"\r\n                                        size=\"small\"\r\n                                        onClick={() => removeclickhandler(ticket.ProductID, ticket.OriginalPrice)}\r\n                                    >\r\n                                        <CancelIcon color={\"error\"} />\r\n                                    </IconButton>\r\n                                </TableCell>\r\n                                <TableCell className={classes.tablecell}>{ticket.ProductName}</TableCell>\r\n                                <TableCell className={classes.tablecell} align=\"right\">\r\n                                    <NumberSpinner refrence={{ eventId: ticket.ProductID, tourProductID: ticket.ProductID}}\r\n                                        value={parseInt(ticket.Quantity)}\r\n                                        minValue={ticket.MinQuantity} maxValue={ticket.MaxQuantity} steps={1}\r\n                                        changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}></NumberSpinner>\r\n                                </TableCell>\r\n                                <Hidden smDown>\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(ticket.OriginalPrice)}</TableCell>\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(ticket.Quantity, ticket.OriginalPrice))}</TableCell>\r\n                                </Hidden>\r\n                                <Hidden smUp>\r\n                                    <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(ticket.Quantity, ticket.OriginalPrice))}</TableCell>\r\n                                </Hidden>\r\n                            </TableRow>\r\n                        ))}\r\n\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.tablecell} colSpan={1}>Subtotal</TableCell>\r\n                            <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().ticketamount)}</TableCell>\r\n                        </TableRow>\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.tablecell} colSpan={1}>Tax</TableCell>\r\n                            <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().tax)}</TableCell>\r\n                        </TableRow>\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}>Total</TableCell>\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().total)}</TableCell>\r\n                        </TableRow>\r\n\r\n                    </TableBody>\r\n                </Table>\r\n            </CardContent>\r\n        </Card>\r\n    );\r\n};\r\n\r\nGATicketCard.propTypes = {\r\n    products: PropTypes.array.isRequired,\r\n    removeclickhandler: PropTypes.func\r\n};\r\n\r\nexport default withRouter(GATicketCard);\r\n","import React, { useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport { Card, CardContent, CardHeader, IconButton, Table, TableBody, TableCell, TableRow, Hidden, TextField } from '@material-ui/core';\r\n\r\nimport { NumberSpinner } from '../../../components/InputControls'\r\nimport { withRouter } from 'react-router'\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { actionUpdateGiftCrdQuantity, actionUpdateGiftCardCustomAmout, actionRemoveGiftCard } from 'actions';\r\nimport { actionRecalculateGiftCardHold } from 'actions';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheadertext: {\r\n        marginTop: \"8px\"\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\"\r\n    }\r\n}));\r\n\r\nconst GiftCards = props => {\r\n\r\n    const { className, products } = props;\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const classes = useStyles();\r\n\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n\r\n    const GiftCardsTotal = () => {\r\n        let total = 0;\r\n        total = giftcards ? giftcards.giftcards.map(({ CartTotalAmount }) => CartTotalAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        return total;\r\n    }\r\n\r\n    const changeQuantityHandler = (refrence, value) => {\r\n        actionUpdateGiftCrdQuantity(dispatch, refrence.tourProductID, value, true);\r\n    }\r\n\r\n\r\n    const UpdateCustomAmout = (event) => {\r\n\r\n        if (parseFloat(event.target.value) >= 0) {\r\n            var gc = giftcards.giftcards.find(x => x.ProductID === parseInt(event.target.id));\r\n\r\n            if (gc && parseFloat(event.target.value) <= gc.MaxPrice && parseFloat(event.target.value) >= gc.Price) {\r\n                actionUpdateGiftCardCustomAmout(dispatch, parseInt(event.target.id), parseFloat(event.target.value), true);\r\n            }\r\n\r\n        }\r\n    }\r\n\r\n    const CustomGiftCardVal = (prodID) => {\r\n\r\n        let val = false;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.find(x => x.ProductID === prodID) !== undefined) {\r\n                val = giftcards.giftcards.find(x => x.ProductID === prodID).CartTotalAmount;\r\n            }\r\n        }\r\n\r\n        return val;\r\n    }\r\n\r\n    const RemoveGC = (prodID) => {\r\n\r\n        if (prodID > 0) {\r\n            actionRemoveGiftCard(dispatch, prodID);\r\n\r\n            if (cashless && cashless.length > 0) {\r\n                actionRecalculateGiftCardHold(dispatch);\r\n            }\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Card\r\n            key=\"123\"\r\n            className={classes.root + \" \" + classes.tourbox}\r\n        >\r\n            <CardHeader className={classes.tourheaderbox}\r\n                title=\"Gift Cards\"\r\n                titleTypographyProps={{ color: \"inherit\" }}\r\n            />\r\n            <CardContent>\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} />\r\n                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                    <TableBody>\r\n                        {giftcards.giftcards.filter(x => x.CartQty > 0 || (x.MaxPrice !== undefined && x.TotalAmount > 0)).map(gc => (\r\n                            <TableRow key={gc.ProductID}>\r\n                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                    <IconButton\r\n                                        edge=\"end\"\r\n                                        size=\"small\"\r\n                                        onClick={() => RemoveGC(gc.ProductID)}\r\n                                    >\r\n                                        <CancelIcon\r\n                                            color={\"error\"}\r\n                                        />\r\n                                    </IconButton>\r\n                                </TableCell>\r\n                                <TableCell className={classes.tablecell}>{gc.ProductName}</TableCell>\r\n                                <TableCell className={classes.tablecell} >\r\n                                    {gc.hasOwnProperty(\"MaxPrice\") ?\r\n                                        <TextField\r\n                                            variant=\"outlined\"\r\n                                            size=\"small\"\r\n                                            id={gc.ProductID}\r\n                                            name=\"cstAmount\"\r\n                                            type=\"number\"\r\n                                            value={CustomGiftCardVal(gc.ProductID)} inputProps={{ pattern: \"[0-9]*\", min: 0, style: { textAlign: 'right' } }}\r\n                                            style={{ width: 80 }}\r\n                                            onChange={UpdateCustomAmout}\r\n                                        />\r\n                                        :\r\n                                        <NumberSpinner refrence={{ eventId: gc.DisplayArea, tourProductID: gc.ProductID }}\r\n                                            value={parseInt(gc.CartQty)}\r\n                                            minValue={1} maxValue={999} steps={1}\r\n                                            changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}\r\n                                        ></NumberSpinner>}\r\n\r\n                                </TableCell>\r\n                                <Hidden smDown>\r\n                                    {/* <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(gc.hasOwnProperty(\"MaxPrice\") ? gc.TotalAmount : gc.Price)}</TableCell> */}\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(gc.hasOwnProperty(\"MaxPrice\") ? 1 : gc.CartQty, gc.hasOwnProperty(\"MaxPrice\") ? gc.CartTotalAmount : gc.Price))}</TableCell>\r\n                                </Hidden>\r\n                                <Hidden smUp>\r\n                                    <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(genfunction.priceRow(gc.CartQty, gc.Price))}</TableCell>\r\n                                </Hidden>\r\n                            </TableRow>\r\n                        ))}\r\n\r\n\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}>Total</TableCell>\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(GiftCardsTotal())}</TableCell>\r\n                        </TableRow>\r\n\r\n\r\n\r\n                    </TableBody>\r\n                </Table>\r\n            </CardContent>\r\n        </Card>\r\n\r\n    )\r\n};\r\n\r\nexport default withRouter(GiftCards);\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport {\r\n    Card, CardContent, CardHeader, IconButton,\r\n    Table, TableBody, TableCell, TableRow, Hidden,\r\n    Typography\r\n} from '@material-ui/core';\r\n\r\nimport { NumberSpinner } from '../../../components/InputControls'\r\nimport { withRouter } from 'react-router'\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheadertext: {\r\n        marginTop: \"8px\"\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\",\r\n        alignSelf: \"\"\r\n    }\r\n}));\r\n\r\nconst OrderItemsCard = props => {\r\n\r\n    const { products } = props;\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const classes = useStyles();\r\n\r\n    const changeQuantityHandler = (reference, value) => {\r\n        props.changeQuantityHandler(reference, value);\r\n    }\r\n\r\n    const removeclickhandler = (ProductID) => {\r\n        props.removeclickhandler(ProductID);\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const getProductOptions = (product) => {\r\n        if (product.Options) {\r\n\r\n            let productWithOptions = product.Options.filter(x => x.Products && x.Products.length > 0 && x.Products.find(y => y.IsSelected == true) != undefined);\r\n            if (productWithOptions && productWithOptions.length > 0) {\r\n                return (\r\n                    productWithOptions.map(option => {\r\n                        return (\r\n                            option.Products.map(opproduct => {\r\n                                return (\r\n                                    opproduct.IsSelected ?\r\n                                        <Typography variant='subtitle2'>\r\n                                            {genfunction.replaceEscapeCharacters(opproduct.ProductName)}\r\n                                        </Typography> : \"\"\r\n                                )\r\n                            }))\r\n                    })\r\n                );\r\n            }\r\n        }\r\n\r\n        return \"\";\r\n    }\r\n\r\n    const getTotalAmount = () => {\r\n        let amount = {\r\n            subtotal: 0,\r\n            tax: 0,\r\n            total: 0,\r\n        }\r\n\r\n        let foodAmount = genfunction.getOrderProductsTotalPrice(products);\r\n        amount.subtotal += foodAmount.subtotal;\r\n        amount.tax += foodAmount.tax;\r\n        amount.total += foodAmount.total;\r\n\r\n        return amount;\r\n    }\r\n    return (\r\n        <Card\r\n            className={classes.root}\r\n        >\r\n            <CardHeader className={classes.tourheaderbox}\r\n                title={\"Order\"}\r\n                titleTypographyProps={{ color: \"inherit\" }}\r\n            />\r\n            <CardContent>\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                    <TableBody>\r\n                        {products.map(product => (\r\n                            <TableRow key={product.ProductID}>\r\n                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                    <IconButton\r\n                                        edge=\"end\"\r\n                                        size=\"small\"\r\n                                        onClick={() => removeclickhandler(product)}\r\n                                    >\r\n                                        <CancelIcon color={\"error\"} />\r\n                                    </IconButton>\r\n                                </TableCell>\r\n                                <TableCell className={classes.tablecell}>\r\n                                    <Typography variant='h6'>{genfunction.replaceEscapeCharacters(product.ProductName)}</Typography>\r\n                                    {getProductOptions(product)}\r\n                                </TableCell>\r\n                                <TableCell className={classes.tablecell} align=\"right\">\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{product.Quantity}</TableCell>\r\n                                </TableCell>\r\n                                <Hidden smDown>\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice([product]).price)}</TableCell>\r\n                                    <TableCell className={classes.tablecell} align=\"right\">{genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice([product]).subtotal)}</TableCell>\r\n                                </Hidden>\r\n                                <Hidden smUp>\r\n                                    <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice([product]).subtotal)}</TableCell>\r\n                                </Hidden>\r\n                            </TableRow>\r\n                        ))}\r\n\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.tablecell} colSpan={1}>Subtotal</TableCell>\r\n                            <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().subtotal)}</TableCell>\r\n                        </TableRow>\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.tablecell} colSpan={1}>Tax</TableCell>\r\n                            <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().tax)}</TableCell>\r\n                        </TableRow>\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}>Total</TableCell>\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(getTotalAmount().total)}</TableCell>\r\n                        </TableRow>\r\n\r\n                    </TableBody>\r\n                </Table>\r\n            </CardContent>\r\n        </Card>\r\n    );\r\n};\r\n\r\nOrderItemsCard.propTypes = {\r\n    products: PropTypes.array.isRequired,\r\n    removeclickhandler: PropTypes.func\r\n};\r\n\r\nexport default withRouter(OrderItemsCard);\r\n","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport {\r\n    Card, CardContent, CardHeader, IconButton,\r\n    Table, TableBody, TableCell, TableRow, Hidden\r\n} from '@material-ui/core';\r\n\r\nimport { NumberSpinner } from '../../../components/InputControls'\r\nimport { withRouter } from 'react-router'\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {},\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheadertext: {\r\n        marginTop: \"8px\"\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\"\r\n    }\r\n}));\r\n\r\nconst DonationProductCard = props => {\r\n\r\n    const { products } = props;\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const classes = useStyles();\r\n\r\n    const removeclickhandler = (ProductID) => {\r\n        props.removeclickhandler(ProductID);\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const getTotalAmount = () => {\r\n        let amount = {\r\n            total: 0\r\n        }\r\n\r\n        products.forEach(product => {\r\n            amount.total += product.Amount;\r\n        });\r\n\r\n        return amount;\r\n    }\r\n\r\n    return (\r\n        <Card\r\n            className={classes.root}\r\n        >\r\n            <CardHeader className={classes.tourheaderbox}\r\n                title={\"Donations\"}\r\n                titleTypographyProps={{ color: \"inherit\" }}\r\n            />\r\n            <CardContent>\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                    <TableBody>\r\n                        {products.map(ticket => (\r\n                            <TableRow key={ticket.ProductID}>\r\n                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                    <IconButton\r\n                                        edge=\"end\"\r\n                                        size=\"small\"\r\n                                        onClick={() => removeclickhandler(ticket.ProductID)}\r\n                                    >\r\n                                        <CancelIcon color={\"error\"} />\r\n                                    </IconButton>\r\n                                </TableCell>\r\n                                <TableCell className={classes.tablecell}>{ticket.ProductName}</TableCell>\r\n                                <TableCell className={classes.tablecell} colSpan={2} align=\"right\">{genfunction.ccyFormat(ticket.Amount)}</TableCell>\r\n                            </TableRow>\r\n                        ))}\r\n\r\n                        <TableRow>\r\n                            <TableCell className={classes.tablecell} colSpan={2} />\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={1}></TableCell>\r\n                            <TableCell className={classes.labelbold + \" \" + classes.tablecell} colSpan={2} align=\"right\">Total  {genfunction.ccyFormat(getTotalAmount().total)}</TableCell>\r\n                        </TableRow>\r\n\r\n                    </TableBody>\r\n                </Table>\r\n            </CardContent>\r\n        </Card>\r\n    );\r\n};\r\n\r\nDonationProductCard.propTypes = {\r\n    products: PropTypes.array.isRequired,\r\n    removeclickhandler: PropTypes.func\r\n};\r\n\r\nexport default withRouter(DonationProductCard);\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid, Container, Link, Button } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Typography from '@material-ui/core/Typography';\r\n\r\nimport {\r\n    BookingTypeCard, CouponGiftCard, Donations, PayableCard, PaymentForm, CartDiscardTimeInfo,\r\n    DonationPopUp, MembershipPackagesCard, GATicketCard, GiftCards,\r\n    OrderItemsCard, DonationProductCard\r\n} from './components';\r\n\r\nimport {\r\n    actionShopCartResetStateWithTourHold, actionResetFieldValuesState, actionResetBookingTypes, actionResetCustomerUdfs,\r\n    actionShopCartAddProductQuanityWithTourHold, actionResetDonations, actionResetTransactionFee, actionValidateRecaptchaReset,\r\n    actionShopCartRemoveTourWithTourHold, actionResetBooking, actionResetGiftCards, actionResetMembershipPackages,\r\n    actionShopCartResetStateWithUniqueCouponHold, actionResetCostRate, actionResetIDMEUSERDATA, actionResetUDFs,\r\n    actionShopCartResetMembership, actionShopCartResetIDME, actionShopCartResetMembershipPackage, actionResetMembershipUDFs,\r\n    actionShopCartRemoveGATicket, actionShopCartGATicketUpdateQuanity, actionShopCartResetGATicket, actionShopCartRemoveGiftcards,\r\n    actionDeleteOrderProduct, actionShopcartResetOrderProducts, actionShopCartResetDonation, actionShopCartApplyDonation,\r\n    actionShopCartDeleteDonationProduct, actionShopCartResetDonationProduct, actionResetMemberValidation,\r\n    actionShopCartResetDonations, actionResetCustomerAddresses, actionResetCustomer, actionResetExtraItems\r\n} from 'actions';\r\n\r\nconst { ApplyTransactionFee, ShowDonationPopUp, HideCoupons, HideGiftCards } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    closebutton: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    DialogeHeader: {\r\n        backgroundColor: theme.palette.success.main,\r\n        color: theme.palette.success.contrastText\r\n    },\r\n    DialogeHeaderText: {\r\n        color: theme.palette.success.contrastText\r\n    },\r\n    hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    paymentbox: {\r\n        height: \"100%\"\r\n    },\r\n    linkbutton: {\r\n        padding: \"0px 5px 0px 0px\"\r\n    },\r\n    diplaynone: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst Checkout = (props) => {\r\n\r\n    const gatewayRef = useRef();\r\n    const classes = useStyles();\r\n\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const orderLocation = useSelector(state => state.reducerOrderLocations.orderLocation);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const bookingUDFS = useSelector(state => state.reducerBookingUserDefinedFields);\r\n    const membershipTypesUdfs = useSelector(state => state.reducerMembershipUserDefinedFields);\r\n    const customerUdfs = useSelector(state => state.reducerCustomerUDFs);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const donations = useSelector(state => state.reducerDonation);\r\n    const customerAddresses = useSelector(state => state.reducerCustomerAddresses.customerAddresses);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n\r\n    const [opendonationPopup, setopendonationPopup] = useState(true);\r\n\r\n    const CloseDonationPopUp = () => {\r\n        setopendonationPopup(false);\r\n    }\r\n\r\n    const ApplyDonation = (productID, productName, price, OthersAmount) => {\r\n\r\n        let useAltMerchant = false;\r\n\r\n        if (donations.donations && donations.donations.length > 0) {\r\n            useAltMerchant = donations.donations[0].UseAlternateMerchantOnline\r\n        }\r\n\r\n        actionShopCartApplyDonation(dispatch, productID, productName, price, OthersAmount, useAltMerchant);\r\n    }\r\n    const paymenttranstate = useSelector(state => {\r\n        return (\r\n            {\r\n                haspaid: state.reducerPaymentTransaction.Payment.hasOwnProperty('Products')\r\n            }\r\n        )\r\n    });\r\n\r\n    const dispatch = useDispatch();\r\n\r\n    useEffect(() => {\r\n\r\n        if ((events && events.length === 0) && (membershipPackages && membershipPackages.length == 0) && gaTickets && gaTickets.length == 0 && giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0) {\r\n\r\n            actionResetFieldValuesState(dispatch);\r\n            actionResetTransactionFee(dispatch);\r\n            actionShopCartResetMembership(dispatch);\r\n            actionShopCartResetIDME(dispatch);\r\n\r\n            if (shopcartreducer.membershipValidation.ismembershipApplied) {\r\n                actionResetMemberValidation(dispatch);\r\n            }\r\n        }\r\n\r\n    }, [events, membershipPackages, gaTickets, giftcards.giftcards, donationProducts])\r\n\r\n    const removeclickhandler = (eventid, productid) => {\r\n        actionShopCartRemoveTourWithTourHold(dispatch, events, eventid, productid)\r\n    }\r\n\r\n    const changeQuantityHandler = (reference, quantity) => {\r\n        actionShopCartAddProductQuanityWithTourHold(dispatch, events, reference.eventId, reference.tourProductID, quantity);\r\n    }\r\n\r\n    const removeGATicketClickHandler = (ProductId) => {\r\n        actionShopCartRemoveGATicket(dispatch, ProductId)\r\n    }\r\n\r\n    const removeOrderProductClickHandler = (product) => {\r\n        actionDeleteOrderProduct(dispatch, product);\r\n    }\r\n\r\n    const changeGATicketQuantityHandler = (reference, quantity) => {\r\n        actionShopCartGATicketUpdateQuanity(dispatch, reference.tourProductID, quantity);\r\n    }\r\n\r\n    const remoteDonationProductClickHandler = (productID) => {\r\n        actionShopCartDeleteDonationProduct(dispatch, productID);\r\n    }\r\n\r\n    const goBack = () => {\r\n\r\n        if (events && events.length > 0) {\r\n            props.history.push('/products');\r\n            return;\r\n        }\r\n\r\n        if (membershipPackages && membershipPackages.length > 0) {\r\n            props.history.push('/memberships');\r\n            return;\r\n        }\r\n\r\n        else if (gaTickets && gaTickets.length > 0) {\r\n            props.history.push('/gatickets');\r\n            return;\r\n        }\r\n\r\n        else if (donationProducts && donationProducts.length > 0) {\r\n            props.history.push('/donation/Area/' + donationProducts[donationProducts.length - 1].DisplayArea);\r\n            return;\r\n        }\r\n\r\n        else if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            props.history.push('/giftcards');\r\n            return;\r\n        }\r\n\r\n        else if (orderProducts && orderProducts.length > 0) {\r\n            if (orderLocation) {\r\n                let tabLocationID = orderLocation.TabLocations[0].TabLocationID;\r\n                props.history.push('/ordermenu/' + tabLocationID);\r\n            }\r\n            else {\r\n                actionShopcartResetOrderProducts(dispatch);\r\n                props.history.push('/orderlocation');\r\n            }\r\n            return;\r\n        }\r\n    }\r\n\r\n    const ShowGiftCards = () => {\r\n        let res = false;\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.AddedToCart === true).length > 0) {\r\n                res = true;\r\n            }\r\n        }\r\n\r\n        return res;\r\n    }\r\n\r\n\r\n    let displayclass = \"\";\r\n    if (paymenttranstate.haspaid)\r\n        displayclass = classes.hidden;\r\n\r\n    return (\r\n        <Container className={classes.root}>\r\n            {ShowDonationPopUp ? <DonationPopUp showDialog={opendonationPopup} CloseDonationPopUp={CloseDonationPopUp} ApplyDonation={ApplyDonation}></DonationPopUp> : null}\r\n            <Typography variant=\"h1\" component=\"h1\" color=\"primary\"\r\n                style={{ paddingBottom: 15, textAlign: \"center\" }}>Checkout</Typography>\r\n            <Grid\r\n                container\r\n                spacing={1}>\r\n                <Grid container item justify=\"center\" xs={12}>\r\n                    {(events && events.length > 0)\r\n                        || (membershipPackages && membershipPackages.length > 0)\r\n                        || (gaTickets && gaTickets.length > 0)\r\n                        || (orderProducts && orderProducts.length > 0)\r\n                        || (donationProducts && donationProducts.length > 0)\r\n                        || ShowGiftCards() ?\r\n                        <Grid item sm={6} md={6} >\r\n                            <Link component=\"button\" variant=\"h5\" color=\"primary\" className={classes.linkbutton}\r\n                                onClick={() => {\r\n                                    actionResetExtraItems(dispatch);\r\n                                    goBack()\r\n                                }}\r\n                            >\r\n                                Continue Shopping\r\n                            </Link>\r\n\r\n                            <Link component=\"button\" className={classes.linkbutton} variant=\"h5\"\r\n                                color=\"error\"\r\n                                onClick={() => {\r\n\r\n                                    if (events && events.length > 0) {\r\n                                        actionShopCartResetStateWithTourHold(dispatch, events);\r\n                                    }\r\n\r\n                                    if (shopcartreducer.donation.isdonationApplied) {\r\n                                        actionShopCartResetDonation(dispatch);\r\n                                    }\r\n\r\n                                    if (shopcartreducer.tourCoupons.length > 0) {\r\n                                        actionResetDonations(dispatch);\r\n                                        actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n                                    }\r\n\r\n                                    if (shopcartreducer.cashless.length > 0) {\r\n                                        actionShopCartRemoveGiftcards(dispatch);\r\n                                    }\r\n\r\n                                    actionResetMemberValidation(dispatch);\r\n                                    actionResetFieldValuesState(dispatch);\r\n                                    actionResetBookingTypes(dispatch);\r\n                                    actionShopCartResetMembershipPackage(dispatch);\r\n                                    actionResetExtraItems(dispatch);\r\n                                    actionResetMembershipPackages(dispatch);\r\n                                    actionShopCartResetMembership(dispatch);\r\n                                    actionShopCartResetIDME(dispatch);\r\n\r\n                                    if (ApplyTransactionFee) {\r\n                                        actionResetTransactionFee(dispatch);\r\n                                    }\r\n\r\n                                    actionShopCartResetGATicket(dispatch);\r\n                                    actionShopCartResetDonationProduct(dispatch);\r\n                                    actionShopcartResetOrderProducts(dispatch);\r\n                                    actionResetBooking(dispatch);\r\n                                    actionResetGiftCards(dispatch);\r\n                                    actionResetCostRate(dispatch);\r\n                                    actionResetIDMEUSERDATA(dispatch);\r\n\r\n                                    if (bookingUDFS.bookingUDFs.length > 0) {\r\n                                        actionResetUDFs(dispatch);\r\n                                    }\r\n\r\n                                    if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n                                        actionResetMembershipUDFs(dispatch);\r\n                                    }\r\n\r\n                                    if (customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0) {\r\n                                        actionResetCustomerUdfs(dispatch);\r\n                                    }\r\n\r\n                                    if (customerAddresses && customerAddresses.length > 0) {\r\n                                        actionResetCustomerAddresses(dispatch);\r\n                                    }\r\n\r\n                                    if (customer.customer && customer.customer.length > 0) {\r\n                                        actionResetCustomer(dispatch);\r\n                                    }\r\n\r\n                                    gatewayRef.current.ReloadGateways();\r\n                                    actionShopCartResetDonations(dispatch);\r\n                               \r\n                                    \r\n                                    if(stopUserToPurchase === false)\r\n                                    {\r\n                                        setTimeout(() => {\r\n                                            actionValidateRecaptchaReset(dispatch);\r\n                                        }, 1000)\r\n                                    }\r\n                                }}\r\n                            >\r\n                                Clear Cart\r\n                            </Link>\r\n                        </Grid>\r\n                        : \"\"}\r\n                    <Grid container item justify={window.matchMedia(\"(max-width: 450px)\").matches ? \"center\" : \"flex-end\"} sm={6} md={6} >\r\n                        <Grid item>\r\n                            <CartDiscardTimeInfo ></CartDiscardTimeInfo>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid container item xs={12} md={6} className={displayclass} spacing={1}>\r\n                    {events && events.length > 0 ?\r\n                        <Grid item xs={12}>\r\n                            <BookingTypeCard products={events} removeclickhandler={removeclickhandler} changeQuantityHandler={changeQuantityHandler} />\r\n                        </Grid> : null}\r\n\r\n                    {gaTickets && gaTickets.length > 0 ?\r\n                        <Grid item xs={12}>\r\n                            <GATicketCard products={gaTickets} removeclickhandler={removeGATicketClickHandler} changeQuantityHandler={changeGATicketQuantityHandler} />\r\n                        </Grid>\r\n                        : null}\r\n\r\n                    {orderProducts && orderProducts.length > 0 ?\r\n                        <Grid item xs={12}>\r\n                            <OrderItemsCard products={orderProducts} removeclickhandler={removeOrderProductClickHandler} />\r\n                        </Grid> : null}\r\n                    {donationProducts && donationProducts.length > 0 ? <Grid item xs={12}>\r\n                        <DonationProductCard products={donationProducts} removeclickhandler={remoteDonationProductClickHandler}></DonationProductCard>\r\n                    </Grid> : null}\r\n\r\n\r\n                    <Grid item xs={12} className={ShowGiftCards() && !HideGiftCards ? '' : classes.diplaynone}>\r\n                        <GiftCards />\r\n                    </Grid>\r\n\r\n                    <Grid item xs={12} className={membershipPackages && membershipPackages.length > 0 ? '' : classes.diplaynone}>\r\n                        <MembershipPackagesCard membershipPackages={membershipPackages} />\r\n                    </Grid>\r\n\r\n\r\n                    <Grid item xs={12} className={(events && events.length > 0 && !HideCoupons) || (membershipPackages && membershipPackages.length > 0) || (gaTickets && gaTickets.length > 0) || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0) || ShowGiftCards() ? '' : classes.diplaynone}>\r\n                        <CouponGiftCard />\r\n                    </Grid>\r\n\r\n\r\n\r\n                    <Grid item xs={12} className={paymenttranstate.haspaid ? classes.diplaynone : ''} >\r\n                        <PayableCard products={events} membershipPackages={membershipPackages} cashless={cashless} gatickets={gaTickets} orderProducts={orderProducts} donationProducts={donationProducts} />\r\n                    </Grid>\r\n\r\n\r\n                    <Grid item xs={12} className={(events && events.length > 0) || (membershipPackages && membershipPackages.length > 0) || (gaTickets && gaTickets.length > 0) || (orderProducts && orderProducts.length > 0) || (donationProducts && donationProducts.length > 0) || ShowGiftCards() ? '' : classes.diplaynone}>\r\n                        <Donations ApplyDonation={ApplyDonation} />\r\n                    </Grid>\r\n\r\n                </Grid>\r\n                <Grid item md={6} xs={12}>\r\n                    <Grid item xs={12} className={classes.paymentbox}>\r\n                        <PaymentForm events={events} history={props.history} ref={gatewayRef} />\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n        </Container >\r\n    );\r\n};\r\n\r\nexport default Checkout;\r\n","export default {\r\n    initialpaystate: {\r\n        disablepay: true,\r\n        firstname: \"\",\r\n        lastname: \"\",\r\n        email: \"\"\r\n    },\r\n\r\n    initialDialogstate: {\r\n        open: false,\r\n        dialogetitle: \"\",\r\n        dialogemessage: \"\",\r\n    },\r\n\r\n\r\n    initialerrorhandler: {\r\n        open: false,\r\n        dialogemessage: \"\",\r\n    }\r\n\r\n}","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, CardActions, Grid, Typography, Button, CardHeader } from '@material-ui/core';\r\nimport { genfunction } from 'helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\n\r\nconst { MembershipPackageDefaultImage } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {},\r\n  card: {\r\n    \"&:hover\": {\r\n      transform: 'scale(1.02)',\r\n      WebkitTransform: 'scale(1.02)',\r\n      border: \"solid 2px\",\r\n      borderRadius: \"5px\",\r\n      borderTop: \"0px\",\r\n      cursor: 'pointer'\r\n    }\r\n  },\r\n  tourheaderbox: {\r\n    backgroundColor: theme.palette.primary.main,\r\n    color: theme.palette.primary.contrastText\r\n  },\r\n  img: {\r\n    width: \"100%\",\r\n    objectFit: \"cover\",\r\n    objectPosition: \"bottom\"\r\n  },\r\n  btnAlign: {\r\n    marginTop: \"20px\",\r\n\r\n    [theme.breakpoints.up('sm')]: {\r\n      width: '50%'\r\n    },\r\n    [theme.breakpoints.down('sm')]: {\r\n      width: '100%'\r\n    }\r\n  },\r\n  highlightActiveMembershipPackage: {\r\n    border: 'solid 7px ' + theme.palette.primary.main,\r\n    boxShadow: \"0 5px 10px rgba(0, 0, 0, .8)\"\r\n  },\r\n  ribbon: {\r\n    width: \"150px\",\r\n    height: \"150px\",\r\n    overflow: \"hidden\",\r\n    position: \"absolute\",\r\n    zIndex: 1000,\r\n    right: \"0px\"\r\n  },\r\n  ribbonSpan: {\r\n    padding: \"15px 0\",\r\n    display: \"block\",\r\n    width: \"200px\",\r\n    backgroundColor: theme.palette.success.dark,\r\n    boxShadow: \"0 5px 10px rgba(0, 0, 0, .1)\",\r\n    color: theme.palette.success.contrastText,\r\n    textShadow: \"0 1px 1px rgba(0, 0, 0, .2)\",\r\n    fontWeight: \"bold\",\r\n    textTransform: \"uppercase\",\r\n    textAlign: \"center\",\r\n    paddingLeft: \"40px\",\r\n    left: \"-25px\",\r\n    top: \"30px\",\r\n    transform: \"rotate(45deg)\"\r\n  }\r\n\r\n}));\r\n\r\nconst MembershipCard = props => {\r\n  const classes = useStyles();\r\n  return (\r\n    <div className={classes.card}>\r\n      {(props.membership.MembershipPackageID === props.activePackageID) &&\r\n        <div id=\"ActiveMembershipRibbonDiv\" item xs={12} style={{ position: 'relative' }}>\r\n          <div className={classes.ribbon}>\r\n            <Typography variant='body1' component=\"span\" className={classes.ribbonSpan}>\r\n              Active\r\n            </Typography>\r\n          </div>\r\n        </div>\r\n      }\r\n\r\n      <Card className={(props.membership.MembershipPackageID === props.activePackageID ? classes.highlightActiveMembershipPackage : '')}>\r\n        <CardHeader className={classes.tourheaderbox}\r\n          title={props.membership.PackageName}\r\n          titleTypographyProps={{ color: \"inherit\" }}\r\n        />\r\n        <CardContent>\r\n          <Grid\r\n            container\r\n            spacing={1}\r\n          >\r\n            <Grid\r\n              item\r\n              lg={6}\r\n              md={12}\r\n\r\n            >\r\n              <img alt=\"ImageURL\"\r\n                src={genfunction.replaceEscapeCharacters(props.membership.ImageURL && props.membership.ImageURL != \"\" ? props.membership.ImageURL : MembershipPackageDefaultImage)}\r\n                className={classes.img} />\r\n\r\n            </Grid>\r\n\r\n            <Grid container item\r\n              lg={6}\r\n              md={12}\r\n              alignContent='flex-start'\r\n            >\r\n              <Grid\r\n                item\r\n                xs={12}\r\n              >\r\n                <Typography component=\"p\" color=\"textSecondary\">\r\n                  {ReactHtmlParser(genfunction.replaceEscapeCharacters(props.membership.Description))}\r\n                </Typography>\r\n              </Grid>\r\n              <Grid\r\n                item\r\n                xs={12}\r\n              >\r\n                <Button className={classes.btnAlign} variant=\"contained\" color=\"primary\" onClick={() => props.JoinOrRenewMembershipPage(props.membership)}>Select</Button>\r\n              </Grid>\r\n            </Grid>\r\n\r\n          </Grid>\r\n\r\n\r\n        </CardContent>\r\n      </Card>\r\n    </div >\r\n  );\r\n};\r\n\r\nexport default MembershipCard;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Button, Grid, Typography, useMediaQuery } from '@material-ui/core';\r\nimport { MembershipCard } from './components/';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport {\r\n    actionGetMembershipPackages, actionResetCustomer, actionResetMemberValidation, actionGetCustomer, actionResetCustomerUdfs, actionResetCustomerAddresses,\r\n    actionGetMemberMemberships, actionGetCustomerUdfs,\r\n    actionSetErrorMemberValidation, actionUpdatePackageForRenew, actionUpdatePackageForRenewNewMembershipPackage,\r\n    actionGetCustomerAddresses\r\n} from 'actions';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\nimport { genfunction } from 'helpers';\r\n\r\nconst { MembershipPackagesDisplayAreaNo, PurchaseMembershipNotAllowedForOrganizationBooking, MembershipLandingRenewHeading, MembershipLandingRetrieveButton, SuccessRenewMsg,\r\n    RenewMembershipNotAllowedForNonPrimarMemberMsg, RenewMembershipIfUserHaveNoMembership } = window['runConfig'];\r\n\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    pagination: {\r\n        marginTop: theme.spacing(3),\r\n        display: 'flex',\r\n        alignItems: 'center',\r\n        justifyContent: 'flex-end'\r\n    },\r\n    btnAlign: {\r\n        marginLeft: '15px',\r\n        marginTop: '-5px',\r\n\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginLeft: '15px',\r\n            marginTop: '-5px',\r\n        },\r\n        [theme.breakpoints.down('sm')]: {\r\n            marginLeft: '15px',\r\n            marginTop: '5px',\r\n        }\r\n    }\r\n}));\r\n\r\n\r\nconst MembershipList = (props) => {\r\n    const classes = useStyles();\r\n    const isSmScreen = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n\r\n    const dispatch = useDispatch();\r\n\r\n    //Reducer Objects\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const reducerMembershipPackages = useSelector(state => state.reducerMembershipPackages);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    const memberValidationReducer = useSelector(state => state.reducerMemberValidation);\r\n    const membermerberships = useSelector(state => state.reducerMemberMemberships);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n\r\n    //Statescustomer\r\n    const [colorState, setColorState] = React.useState('');\r\n    const [error, seterror] = useState(\"\");\r\n\r\n    let ismemberValid = false;\r\n\r\n    if (memberValidationReducer.membervalidation && memberValidationReducer.membervalidation.MemberValidation\r\n        && memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty(\"EmailMatched\")) {\r\n        ismemberValid = true;\r\n    }\r\n\r\n    const GetCustomersIDList = () => {\r\n        let ids = \"\";\r\n\r\n        ids += customer.customer[0].CustomerID;\r\n\r\n        if (customer.customer[0].hasOwnProperty(\"LinkedIndividuals\") && customer.customer[0].LinkedIndividuals.length > 0) {\r\n\r\n            customer.customer[0].LinkedIndividuals.forEach(c => {\r\n                ids += \",\" + c.CustomerID;\r\n            });\r\n        }\r\n\r\n        return ids;\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (ismemberValid === true) {\r\n\r\n            if (memberValidationReducer.membervalidation &&\r\n                memberValidationReducer.membervalidation.MemberValidation &&\r\n                memberValidationReducer.membervalidation.MemberValidation[0].EmailMatched &&\r\n                (props.location.emailaddress !== undefined && props.location.emailaddress.trim().length > 0)) {\r\n\r\n                actionGetCustomer(dispatch, memberValidationReducer.membervalidation.MemberValidation[0].CustomerID, props.location.emailaddress.trim());\r\n            }\r\n        }\r\n\r\n    }, [ismemberValid]);\r\n\r\n    const GetCustomerLinkIndividualsIDs = () => {\r\n        let Ids = \"\";\r\n\r\n        if (customer.customer[0].LinkedIndividuals && customer.customer[0].LinkedIndividuals.length > 0) {\r\n            customer.customer[0].LinkedIndividuals.map(linkUser => {\r\n\r\n                Ids += linkUser.CustomerID + \",\";\r\n\r\n            });\r\n        }\r\n\r\n        return Ids;\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (customer.customer && customer.customer.length > 0) {\r\n\r\n            if (customer.customer[0].IsFamilyHead === false) {\r\n                seterror(RenewMembershipNotAllowedForNonPrimarMemberMsg);\r\n                actionResetCustomer(dispatch);\r\n                actionResetMemberValidation(dispatch);\r\n                actionResetCustomerUdfs(dispatch);\r\n                actionResetCustomerAddresses(dispatch);\r\n            }\r\n            else {\r\n                //Call Memberships with member ID\r\n                if (membermerberships && membermerberships.membermerberhips) {\r\n\r\n                    //Get Customers Addresses\r\n                    let linkUserIDs = GetCustomerLinkIndividualsIDs(customer);\r\n                    if (linkUserIDs !== \"\" && linkUserIDs.trim().length > 0) {\r\n                        actionGetCustomerAddresses(dispatch, linkUserIDs.replace(/,*$/, ''));\r\n                    }\r\n\r\n                    actionGetMemberMemberships(dispatch, customer.customer[0].CustomerID);\r\n                    actionGetCustomerUdfs(dispatch, GetCustomersIDList());\r\n                }\r\n            }\r\n        }\r\n\r\n        if (customer.customerError && customer.customerError.length) {\r\n            seterror(customer.customerError);\r\n        }\r\n\r\n    }, [customer.customer]);\r\n\r\n    useEffect(() => {\r\n        if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n            giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (reducerMembershipPackages && reducerMembershipPackages.membershippackagesError && reducerMembershipPackages.membershippackagesError.length > 0) {\r\n            seterror(reducerMembershipPackages.membershippackagesError);\r\n        }\r\n    }, [reducerMembershipPackages.membershippackagesError]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (reducerMembershipPackages.loading == true) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n\r\n    })\r\n\r\n    useEffect(() => {\r\n\r\n        if (ismemberValid === false) {\r\n            actionGetMembershipPackages(dispatch, MembershipPackagesDisplayAreaNo);\r\n        }\r\n\r\n    }, []);\r\n\r\n    const errorcancelhandle = () => {\r\n        seterror('');\r\n    }\r\n\r\n\r\n    const RenewRedirect = () => {\r\n\r\n        if (genfunction.IsOrganization(events)) {\r\n            setColorState('info');\r\n            seterror(PurchaseMembershipNotAllowedForOrganizationBooking);\r\n        }\r\n        else {\r\n            props.history.push({\r\n                pathname: '/memberships/membervalidate'\r\n            })\r\n        }\r\n    }\r\n\r\n    const JoinOrRenewMembershipPage = (membership) => {\r\n\r\n        if (ismemberValid) {\r\n\r\n            if (membermerberships.membermerberhips && membermerberships.membermerberhips.length > 0\r\n                && memberValidationReducer.membervalidation &&\r\n                memberValidationReducer.membervalidation.MemberValidation) {\r\n                if (membermerberships.membermerberhips[0].Memberships && membermerberships.membermerberhips[0].Memberships.length > 0) {\r\n\r\n                    if (membermerberships.membermerberhips[0].CustomerID !== customer.customer[0].CustomerID) {\r\n                        actionSetErrorMemberValidation(dispatch, RenewMembershipNotAllowedForNonPrimarMemberMsg);\r\n                    }\r\n                    else {\r\n\r\n                        if (membermerberships.membermerberhips[0].Memberships.filter(x => x.MembershipPackageID === membership.MembershipPackageID && x.IsRenewed === false).length > 0) {\r\n\r\n                            actionUpdatePackageForRenew(dispatch, + membership.MembershipPackageID, membermerberships, customer.customer);\r\n                            props.history.push({\r\n                                pathname: '/memberships/renew/' + membership.MembershipPackageID\r\n                            });\r\n\r\n                        }\r\n                        else {\r\n                            actionUpdatePackageForRenewNewMembershipPackage(dispatch, + membership.MembershipPackageID, membermerberships, customer.customer);\r\n                            props.history.push({\r\n                                pathname: '/memberships/renew/' + membership.MembershipPackageID\r\n                            });\r\n                        }\r\n\r\n                    }\r\n                }\r\n\r\n                if (!membermerberships.membermerberhips[0].hasOwnProperty('Memberships')) {\r\n                    actionSetErrorMemberValidation(dispatch, RenewMembershipIfUserHaveNoMembership);\r\n                }\r\n            }\r\n\r\n        }\r\n        else {\r\n            if (membershipPackages && membershipPackages.length > 0 && membershipPackages.filter(x => x.MembershipPackageID == membership.MembershipPackageID).length == 0) {\r\n                seterror('You already have one membership package in your cart!');\r\n            }\r\n            else if (genfunction.IsOrganization(events)) {\r\n                setColorState('info');\r\n                seterror(PurchaseMembershipNotAllowedForOrganizationBooking);\r\n            }\r\n            else {\r\n                props.history.push({\r\n                    pathname: '/memberships/join/' + membership.MembershipPackageID\r\n                })\r\n            }\r\n        }\r\n    }\r\n\r\n    const GetMemberActiveMembership = () => {\r\n        let membershipPackageID = 0;\r\n\r\n        if (ismemberValid) {\r\n\r\n            if (memberValidationReducer.membervalidation.MemberValidation && memberValidationReducer.membervalidation.MemberValidation[0].MembershipPackageID) {\r\n                membershipPackageID = memberValidationReducer.membervalidation.MemberValidation[0].MembershipPackageID;\r\n            }\r\n        }\r\n\r\n        return membershipPackageID;\r\n    }\r\n    return (\r\n\r\n        <div className={classes.root}>\r\n            <Grid container\r\n                spacing={2} >\r\n                <ErrorHandling color={colorState} msg={error.length > 0 ? error : ''}\r\n                    open={error.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n                {!ismemberValid ? <Grid\r\n                    item\r\n                    xs={12}\r\n                    align={isSmScreen ? 'center' : 'left'}\r\n                >\r\n                    <Typography variant='subtitle1' style={{ display: 'inline' }} color=\"textSecondary\">{MembershipLandingRenewHeading}</Typography>\r\n                    <Button className={classes.btnAlign} variant=\"contained\" color=\"primary\" size=\"medium\" onClick={() => RenewRedirect()}>{MembershipLandingRetrieveButton}</Button>\r\n                </Grid> :\r\n                    <Grid\r\n                        item\r\n                        xs={12}\r\n                        align='center'\r\n                    >\r\n                        <Typography variant=\"h3\" component=\"h3\" color=\"primary\" >{(customer.customer && customer.customer.length > 0 ? customer.customer[0].CustomerName + '! ' : '') + SuccessRenewMsg}</Typography>\r\n                    </Grid>\r\n                }\r\n\r\n                {reducerMembershipPackages.membershippackages.map((membership, i) => {\r\n                    return membership !== undefined ?\r\n                        <Grid\r\n                            item\r\n                            key={membership.MembershipPackageID}\r\n                            lg={4}\r\n                            md={6}\r\n                            xs={12}\r\n                        >\r\n                            <MembershipCard membership={membership} JoinOrRenewMembershipPage={JoinOrRenewMembershipPage} activePackageID={GetMemberActiveMembership()} />\r\n                        </Grid>\r\n\r\n                        : null\r\n                })}\r\n            </Grid>\r\n        </div >\r\n    );\r\n};\r\n\r\nexport default MembershipList;\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Height } from '@material-ui/icons';\r\nimport { Typography, Hidden } from '@material-ui/core';\r\nconst { MembershipDetails, SuccessRenewMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        width: '100%'\r\n    },\r\n    mainHeading: {\r\n        padding: theme.spacing(1),\r\n        textAlign: 'center',\r\n        color: theme.palette.text.secondary\r\n    },\r\n    SuccessMsg: {\r\n        padding: theme.spacing(1),\r\n        textAlign: 'center',\r\n        color: theme.palette.text.secondary\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    }\r\n}));\r\n\r\nexport default function MembershipHeader(props) {\r\n\r\n    const classes = useStyles();\r\n    return (\r\n        <Grid container>\r\n            <Grid item xs={12} >\r\n\r\n                <Hidden smDown>\r\n                    <Typography className={classes.mainHeading} variant=\"h1\" gutterBottom>\r\n                        {MembershipDetails}\r\n                    </Typography>\r\n                </Hidden>\r\n\r\n                <Hidden xsDown mdUp>\r\n                    <Typography className={classes.mainHeading} variant=\"h2\" gutterBottom>\r\n                        {MembershipDetails}\r\n                    </Typography>\r\n                </Hidden>\r\n\r\n                <Hidden smUp>\r\n                    <Typography className={classes.mainHeading} variant=\"h3\" gutterBottom>\r\n                        {MembershipDetails}\r\n                    </Typography>\r\n                </Hidden>\r\n            </Grid>\r\n        </Grid>\r\n    );\r\n};\r\n","import React from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport Card from '@mui/material/Card';\r\nimport CardHeader from '@mui/material/CardHeader';\r\nimport CardContent from '@mui/material/CardContent';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid, Typography, Hidden } from '@material-ui/core';\r\nimport UDFDataField from '../CalendarControls/UDFDataField';\r\nimport { actionUpdateMemberUDF } from 'actions';\r\n\r\nconst { MembershipUDFsHeading } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(3)\r\n    },\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    },\r\n    largetourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '60px'\r\n    },\r\n    removeFontSize: {\r\n        fontSize: 'initial !important'\r\n    }\r\n}));\r\n\r\nconst MembershipUDF = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const membershipTypesUdfs = useSelector(state => state.reducerMembershipUserDefinedFields);\r\n\r\n    const onChangeHandler = (event, bookingID, categoryName, udfID) => {\r\n        let udfValue = '';\r\n        if (event.target.type != undefined && event.target.type == \"checkbox\")\r\n            udfValue = event.target.checked;\r\n        else\r\n            udfValue = event.target.value;\r\n        actionUpdateMemberUDF(dispatch, props.MembershipTypeID, props.userNo, categoryName, udfID, udfValue, props.isEdit);\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Grid container>\r\n                {membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0 &&\r\n                    membershipTypesUdfs.membershipUdfs.filter(x => x.MembershipTypeID === props.MembershipTypeID).length > 0 ?\r\n                    membershipTypesUdfs.membershipUdfs.filter(x => x.MembershipTypeID === props.MembershipTypeID)[0].UDFCategories != null &&\r\n                    membershipTypesUdfs.membershipUdfs.filter(x => x.MembershipTypeID === props.MembershipTypeID)[0].UDFCategories.map((udfCategorey, i) => (\r\n\r\n                        <Card style={{ borderRadius: \"0\", width: \"100%\" }}>\r\n                            <CardHeader className={classes.tourheaderbox}\r\n                                title={udfCategorey.UDFCategoryName}\r\n                                titleTypographyProps={{ color: \"inherit\" }}\r\n                            />\r\n                            <CardContent>\r\n\r\n\r\n                                {udfCategorey.UserDefinedFields.map((udfs) => (\r\n                                    <Grid container lg={12} sm={12} xs={12}>\r\n                                        <Grid item lg={7} sm={7} xs={7} align=\"left\">\r\n                                            <Hidden smDown >\r\n                                                <Typography variant=\"h4\" style={{ padding: \"5px\" }} className={classes.removeFontSize}>\r\n                                                    {udfs.UDFDescription} {udfs.IsRequired ? '(required)' : ''}\r\n                                                </Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp >\r\n                                                <Typography variant=\"h5\" style={{ padding: \"5px\" }} className={classes.removeFontSize}>\r\n                                                    {udfs.UDFDescription} {udfs.IsRequired ? '(required)' : ''}\r\n                                                </Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"h5\" style={{ padding: \"5px\" }} className={classes.removeFontSize}>\r\n                                                    {udfs.UDFDescription} {udfs.IsRequired ? '(required)' : ''}\r\n                                                </Typography>\r\n                                            </Hidden>\r\n                                        </Grid>\r\n\r\n                                        <Grid item lg={5} sm={5} xs={5} align=\"left\">\r\n                                            <UDFDataField key={udfs.UDFID + \"_\" + props.MembershipTypeID + \"_\" + props.userNo} isMembership={true} usernumber={props.userNo} bookingID={0} udf={udfs} changecontrolvalue={onChangeHandler} />\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                ))}\r\n                            </CardContent>\r\n                        </Card>\r\n                    )) : null}\r\n\r\n            </Grid>\r\n\r\n        </div >\r\n    )\r\n};\r\n\r\nexport default MembershipUDF;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport PersonAddIcon from '@material-ui/icons/PersonAdd';\r\nimport Button from '@material-ui/core/Button';\r\nimport { Container, Typography, MenuItem, Hidden, TextField, Divider, Link, FormHelperText, Tooltip } from '@material-ui/core';\r\nimport { genfunction } from '../../../helpers';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport Moment from 'moment';\r\nimport Select from '@material-ui/core/Select';\r\n\r\nimport {\r\n    actionUpdateMembershipPackage, actionDeleteMembershipTypePerson, actionUpdateMembershipAddonsQuantity,\r\n    actionUpdateFamilyMemberNotPartOfPackage, actionResetCustomerAddresses, actionResetMembershipPackage, actionResetCustomer,\r\n    actionGetMembershipUserDefinedFields, actionUpdateMembershipUdfsWithCustomerUdfsValues, actionResetMembershipUDFs,\r\n    actionResetCustomerUdfs, actionResetMemberValidation, actionShopCartAddMembershipPackage, actionGetCountryAndState,\r\n    actionSetFieldValueState, actionResetFieldValuesState, actionUpdateUdfsOnEditCancel, actionStartAppLoader, actionEndAppLoader,\r\n    actionUpdateMemberTypeUDfsOnSave\r\n} from 'actions';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { FormControl } from '@material-ui/core';\r\nimport DialogeBox from '../../../components/DialogeBox/DialogeBox';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport MaskedInput from 'react-text-mask';\r\nimport MembershipUDF from '../../../components/UDFs/MembershipUDF';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\n\r\n\r\nconst { AddPersonFirstNameLength, AddPersonLastNameLength, AddPersonEmailLength, AddPersonDOBLength, AddPersonZipCodeLength, AddPersonCityLength,\r\n    PhoneNumberMandatory, AddPersonAddress1Length, AddPersonAddress2Length, DOBRegex, EmailRegex, ValidateMembershipMinQuantity,\r\n    TryDeletePrimaryRecordOnMembership, ConfirmMsgRemovePersonFromMemberPackage, DisplayMemPackageDiscriptionCharacters, PackageDiscriptionHeading,\r\n    ValidateMembershipMaxQuantity, PackageMaxQtyMsg, PackageMinQtyMsg, OrderItemsInCartError, MembershipAddOnsHeading\r\n} = window['runConfig'];\r\n\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        //padding: theme.spacing(3)\r\n    },\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    mainHeading: {\r\n        //padding: theme.spacing(2),\r\n        textAlign: 'center',\r\n        color: theme.palette.text.secondary\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        minHeight: '40px',\r\n        maxHeight: '70px'\r\n    },\r\n    dialogTitleHeader: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '50px'\r\n    },\r\n    smalltourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        minHeight: '25px',\r\n        maxHeight: '60px'\r\n    },\r\n    hr: {\r\n        display: 'block',\r\n        height: '1px',\r\n        border: 0,\r\n        borderTop: '1px solid #ccc',\r\n        padding: 0\r\n    },\r\n    displaynone: {\r\n        display: \"none\"\r\n    },\r\n    visible: {\r\n        visibility: \"visible\"\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    AddHoverOnIcons: {\r\n        cursor: \"pointer !important\"\r\n    },\r\n    tablecell: {\r\n        padding: \"5px\"\r\n    },\r\n    errorColor: {\r\n        color: 'red !mportant'\r\n    },\r\n    defaultColor: {\r\n        color: theme.palette.text.secondary\r\n    },\r\n    udfWidth: {\r\n\r\n        minWidth: 300,\r\n\r\n    },\r\n    clearButton: {\r\n        \"& .MuiButtonBase-root.MuiAutocomplete-clearIndicator\": {\r\n            color: theme.palette.primary.main\r\n\r\n        }\r\n    },\r\n    NoPersonAssignedTxt: {\r\n        fontSize: \"16px\",\r\n        marginLeft: \"15px\",\r\n        marginTop: \"2px\",\r\n        fontSize: \"14px\",\r\n\r\n        [theme.breakpoints.down('sm')]: {\r\n            marginLeft: \"5px\",\r\n            fontSize: \"12px\",\r\n        }\r\n    },\r\n    UserNameDisplay: {\r\n        fontSize: \"16px\",\r\n        marginLeft: \"15px\",\r\n\r\n        [theme.breakpoints.down('sm')]: {\r\n            marginLeft: \"5px\",\r\n            fontSize: \"12px\",\r\n        }\r\n    }\r\n\r\n}));\r\n\r\nfunction TextMaskCustom(props) {\r\n    const { inputRef, onChange, value, ...other } = props;\r\n    let pnMask = ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n    return (\r\n        <MaskedInput\r\n            value={value}\r\n            {...other}\r\n            ref={(ref) => {\r\n                inputRef(ref ? ref.inputElement : null);\r\n            }}\r\n            onChange={onChange}\r\n            mask={pnMask}\r\n        />\r\n    );\r\n}\r\n\r\nexport default function MembershipTypes(props) {\r\n\r\n    let memberPackage;\r\n    let usersnotpartofpackage;\r\n    const dispatch = useDispatch();\r\n\r\n\r\n    const membershippackagesreducer = useSelector(state => state.reducerMembershipPackages);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    memberPackage = membershippackagesreducer.membershipPackage;\r\n    usersnotpartofpackage = membershippackagesreducer.familymembersnotpartofPackage;\r\n    const membermemberhisps = useSelector(state => state.reducerMemberMemberships);\r\n    const memberValidationReducer = useSelector(state => state.reducerMemberValidation);\r\n    const [isredirectclicked, setisredirectclicked] = useState(false);\r\n    const memmemberhisps = useSelector(state => state.reducerMemberMemberships);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const membershipTypesUdfs = useSelector(state => state.reducerMembershipUserDefinedFields);\r\n    const customerUdfs = useSelector(state => state.reducerCustomerUDFs);\r\n    const shopcartMembershipPackage = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const countryandstates = useSelector(state => state.reducerCountryAndState.countryandstate);\r\n\r\n\r\n\r\n    //Intialize States\r\n    const [errorstate, seterrorstate] = React.useState({\r\n        initialerrorstate: {\r\n            first_name: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            last_name: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            email: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            membershipType: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            age: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            phone: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            address1: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            city: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            state: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            zipcode: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            country: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            }\r\n        }\r\n    });\r\n\r\n    const filterOptions = createFilterOptions({\r\n        stringify: (option) => option.Country + '' + option.State,\r\n    });\r\n\r\n    const [state, setState] = React.useState({\r\n        memberpackageDetail: {\r\n            popupTitle: 'Add Person',\r\n            isPrimaryMember: false,\r\n            firstName: '',\r\n            lastName: '',\r\n            email: '',\r\n            dob: null,\r\n            phone: '',\r\n            address1: '',\r\n            address2: '',\r\n            city: '',\r\n            state: '',\r\n            zipcode: '',\r\n            country: '',\r\n            membershipPackageID: props.membershipPackage.hasOwnProperty(\"MembershipPackageID\") ? props.membershipPackage.MembershipPackageID : 0,\r\n            membershipTypeID: 0,\r\n            membershipTypeName: '',\r\n            isRenewal: false,\r\n            userNo: props.isRenewPackage ? 0 : Math.floor((Math.random() * 100000) + 100000),// when its renew package, userno field will be 0, assign value when we select from dropdown or create new.\r\n            isEdit: false,\r\n            UniquePackageRef: '',\r\n            MembershipExpiryDate: '',\r\n            PreviousMembershipType: '',\r\n            notPartOfPackage: false\r\n        }\r\n    });\r\n\r\n    window.history.pushState({ name: \"browserBack\" }, \"on browser back click\", window.location.href);\r\n\r\n    useEffect(() => {\r\n        // Prompt confirmation when reload page is triggered\r\n        window.onbeforeunload = () => { return \"\" };\r\n\r\n        // Unmount the window.onbeforeunload event\r\n        return () => { window.onbeforeunload = null };\r\n    }, []);\r\n\r\n\r\n    // useEffect(() => {\r\n\r\n    //     if (props.isRenewPackage && usersnotpartofpackage && usersnotpartofpackage.length == 0) {\r\n    //         setopenMembership(true);\r\n    //     }\r\n\r\n    // }, [props.isRenewPackage])\r\n\r\n    // useEffect(() => {\r\n\r\n    // }, [props.isRenewPackage])\r\n\r\n    useEffect(() => {\r\n        actionGetCountryAndState(dispatch);\r\n    }, [])\r\n\r\n    const onChangeCountry = (event, value) => {\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        memberpackageDetail.country = (value === null ? '' : value.Country);\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n        actionSetFieldValueState(dispatch, \"country\", memberpackageDetail.country);\r\n\r\n        memberpackageDetail.state = \"\";\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n        actionSetFieldValueState(dispatch, \"state\", \"\");\r\n    }\r\n    const onChangeState = (event, value) => {\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        memberpackageDetail.state = value === null ? \"\" : value.State\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n        actionSetFieldValueState(dispatch, \"state\", memberpackageDetail.state);\r\n    }\r\n\r\n    const isShowCountryFields = (columnName) => {\r\n        return genfunction.GetValueFromCountryAndState(countryandstates, state.memberpackageDetail.country, columnName);\r\n    }\r\n\r\n    const handleCloseMembership = () => {\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        if (memberpackageDetail.isPrimaryMember && !memberpackageDetail.isEdit) {\r\n\r\n            props.history.push({\r\n                pathname: '/memberships'\r\n            })\r\n        }\r\n        else {\r\n            setOpen(false);\r\n        }\r\n    };\r\n\r\n    const AssignPrimaryMembershipTypeInDropDownToPimaryMember = (memberpackageDetail) => {\r\n        if (membershippackagesreducer.membershippackages && membershippackagesreducer.membershippackages.length > 0) {\r\n\r\n            if (membershippackagesreducer.membershippackages.filter(x => x.MembershipPackageID === props.membershipPackageID).length > 0) {\r\n                var membershipPackage = membershippackagesreducer.membershippackages.find(x => x.MembershipPackageID === props.membershipPackageID);\r\n\r\n                if (membershipPackage && membershipPackage.MembershipProducts && membershipPackage.MembershipProducts.length > 0) {\r\n                    var primaryMemType = membershipPackage.MembershipProducts.find(x => x.MembershipType === \"Membership\");\r\n\r\n                    memberpackageDetail.membershipTypeName = replaceEscapeCharacters(primaryMemType.ProductName);\r\n                    memberpackageDetail.membershipTypeID = primaryMemType.MembershipTypeID;\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (!props.shopcartmember) {\r\n            handleClickOpen();\r\n            var memberpackageDetail = { ...state.memberpackageDetail };\r\n            memberpackageDetail.isPrimaryMember = true;\r\n            memberpackageDetail.popupTitle = \"Primary Member\";\r\n\r\n            AssignPrimaryMembershipTypeInDropDownToPimaryMember(memberpackageDetail);\r\n\r\n            memberpackageDetail.country = countryandstates && countryandstates.length > 0 ? countryandstates[0].Country : '';\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n        }\r\n        else {\r\n            actionUpdateMembershipPackage(dispatch, props.membershipPackage, true);\r\n            memberPackage = props.membershipPackage;\r\n        }\r\n\r\n\r\n        if (props.isRenewPackage) {\r\n\r\n            props.membershipPackage.MembershipProducts && props.membershipPackage.MembershipProducts.map(e => {\r\n\r\n                if (e.MembershipType === \"Membership\" && e.Users !== undefined && e.Users.length > 0) {\r\n\r\n                    e.Users.map(u => {\r\n                        if (u.isPrimaryMember) {\r\n                            actionSetFieldValueState(dispatch, \"first_name\", u.firstName === undefined ? '' : u.firstName);\r\n                            actionSetFieldValueState(dispatch, \"last_name\", u.lastName === undefined ? '' : u.lastName);\r\n                            actionSetFieldValueState(dispatch, \"email\", u.email === undefined ? '' : u.email);\r\n                            actionSetFieldValueState(dispatch, \"phone_number\", u.phone === undefined ? '' : u.phone);\r\n                            actionSetFieldValueState(dispatch, \"address1\", u.address1 === undefined ? '' : u.address1);\r\n                            actionSetFieldValueState(dispatch, \"address2\", u.address2 === undefined ? '' : u.address2);\r\n                            actionSetFieldValueState(dispatch, \"city\", u.city === undefined ? '' : u.city);\r\n                            actionSetFieldValueState(dispatch, \"state\", u.state === undefined ? '' : u.state);\r\n                            actionSetFieldValueState(dispatch, \"zip\", u.zipcode === undefined ? '' : u.zipcode);\r\n                            actionSetFieldValueState(dispatch, \"country\", u.country === undefined ? '' : u.country);\r\n\r\n                        }\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n\r\n        if (props.membershipTypeIDs && props.membershipTypeIDs.length > 0 && membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length < 1) {\r\n\r\n            if (props.isRenewPackage) {\r\n                actionStartAppLoader(dispatch);\r\n            }\r\n\r\n            actionGetMembershipUserDefinedFields(dispatch, 'Memberships', null, props.membershipTypeIDs);\r\n        }\r\n\r\n    }, [props.membershipTypeIDs]);\r\n\r\n    useEffect(() => {\r\n        if (props.isRenewPackage) {\r\n            if (membershipTypesUdfs.updateMemberRecordsOnRenew === false && customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0 && membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0 && CountTotalMembers() > 0) {\r\n\r\n                setTimeout(() => {\r\n                    actionUpdateMembershipUdfsWithCustomerUdfsValues(dispatch, props.membershipPackage, customerUdfs.customerUDFs);\r\n                }, 1000);\r\n            }\r\n            else if (customerUdfs.customerUDFs && customerUdfs.customerUDFs.length > 0 && !ValidateCustomerUdfs(customerUdfs.customerUDFs)) {\r\n                actionEndAppLoader(dispatch);\r\n            }\r\n            else if (ValidateCustomerUdfs(customerUdfs.customerUDFs) && membershipTypesUdfs.membershipUdfs.length == 0) {\r\n                actionEndAppLoader(dispatch);\r\n            }\r\n\r\n            if (membershipTypesUdfs.updateMemberRecordsOnRenew === true) {\r\n                actionEndAppLoader(dispatch);\r\n            }\r\n        }\r\n\r\n    }, [customerUdfs.customerUDFs, membershipTypesUdfs.updateMemberRecordsOnRenew, membershipTypesUdfs.membershipUdfs]);\r\n\r\n\r\n    const ValidateCustomerUdfs = (cstUdfs) => {\r\n        let valid = false;\r\n\r\n        if (cstUdfs[0].CustomerUDFs.filter(x => x.UDFValue !== null).length > 0) {\r\n\r\n            cstUdfs[0].CustomerUDFs.filter(x => x.UDFValue !== null && x.UDFValue !== '0.0000' && x.UDFValue !== '0').map(udf => {\r\n                valid = true;\r\n            });\r\n        }\r\n\r\n        return valid;\r\n    }\r\n\r\n    //Dialog Fields Start\r\n    const [open, setOpen] = React.useState(false);\r\n\r\n    //Dialog Membership  Start\r\n    const [openMembership, setopenMembership] = React.useState(false);\r\n\r\n    //Confirmation Dialog\r\n    const [confirmopen, setconfirmOpen] = React.useState({\r\n        dialogBox: false,\r\n        packageID: 0,\r\n        memTypeID: 0,\r\n        useNo: 0,\r\n        deletemsg: ''\r\n    });\r\n\r\n\r\n    const handleClickOpen = (memID, memTypeName) => {\r\n\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        memberpackageDetail.popupTitle = 'Add Person';\r\n        memberpackageDetail.isPrimaryMember = false;\r\n        memberpackageDetail.firstName = '';\r\n        memberpackageDetail.lastName = '';\r\n        memberpackageDetail.email = '';\r\n        memberpackageDetail.dob = 'DOB';\r\n        memberpackageDetail.phone = '';\r\n        memberpackageDetail.address1 = '';\r\n        memberpackageDetail.address2 = '';\r\n        memberpackageDetail.city = '';\r\n        memberpackageDetail.state = '';\r\n        memberpackageDetail.zipcode = '';\r\n        memberpackageDetail.country = '';\r\n        memberpackageDetail.MembershipPackageID = props.membershipPackage.hasOwnProperty(\"MembershipPackageID\") ? props.membershipPackage.MembershipPackageID : 0;\r\n        memberpackageDetail.membershipTypeID = memID === undefined ? 0 : memID;\r\n        memberpackageDetail.membershipTypeName = memTypeName === undefined ? '' : memTypeName;\r\n        memberpackageDetail.PreviousMembershipType = '';\r\n        memberpackageDetail.isEdit = false;\r\n        memberpackageDetail.isRenewal = false;\r\n        memberpackageDetail.userNo = Math.floor((Math.random() * 100000) + 100000); //0;\r\n        memberpackageDetail.MembershipTypeID = 0;\r\n        memberpackageDetail.notPartOfPackage = false;\r\n\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n\r\n        var initialerrorstate = { ...errorstate.initialerrorstate };\r\n\r\n        initialerrorstate.first_name.errorstate = false;\r\n        initialerrorstate.first_name.errortext = \"\";\r\n        initialerrorstate.last_name.errorstate = false;\r\n        initialerrorstate.last_name.errortext = \"\";\r\n        initialerrorstate.email.errorstate = false;\r\n        initialerrorstate.email.errortext = \"\";\r\n        initialerrorstate.membershipType.errorstate = false;\r\n        initialerrorstate.membershipType.errortext = \"\";\r\n        initialerrorstate.age.errorstate = false;\r\n        initialerrorstate.age.errortext = \"\";\r\n        // initialerrorstate.userNo.errorstate = false;\r\n        // initialerrorstate.userNo.errortext = \"\";\r\n\r\n\r\n        seterrorstate({ ...errorstate, initialerrorstate });\r\n\r\n        setOpen(true);\r\n\r\n    };\r\n\r\n    //Create New Profile\r\n    const [createNewProfile, setCreateNewProfile] = React.useState(false);\r\n\r\n    useEffect(() => {\r\n\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n        if (memberpackageDetail && !memberpackageDetail.isEdit &&\r\n            memberpackageDetail.membershipTypeID < 1\r\n            && props.membershipPackage\r\n            && (memberpackageDetail.popupTitle === 'Add Person' || memberpackageDetail.popupTitle === 'Add - Person' || memberpackageDetail.popupTitle === 'Primary Member')) {\r\n\r\n            if (props.membershipPackage.MembershipProducts\r\n                && props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").length == 1) {\r\n                let membershipObj = props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\")[0];\r\n                fieldhandleChange(null, membershipObj);\r\n            }\r\n        }\r\n\r\n    }, [props.membershipPackage, state])\r\n\r\n    const handleClose = (event, reason) => {\r\n\r\n        if (reason === \"backdropClick\" || reason === \"escapeKeyDown\") {\r\n            setOpen(true);\r\n        }\r\n        else {\r\n\r\n            var memberpackageDetail = { ...state.memberpackageDetail };\r\n            if (memberpackageDetail.isPrimaryMember && !memberpackageDetail.isEdit) {\r\n\r\n                if (shopcartMembershipPackage && shopcartMembershipPackage.length < 1 &&\r\n                    membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n\r\n                    actionResetMembershipUDFs(dispatch);\r\n                }\r\n\r\n                actionResetMembershipPackage(dispatch);\r\n\r\n                props.history.push({\r\n                    pathname: '/memberships'\r\n                })\r\n            }\r\n            else {\r\n\r\n                if (memberpackageDetail.isPrimaryMember && memberpackageDetail.isEdit) {\r\n                    SetPrimaryMemberRecordOnCheckout(memberpackageDetail);\r\n\r\n                }\r\n\r\n                if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0 && memberpackageDetail.isEdit) {\r\n                    actionUpdateUdfsOnEditCancel(dispatch, memberpackageDetail.membershipTypeID, memberpackageDetail.userNo, true);\r\n                }\r\n\r\n                setOpen(false);\r\n                setCreateNewProfile(false);\r\n            }\r\n        }\r\n    };\r\n\r\n    const GetUserDOB = (user) => {\r\n        let userDOB = \"\";\r\n\r\n        if (user.hasOwnProperty('dob') && user.dob !== null && user.dob.length > 0 && user.dob != \"DOB\") {\r\n            userDOB = Moment(user.dob).format('YYYY-MM-DD');\r\n        }\r\n\r\n        return userDOB;\r\n    }\r\n    //Edit Person\r\n    const EditPerson = (member, memTypeID) => {\r\n\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n        var membershipType = memberPackage.MembershipProducts.filter(x => x.MembershipTypeID == memTypeID)[0];\r\n\r\n        if (membershipType) {\r\n            var user = membershipType.Users.filter(x => x.userNo == member.userNo && x.email == member.email)[0];\r\n            if (user) {\r\n                memberpackageDetail.popupTitle = user.isPrimaryMember ? 'Edit - Primary Member' : 'Edit - Person';\r\n                memberpackageDetail.isPrimaryMember = user.isPrimaryMember;\r\n                memberpackageDetail.firstName = user.firstName;\r\n                memberpackageDetail.lastName = user.lastName;\r\n                memberpackageDetail.email = user.email;\r\n                memberpackageDetail.dob = GetUserDOB(user);\r\n                memberpackageDetail.phone = user.phone;\r\n                memberpackageDetail.address1 = user.address1;\r\n                memberpackageDetail.address2 = user.address2;\r\n                memberpackageDetail.city = user.city;\r\n                memberpackageDetail.state = user.state;\r\n                memberpackageDetail.zipcode = user.zipcode;\r\n                memberpackageDetail.country = user.country;\r\n                memberpackageDetail.isRenewal = user.isRenewal;\r\n                memberpackageDetail.UniquePackageRef = user.UniquePackageRef;\r\n                memberpackageDetail.MembershipExpiryDate = user.MembershipExpiryDate;\r\n                memberpackageDetail.MembershipPackageID = memberPackage.MembershipPackageID;\r\n                memberpackageDetail.membershipTypeID = membershipType.MembershipTypeID;\r\n                memberpackageDetail.membershipTypeName = replaceEscapeCharacters(membershipType.ProductName);\r\n                memberpackageDetail.PreviousMembershipType = user.PreviousMembershipType;\r\n                memberpackageDetail.userNo = user.userNo;\r\n                memberpackageDetail.isEdit = true;\r\n                memberpackageDetail.notPartOfPackage = user.notPartOfPackage;\r\n\r\n            }\r\n        }\r\n\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n\r\n        setOpen(true);\r\n    }\r\n\r\n    //Delete Person\r\n    const DeletePerson = (memberTypeID, member) => {\r\n\r\n        if (member.isPrimaryMember) {\r\n            seterrorMsg(TryDeletePrimaryRecordOnMembership);\r\n        }\r\n        else {\r\n\r\n            setconfirmOpen({\r\n                dialogBox: true, packageID: memberPackage.MembershipPackageID,\r\n                memTypeID: memberTypeID, useNo: member.userNo,\r\n                deletemsg: ConfirmMsgRemovePersonFromMemberPackage + ' ' + member.firstName + ' ' + member.lastName + '?'\r\n            });\r\n        }\r\n    }\r\n\r\n    const ConfirmDeletePerson = () => {\r\n        var deleteConfirmState = { ...confirmopen };\r\n        actionDeleteMembershipTypePerson(dispatch, deleteConfirmState.packageID, deleteConfirmState.memTypeID, deleteConfirmState.useNo);\r\n\r\n\r\n        if (usersnotpartofpackage && usersnotpartofpackage.length > 0 && usersnotpartofpackage.filter(x => x.userNo == deleteConfirmState.useNo && x.membershipTypeID == 0\r\n            && x.MembershipExpiryDate == '').length > 0) {\r\n            actionUpdateFamilyMemberNotPartOfPackage(dispatch, deleteConfirmState.useNo, false);\r\n        }\r\n\r\n        setconfirmOpen({\r\n            dialogBox: false, packageID: 0,\r\n            memTypeID: 0, useNo: 0, deletemsg: ''\r\n        });\r\n\r\n        //On Renew, if we want to delete user selected from drop down, we need to reset back so, it will be available again in dropdown.\r\n\r\n\r\n    }\r\n\r\n    const CancelPersonDelete = () => {\r\n\r\n        setconfirmOpen({\r\n            dialogBox: false, packageID: 0,\r\n            memTypeID: 0, useNo: 0, deletemsg: ''\r\n        });\r\n    }\r\n\r\n    function validateEmail(email) {\r\n        var re = new RegExp(EmailRegex);\r\n        return re.test(String(email).toLowerCase());\r\n    }\r\n\r\n    function validateDOB(dob) {\r\n        var re = new RegExp(DOBRegex);\r\n        let resultRegex = re.test(String(dob).toLowerCase());\r\n        if (resultRegex) {\r\n            let isValidRange = Moment(dob).isBetween(Moment('1899-12-31'), Moment());\r\n            return isValidRange;\r\n        }\r\n        else\r\n            return resultRegex;\r\n    }\r\n\r\n    //Enable Confirm Buttom\r\n    const [confirmBtn, setconfirmBtn] = React.useState(true);\r\n\r\n    const ValidateMemberPackageQuantities = () => {\r\n        let validRequest = false;\r\n\r\n        if (memberPackage && memberPackage.MembershipProducts && memberPackage.MembershipProducts.length > 0) {\r\n            memberPackage.MembershipProducts = memberPackage.MembershipProducts.map(memType => {\r\n\r\n                if (memType.MembershipType === \"Membership\" && (((memType.Users !== undefined && memType.Users.length) < memType.MinQuantity) || ((memType.Users !== undefined && memType.Users.length) > memType.MaxQuantity))) {\r\n                    validRequest = true;\r\n                }\r\n\r\n                if (memType.MembershipType === \"AddOn\") {\r\n                    if (((memType.Quantity < memType.MinQuantity) || (memType.Quantity > memType.MaxQuantity))) {\r\n                        validRequest = true;\r\n                    }\r\n                }\r\n\r\n                return memType;\r\n            });\r\n        }\r\n\r\n        return validRequest;\r\n    }\r\n\r\n    const PersonNamesDuplicateCheck = (membership) => {\r\n\r\n        let exist = false;\r\n        if (memberPackage && memberPackage.MembershipProducts && membership.isEdit == false) {\r\n            memberPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").map(m => {\r\n\r\n                if (m.Users && m.Users.length > 0 && m.Users.filter(x => x.firstName.toLowerCase() == membership.firstName.toLowerCase() && x.lastName.toLowerCase() == membership.lastName.toLowerCase()).length > 0) {\r\n                    exist = true;\r\n                }\r\n            })\r\n        }\r\n\r\n        return exist;\r\n    }\r\n\r\n    const SetPrimaryMemberRecordOnCheckout = (member) => {\r\n\r\n        if (member && memberPackage.MembershipProducts && memberPackage.MembershipProducts.length > 0) {\r\n            var membershipType = memberPackage.MembershipProducts.filter(x => x.MembershipTypeID == member.membershipTypeID)[0];\r\n\r\n            if (membershipType) {\r\n                var user = membershipType.Users.filter(x => x.userNo == member.userNo)[0];\r\n\r\n                if (user) {\r\n\r\n                    actionSetFieldValueState(dispatch, \"first_name\", user.firstName);\r\n                    actionSetFieldValueState(dispatch, \"last_name\", user.lastName);\r\n                    actionSetFieldValueState(dispatch, \"email\", user.email);\r\n                    actionSetFieldValueState(dispatch, \"phone_number\", user.phone);\r\n                    actionSetFieldValueState(dispatch, \"address1\", user.address1);\r\n                    actionSetFieldValueState(dispatch, \"address2\", user.address2);\r\n                    actionSetFieldValueState(dispatch, \"city\", user.city);\r\n                    actionSetFieldValueState(dispatch, \"zip\", user.zipcode);\r\n                    actionSetFieldValueState(dispatch, \"state\", user.state);\r\n                    actionSetFieldValueState(dispatch, \"country\", user.country);\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    //Save Button MultipleClicks\r\n    const [saveBtn, setsaveBtn] = React.useState(false);\r\n\r\n    const saveDialog = () => {\r\n\r\n        setsaveBtn(true);\r\n\r\n        setTimeout(() => {\r\n            setsaveBtn(false);\r\n        }, 1000)\r\n\r\n        if (!ValidateMembershipType()) {\r\n            seterrorMsg('Please fill the required UDFs.');\r\n            return;\r\n        }\r\n        //Add Validation\r\n        var initialerrorstate = { ...errorstate.initialerrorstate };\r\n\r\n        if (state.memberpackageDetail.firstName.trim().length < 1) {\r\n            initialerrorstate.first_name.errorstate = true;\r\n            initialerrorstate.first_name.errortext = \"First Name is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.first_name.errorstate = false;\r\n            initialerrorstate.first_name.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.memberpackageDetail.lastName.trim().length < 1) {\r\n            initialerrorstate.last_name.errorstate = true;\r\n            initialerrorstate.last_name.errortext = \"Last Name is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        } else {\r\n            initialerrorstate.last_name.errorstate = false;\r\n            initialerrorstate.last_name.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.memberpackageDetail.membershipTypeID < 1) {\r\n            initialerrorstate.membershipType.errorstate = true;\r\n            initialerrorstate.membershipType.errortext = \"Membership Type is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.membershipType.errorstate = false;\r\n            initialerrorstate.membershipType.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n\r\n        if (state.memberpackageDetail.isPrimaryMember && state.memberpackageDetail.email.trim().length < 1) {\r\n            initialerrorstate.email.errorstate = true;\r\n            initialerrorstate.email.errortext = \"Email  is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else if (state.memberpackageDetail.email.length > 0 && validateEmail(state.memberpackageDetail.email) == false) {\r\n            initialerrorstate.email.errorstate = true;\r\n            initialerrorstate.email.errortext = \"Please enter a valid email address.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.email.errorstate = false;\r\n            initialerrorstate.email.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.memberpackageDetail.dob) {\r\n            if (state.memberpackageDetail.dob.length > 0\r\n                && state.memberpackageDetail.dob != \"DOB\"\r\n                && validateDOB(state.memberpackageDetail.dob) == false) {\r\n\r\n                initialerrorstate.age.errorstate = true;\r\n                initialerrorstate.age.errortext = \"Please enter a valid date of birth.\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n            else {\r\n                initialerrorstate.age.errorstate = false;\r\n                initialerrorstate.age.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n        }\r\n\r\n        if (PhoneNumberMandatory && state.memberpackageDetail.phone.trim().length < 1) {\r\n            initialerrorstate.phone.errorstate = true;\r\n            initialerrorstate.phone.errortext = \"Phone is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.phone.errorstate = false;\r\n            initialerrorstate.phone.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n\r\n        if (state.memberpackageDetail.isPrimaryMember) {\r\n\r\n            if (state.memberpackageDetail.address1.trim().length < 1) {\r\n                initialerrorstate.address1.errorstate = true;\r\n                initialerrorstate.address1.errortext = \"Address 1 is required.\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            } else {\r\n                initialerrorstate.address1.errorstate = false;\r\n                initialerrorstate.address1.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n\r\n            if (state.memberpackageDetail.city.trim().length < 1) {\r\n                initialerrorstate.city.errorstate = true;\r\n                initialerrorstate.city.errortext = \"City is required.\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            } else {\r\n                initialerrorstate.city.errorstate = false;\r\n                initialerrorstate.city.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n\r\n            if (isShowCountryFields(\"ShowState\")) {\r\n\r\n                if (state.memberpackageDetail.state.trim().length < 1) {\r\n                    initialerrorstate.state.errorstate = true;\r\n                    initialerrorstate.state.errortext = \"State is required.\";\r\n                    seterrorstate({ ...errorstate, initialerrorstate });\r\n                } else {\r\n                    initialerrorstate.state.errorstate = false;\r\n                    initialerrorstate.state.errortext = \"\";\r\n                    seterrorstate({ ...errorstate, initialerrorstate });\r\n                }\r\n            }\r\n            else {\r\n                state.memberpackageDetail.state = \"0\";\r\n            }\r\n\r\n            if (isShowCountryFields(\"ShowPostalCode\")) {\r\n                if (state.memberpackageDetail.zipcode.trim().length < 1) {\r\n                    initialerrorstate.zipcode.errorstate = true;\r\n                    initialerrorstate.zipcode.errortext = \"Zipcode is required.\";\r\n                    seterrorstate({ ...errorstate, initialerrorstate });\r\n                } else {\r\n                    initialerrorstate.zipcode.errorstate = false;\r\n                    initialerrorstate.zipcode.errortext = \"\";\r\n                    seterrorstate({ ...errorstate, initialerrorstate });\r\n                }\r\n            }\r\n            else {\r\n                state.memberpackageDetail.zipcode = \"0\";\r\n            }\r\n\r\n            if (state.memberpackageDetail.country.trim().length < 1) {\r\n                initialerrorstate.country.errorstate = true;\r\n                initialerrorstate.country.errortext = \"Country is required.\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            } else {\r\n                initialerrorstate.country.errorstate = false;\r\n                initialerrorstate.country.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n        }\r\n\r\n        if (initialerrorstate.first_name.errorstate || initialerrorstate.last_name.errorstate || initialerrorstate.membershipType.errorstate || initialerrorstate.email.errorstate || initialerrorstate.age.errorstate ||\r\n            initialerrorstate.address1.errorstate || initialerrorstate.city.errorstate || initialerrorstate.state.errorstate || initialerrorstate.zipcode.errorstate || initialerrorstate.country.errorstate\r\n            || (PhoneNumberMandatory && initialerrorstate.phone.errorstate)) {\r\n            setOpen(true);\r\n        }\r\n        else {\r\n            var ageDiff = parseInt(calculateAge(new Date(state.memberpackageDetail.dob)));\r\n\r\n            var memType = memberPackage.MembershipProducts.filter(x => x.MembershipTypeID == state.memberpackageDetail.membershipTypeID)[0];\r\n\r\n            if (memType.AgeBasedMembership && (ageDiff < memType.MinAge || ageDiff > memType.MaxAge)) {\r\n                initialerrorstate.age.errorstate = true;\r\n                initialerrorstate.age.errortext = \"Please enter a valid DOB, Min Age is \" + memType.MinAge + \" and Max Age is : \" + memType.MaxAge;\r\n                seterrorstate({ ...errorstate, initialerrorstate });\r\n            }\r\n            else {\r\n                if (PersonNamesDuplicateCheck(state.memberpackageDetail) == false) {\r\n                    actionUpdateMembershipPackage(dispatch, state.memberpackageDetail, false);\r\n\r\n                    if (state.memberpackageDetail.notPartOfPackage) {\r\n                        actionUpdateFamilyMemberNotPartOfPackage(dispatch, state.memberpackageDetail.userNo, true);\r\n                    }\r\n\r\n                    setOpen(false);\r\n                }\r\n                else {\r\n                    seterrorMsg('First Name and Last Name is already used.');\r\n                }\r\n            }\r\n        }\r\n\r\n        if (props.isRenewPackage && state.memberpackageDetail.isEdit === false && createNewProfile === false && usersnotpartofpackage) {\r\n\r\n            if (usersnotpartofpackage && usersnotpartofpackage.length > 0 && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown === false).length > 0) {\r\n\r\n                usersnotpartofpackage = usersnotpartofpackage.map(user => {\r\n\r\n                    if (user.userNo === state.memberpackageDetail.userNo) {\r\n                        user.userSelectedFromDropdown = true;\r\n                    }\r\n                });\r\n\r\n            }\r\n        }\r\n\r\n        if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n            var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n            if (memberpackageDetail.isEdit) {\r\n                actionUpdateMemberTypeUDfsOnSave(dispatch, memberpackageDetail.membershipTypeID, memberpackageDetail.userNo);\r\n            }\r\n        }\r\n\r\n        setCreateNewProfile(false);\r\n    }\r\n\r\n    const fieldhandleChange = (event, mem) => {\r\n\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        if (event && event.currentTarget && !event.currentTarget.dataset.hasOwnProperty('userid')) {\r\n\r\n            if (mem) {\r\n                let memTypeID = parseInt(mem.MembershipTypeID);\r\n                memberpackageDetail.membershipTypeID = memTypeID;\r\n                memberpackageDetail.membershipTypeName = mem.ProductName;\r\n\r\n                setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n            }\r\n        }\r\n\r\n        if (event && event.target.name === \"fname\") {\r\n            memberpackageDetail.firstName = event.target.value;\r\n            memberpackageDetail.MembershipPackageID = props.membershipPackage.hasOwnProperty(\"MembershipPackageID\") ? props.membershipPackage.MembershipPackageID : 0;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n\r\n            if (memberpackageDetail.isPrimaryMember) {\r\n                actionSetFieldValueState(dispatch, \"first_name\", event.target.value);\r\n            }\r\n        }\r\n\r\n        if (event && event.target.name === \"lname\") {\r\n            memberpackageDetail.lastName = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n\r\n            if (memberpackageDetail.isPrimaryMember) {\r\n                actionSetFieldValueState(dispatch, \"last_name\", event.target.value);\r\n            }\r\n        }\r\n\r\n        if (event && event.target.name === \"email\") {\r\n            memberpackageDetail.email = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n\r\n            if (memberpackageDetail.isPrimaryMember) {\r\n                actionSetFieldValueState(dispatch, \"email\", event.target.value);\r\n            }\r\n        }\r\n\r\n        if (event && event.target.name === \"dob\") {\r\n            memberpackageDetail.dob = Moment(event.target.value).format('YYYY-MM-DD');\r\n\r\n            // if (event.nativeEvent.target.value === event.nativeEvent.target.defaultValue)\r\n            //     memberpackageDetail.dob = \"\";\r\n\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n        }\r\n\r\n        if (memberpackageDetail.dob === \"Invalid date\") {\r\n            memberpackageDetail.dob = \"\";\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n        }\r\n\r\n        if (event && event.target.name === \"phone\") {\r\n            memberpackageDetail.phone = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n\r\n            if (memberpackageDetail.isPrimaryMember) {\r\n                actionSetFieldValueState(dispatch, \"phone_number\", event.target.value);\r\n            }\r\n        }\r\n\r\n        if (event && event.target.name === \"membershipType\") {\r\n            let memTypeID = parseInt(event.currentTarget.id);\r\n            memberpackageDetail.membershipTypeID = memTypeID;\r\n            memberpackageDetail.membershipTypeName = event.target.value;\r\n\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n        }\r\n\r\n        if (event && event.target.name === \"address1\") {\r\n            memberpackageDetail.address1 = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n            actionSetFieldValueState(dispatch, \"address1\", event.target.value);\r\n        }\r\n\r\n        if (event && event.target.name === \"address2\") {\r\n            memberpackageDetail.address2 = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n            actionSetFieldValueState(dispatch, \"address2\", event.target.value);\r\n        }\r\n\r\n        if (event && event.target.name === \"city\") {\r\n            memberpackageDetail.city = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n            actionSetFieldValueState(dispatch, \"city\", event.target.value);\r\n        }\r\n\r\n        if (event && event.target.name === \"zipcode\") {\r\n            memberpackageDetail.zipcode = event.target.value;\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n            actionSetFieldValueState(dispatch, \"zip\", event.target.value);\r\n        }\r\n\r\n        if (event && event.target.name === \"searchExistingMemberProfile\") {\r\n            let userNo = parseInt(event.currentTarget.dataset.userid);\r\n            memberpackageDetail.userNo = userNo;\r\n\r\n            //Select User from Dropdown  UserNotPart Of Package.  usersnotpartofpackage\r\n\r\n            if (userNo > 0 && usersnotpartofpackage && usersnotpartofpackage.length > 0 && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown === false).length > 0) {\r\n                let user = usersnotpartofpackage.filter(x => x.userNo == userNo)[0];\r\n\r\n                if (user) {\r\n\r\n                    memberpackageDetail.firstName = genfunction.IsNotNullOrEmptyOrUndefined(user.firstName) ? user.firstName : '';\r\n                    memberpackageDetail.lastName = genfunction.IsNotNullOrEmptyOrUndefined(user.lastName) ? user.lastName : '';\r\n                    memberpackageDetail.email = genfunction.IsNotNullOrEmptyOrUndefined(user.email) ? user.email : '';\r\n                    memberpackageDetail.dob = genfunction.IsNotNullOrEmptyOrUndefined(user.dob) ? Moment(user.dob).format('YYYY-MM-DD') : '';;\r\n                    memberpackageDetail.phone = genfunction.IsNotNullOrEmptyOrUndefined(user.phone) ? user.phone : '';\r\n                    memberpackageDetail.PreviousMembershipType = genfunction.IsNotNullOrEmptyOrUndefined(user.PreviousMembershipType) ? user.PreviousMembershipType : undefined;\r\n                    memberpackageDetail.MembershipExpiryDate = genfunction.IsNotNullOrEmptyOrUndefined(user.MembershipExpiryDate) ? user.MembershipExpiryDate : undefined;\r\n\r\n                }\r\n\r\n                if (createNewProfile) {\r\n                    setCreateNewProfile(false);\r\n                }\r\n            }\r\n\r\n            setState({ ...state, memberpackageDetail: memberpackageDetail });\r\n        }\r\n    };\r\n\r\n    //Error Handling Start\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg('');\r\n    }\r\n\r\n    //Error Handling Start\r\n\r\n\r\n    const changeQuantityHandler = (memberType) => {\r\n        //Check Min and Max Quantity\r\n        //need to add\r\n        memberType.MembershipPackageID = memberPackage.MembershipPackageID;\r\n        actionUpdateMembershipAddonsQuantity(dispatch, memberType);\r\n    }\r\n\r\n    const ValidatePrimaryMemberRecord = () => {\r\n\r\n        let error = \"\";\r\n\r\n        if (memberPackage && memberPackage.MembershipProducts && memberPackage.MembershipProducts.length > 0) {\r\n            memberPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").map(memType => {\r\n\r\n                if (memType.Users && memType.Users.length > 0 && memType.Users.filter(x => x.isPrimaryMember === true).length > 0 && error.length == \"\") {\r\n\r\n                    let priUser = memType.Users.filter(x => x.isPrimaryMember === true)[0];\r\n\r\n                    if (priUser) {\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.firstName)) {\r\n                            return error = 'Primary Member First Name is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.lastName)) {\r\n                            return error = 'Primary Member Last Name is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.email)) {\r\n                            return error = 'Primary Member Email is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.phone) && PhoneNumberMandatory === true) {\r\n                            return error = 'Primary Member phone is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.address1)) {\r\n                            return error = 'Primary Member Address 1 is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.city)) {\r\n                            return error = 'Primary Member City is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.state)) {\r\n                            return error = 'Primary Member State is required.';\r\n                        }\r\n\r\n                        if (!genfunction.IsNotNullOrEmptyOrUndefined(priUser.zipcode)) {\r\n                            return error = 'Primary Member Zipcode is required.';\r\n                        }\r\n                    }\r\n                }\r\n            });\r\n        }\r\n\r\n        return error;\r\n    }\r\n\r\n    const ConfirmMembershipPackage = () => {\r\n\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            seterrorMsg(OrderItemsInCartError);\r\n            return;\r\n        }\r\n\r\n        if (props.isRenewPackage) {\r\n            let err = ValidateMembersUDFs();\r\n            if (err && err.length > 0) {\r\n                seterrorMsg(err);\r\n                return;\r\n            }\r\n\r\n            err = ValidatePrimaryMemberRecord();\r\n            if (err && err.length > 0) {\r\n                seterrorMsg(err);\r\n                return;\r\n            }\r\n        }\r\n\r\n        if (CountTotalMembers() > memberPackage.MaximumMembersInPackage) {\r\n            seterrorMsg(PackageMaxQtyMsg + memberPackage.MaximumMembersInPackage);\r\n        }\r\n        else if (CountTotalMembers() < memberPackage.MinimumMembersInPackage) {\r\n            seterrorMsg(PackageMinQtyMsg + memberPackage.MinimumMembersInPackage + ' membership(s).');\r\n        }\r\n        else {\r\n            actionShopCartAddMembershipPackage(dispatch, memberPackage, props.isRenewPackage);\r\n            props.constnextredirect();\r\n        }\r\n    }\r\n\r\n    const CountTotalMembers = () => {\r\n\r\n        let totalMembers = 0;\r\n\r\n        if (memberPackage) {\r\n            memberPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").map(m => {\r\n\r\n                if (m.Users && m.Users.length > 0) {\r\n\r\n                    totalMembers += m.Users.length;\r\n                }\r\n            });\r\n        }\r\n\r\n        return totalMembers;\r\n    }\r\n\r\n    function calculateAge(birthday) { // birthday is a date\r\n        var ageDifMs = Date.now() - birthday;\r\n        var ageDate = new Date(ageDifMs); // miliseconds from epoch\r\n        return Math.abs(ageDate.getUTCFullYear() - 1970);\r\n    }\r\n\r\n    //Click on Cancel Membership Package\r\n    const constredirect = () => {\r\n\r\n        if (shopcartMembershipPackage && shopcartMembershipPackage.length < 1) {\r\n\r\n            if (props.isRenewPackage) {\r\n                actionResetCustomer(dispatch);\r\n                actionResetMemberValidation(dispatch);\r\n                actionResetCustomerUdfs(dispatch);\r\n                actionResetCustomerAddresses(dispatch);\r\n            }\r\n\r\n            if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n                actionResetMembershipUDFs(dispatch);\r\n            }\r\n\r\n            actionResetFieldValuesState(dispatch);\r\n            actionResetMembershipPackage(dispatch);\r\n        }\r\n\r\n        props.history.push({\r\n            pathname: '/memberships'\r\n        })\r\n    }\r\n\r\n    const [showMoreInfo, setShowMoreInfo] = React.useState(false);\r\n    const [readmorebtnText, setreadmorebtnText] = React.useState('Read More');\r\n\r\n    const ShowMoreInfoClick = () => {\r\n\r\n        if (readmorebtnText === 'Read More') {\r\n            setShowMoreInfo(true);\r\n            setreadmorebtnText('Read Less');\r\n        }\r\n        else {\r\n            setShowMoreInfo(false);\r\n            setreadmorebtnText('Read More');\r\n        }\r\n    }\r\n\r\n\r\n    const GetMembershipPackageDis = (discription) => {\r\n\r\n        if (discription) {\r\n            if (showMoreInfo) {\r\n                return discription.substring(0, discription.length - 1);\r\n            }\r\n\r\n            return discription.substring(0, DisplayMemPackageDiscriptionCharacters);\r\n        }\r\n\r\n        return \"\";\r\n    }\r\n\r\n\r\n    const AddReviewMemberToPackage = (user) => {\r\n\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        if (user) {\r\n            memberpackageDetail.popupTitle = 'Add - Person';\r\n            memberpackageDetail.isPrimaryMember = false;\r\n            memberpackageDetail.firstName = user.firstName;\r\n            memberpackageDetail.lastName = user.lastName;\r\n            memberpackageDetail.email = user.email;\r\n            memberpackageDetail.dob = GetUserDOB(user);\r\n            memberpackageDetail.phone = user.phone;\r\n            memberpackageDetail.address1 = user.address1;\r\n            memberpackageDetail.address2 = user.address2;\r\n            memberpackageDetail.city = user.city;\r\n            memberpackageDetail.state = user.state;\r\n            memberpackageDetail.zipcode = user.zipcode;\r\n            memberpackageDetail.isRenewal = user.isRenewal;\r\n            memberpackageDetail.UniquePackageRef = user.UniquePackageRef;\r\n            memberpackageDetail.MembershipExpiryDate = user.MembershipExpiryDate;\r\n            memberpackageDetail.MembershipPackageID = memberPackage.MembershipPackageID;\r\n            memberpackageDetail.membershipTypeID = 0;\r\n            memberpackageDetail.membershipTypeName = '';\r\n            memberpackageDetail.userNo = user.userNo;\r\n            memberpackageDetail.isEdit = false;\r\n            memberpackageDetail.notPartOfPackage = user.notpartofPackage;\r\n        }\r\n\r\n\r\n        setState({ ...state, memberpackageDetail: memberpackageDetail })\r\n\r\n        setOpen(true);\r\n\r\n    }\r\n\r\n    //Membership Popup\r\n    const BackMembershipPopup = () => {\r\n        actionResetMemberValidation(dispatch);\r\n        actionResetFieldValuesState(dispatch);\r\n        setisredirectclicked(true);\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (isredirectclicked) {\r\n            setisredirectclicked(false);\r\n            let memPackID = 0;\r\n\r\n            if (memberPackage && memberPackage.hasOwnProperty('MembershipPackageID')) {\r\n                memPackID = memberPackage.MembershipPackageID;\r\n            }\r\n\r\n            props.history.push({\r\n                pathname: '/memberships'\r\n            })\r\n        }\r\n\r\n    }, [isredirectclicked]);\r\n\r\n    // const RenewMembershp = (mp) => {\r\n\r\n    //     //Update Primar Record\r\n\r\n    //     if (customer.customer.length > 0) {\r\n    //         actionSetFieldValueState(dispatch, \"first_name\", customer.customer[0].FirstName);\r\n    //         actionSetFieldValueState(dispatch, \"last_name\", customer.customer[0].LastName);\r\n    //         actionSetFieldValueState(dispatch, \"email\", customer.customer[0].GuestEmail);\r\n    //         actionSetFieldValueState(dispatch, \"phone_number\", customer.customer[0].CustomerAddress[0].MobilePhone);\r\n    //         actionSetFieldValueState(dispatch, \"address1\", customer.customer[0].CustomerAddress[0].Street1);\r\n    //         actionSetFieldValueState(dispatch, \"address2\", customer.customer[0].CustomerAddress[0].Street2);\r\n    //         actionSetFieldValueState(dispatch, \"city\", customer.customer[0].CustomerAddress[0].CitySuburb);\r\n    //         actionSetFieldValueState(dispatch, \"state\", customer.customer[0].CustomerAddress[0].State);\r\n    //         actionSetFieldValueState(dispatch, \"zip\", customer.customer[0].CustomerAddress[0].Postcode);\r\n    //         actionSetFieldValueState(dispatch, \"country\", customer.customer[0].CustomerAddress[0].Country);\r\n    //     }\r\n\r\n    //     actionUpdatePackageForRenew(dispatch, mp.MembershipPackageID, memmemberhisps, customer.customer);\r\n    //     setopenMembership(false);\r\n\r\n    //     props.history.push({\r\n    //         pathname: '/memberships/renew/' + mp.MembershipPackageID\r\n    //     })\r\n    // }\r\n\r\n    // const renewmembershipsdistinct = () => {\r\n    //     const renewmemshipscollection = [];\r\n\r\n    //     membermemberhisps.membermerberhips[0].Memberships.filter(x => x.IsRenewed == false).map(x => {\r\n\r\n    //         if (renewmemshipscollection.filter(y => y.MembershipPackageID == x.MembershipPackageID).length == 0) {\r\n    //             renewmemshipscollection.push(x);\r\n    //         }\r\n    //     });\r\n\r\n    //     return renewmemshipscollection;\r\n    // }\r\n\r\n    const classes = useStyles();\r\n\r\n    //Show Fields\r\n\r\n    let displayclass = \"\";\r\n    if (state.memberpackageDetail.isPrimaryMember)\r\n        displayclass = classes.visible;\r\n    else\r\n        displayclass = classes.displaynone;\r\n\r\n\r\n    const replaceEscapeCharacters = (item) => {\r\n        var itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n        itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n        return itemValue;\r\n    }\r\n\r\n    const GetMembershipTypeQty = (memPackage, memTypeProd) => {\r\n\r\n        let availQty = '';\r\n\r\n        if (memTypeProd) {\r\n\r\n            if (memTypeProd.MinQuantity > 0) {\r\n                availQty = '(Min Qty : ' + memTypeProd.MinQuantity + ', Max Qty : ' + memTypeProd.MaxQuantity + ')';\r\n            }\r\n\r\n            if (memTypeProd.MinQuantity < 1 || memTypeProd.MinQuantity == memTypeProd.MaxQuantity) {\r\n                availQty = '(Max Qty : ' + memTypeProd.MaxQuantity + ')';\r\n            }\r\n\r\n            if (memTypeProd.MaxQuantity >= memPackage.MaximumMembersInPackage && memTypeProd.MinQuantity > 0) {\r\n                availQty = '(Min Qty : ' + memTypeProd.MinQuantity + ')';\r\n            }\r\n\r\n            if (memTypeProd.MaxQuantity >= memPackage.MaximumMembersInPackage && memTypeProd.MinQuantity < 1) {\r\n                availQty = '';\r\n            }\r\n\r\n            if (memTypeProd.MinQuantity == memPackage.MaximumMembersInPackage) {\r\n                availQty = '';\r\n            }\r\n        }\r\n\r\n        return availQty;\r\n    }\r\n\r\n    const GetDefaultMembershipName = (membershipTypeName) => {\r\n\r\n        let memtypename = '';\r\n\r\n        if (props.membershipPackage && props.membershipPackage.MembershipProducts)\r\n            if (props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").length == 1) {\r\n                memtypename = props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\")[0].ProductName;\r\n            }\r\n            else {\r\n                memtypename = membershipTypeName;\r\n            }\r\n\r\n        return memtypename;\r\n    }\r\n\r\n    const GetDefaultMemberName = (memberNo) => {\r\n\r\n        let userName = '';\r\n\r\n        if (memberNo > 0 && usersnotpartofpackage && usersnotpartofpackage.length > 0 && usersnotpartofpackage.filter(x => x.notpartofPackage == true).length > 0) {\r\n            let user = usersnotpartofpackage.filter(x => x.userNo == memberNo)[0];\r\n\r\n            if (user) {\r\n                userName = user.firstName + ' ' + user.lastName;\r\n            }\r\n        }\r\n\r\n        return userName;\r\n    }\r\n\r\n    const ValidateMembershipType = () => {\r\n        let valid = true;\r\n        var memberpackageDetail = { ...state.memberpackageDetail };\r\n\r\n        if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0 && membershipTypesUdfs.membershipUdfs.filter(x => x.MembershipTypeID == memberpackageDetail.membershipTypeID).length > 0) {\r\n\r\n            membershipTypesUdfs.membershipUdfs.filter(x => x.MembershipTypeID == memberpackageDetail.membershipTypeID).filter(x => x.UDFCategories).map(udfCategorey => {\r\n\r\n                if (udfCategorey.UDFCategories && udfCategorey.UDFCategories.length > 0 && valid) {\r\n\r\n                    udfCategorey.UDFCategories.map(udfCate => {\r\n                        udfCate.UserDefinedFields.map((udf) => {\r\n\r\n                            if (valid) {\r\n                                if (udf.IsRequired && udf.Users && udf.Users.length == 0) {\r\n                                    valid = false;\r\n                                }\r\n                                else if (udf.IsRequired && udf.Users && udf.Users.length > 0 && udf.Users.filter(x => x.userID == memberpackageDetail.userNo).length < 1) {\r\n                                    valid = false;\r\n                                }\r\n                                else if (udf.IsRequired && udf.Users && udf.Users.length > 0 && udf.Users.filter(x => x.userID == memberpackageDetail.userNo).length > 0) {\r\n                                    let user = udf.Users.filter(x => x.userID == memberpackageDetail.userNo)[0];\r\n\r\n                                    if (user.userUDFValue !== undefined && user.userUDFValue !== null) {\r\n\r\n                                        if ((udf.UDFType === \"Text\" || udf.UDFType === \"Decimal\") && user.userUDFValue.length < 1) {\r\n                                            valid = false;\r\n                                        }\r\n                                        else if (udf.UDFType === \"Bit\" && user.userUDFValue === false) {\r\n                                            valid = false;\r\n                                        }\r\n                                    }\r\n                                }\r\n                            }\r\n                        })\r\n                    });\r\n                }\r\n            });\r\n        }\r\n\r\n        return valid;\r\n    }\r\n    const ValidateMembersUDFs = () => {\r\n\r\n        let error = '';\r\n\r\n        if (membershipTypesUdfs.membershipUdfs && membershipTypesUdfs.membershipUdfs.length > 0) {\r\n\r\n            membershipTypesUdfs.membershipUdfs.filter(x => x.UDFCategories).map(membershipType => {\r\n\r\n                let memberusers = GetMembershipTypeUserCount(membershipType.MembershipTypeID);\r\n\r\n                if (membershipType.UDFCategories != null && membershipType.UDFCategories.length > 0 && error.length == 0 && memberusers > 0) {\r\n\r\n                    membershipType.UDFCategories.map((udfCategorey, i) => {\r\n\r\n                        udfCategorey.UserDefinedFields.map((udf) => {\r\n                            if (error.length == 0 && udf.IsRequired && udf.hasOwnProperty('Users') && udf.Users !== undefined && memberusers != udf.Users.length) {\r\n                                error = 'Please fill the required UDFs for Membership Type ' + GetMembershipTypeName(membershipType.MembershipTypeID);\r\n                                return;\r\n                            }\r\n                        })\r\n                    });\r\n                }\r\n            })\r\n        }\r\n\r\n        return error;\r\n    }\r\n\r\n    const GetMembershipTypeName = (memTypeID) => {\r\n        let memberTypeName = '';\r\n\r\n        if (memberPackage) {\r\n            memberTypeName = memberPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\" && x.MembershipTypeID == memTypeID)[0].ProductName;\r\n        }\r\n\r\n        return memberTypeName;\r\n    }\r\n\r\n    const GetMembershipTypeUserCount = (memTypeID) => {\r\n        let totalMembers = 0;\r\n\r\n        if (memberPackage) {\r\n            memberPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\" && x.MembershipTypeID == memTypeID).map(m => {\r\n\r\n                if (m.Users && m.Users.length > 0) {\r\n\r\n                    totalMembers += m.Users.length;\r\n                }\r\n            });\r\n        }\r\n\r\n        return totalMembers;\r\n    }\r\n\r\n    const onChangeInput = (e) => {\r\n\r\n        if (e.nativeEvent.target.defaultValue === e.nativeEvent.target.value) {\r\n\r\n            e.nativeEvent.target.defaultValue = \"\";\r\n            e.nativeEvent.target.value = \"\";\r\n\r\n            setTimeout(fieldhandleChange(e), 0);\r\n\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errorMsg.length > 0 ? errorMsg : ''}\r\n                open={errorMsg.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n            <Grid container justify=\"center\">\r\n                <Grid item lg={12} sm={12} xs={12} align=\"center\" justifyContent=\"flex-end\">\r\n\r\n                    <Grid align=\"center\" item xs={12} ms={12} lg={12} style={{ minHeight: \"200px\" }}>\r\n\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ marginTop: \"10px\", padding: \"4px\" }}>\r\n                            {props.membershipPackage.PackageName + ' - ' + PackageDiscriptionHeading}\r\n                        </Typography>\r\n\r\n                        <Grid item xs={12} style={{ border: \"0.5px solid silver\" }}>\r\n                            <Typography variant=\"subtitle2\" color=\"textSecondary\" style={{ padding: \"20px\" }} align=\"justify\">\r\n                                {ReactHtmlParser(GetMembershipPackageDis(props.membershipPackage.Description))}\r\n                            </Typography>\r\n\r\n                            <Link\r\n                                component=\"button\"\r\n                                variant=\"body2\"\r\n                                onClick={ShowMoreInfoClick}\r\n                                style={{ display: props.membershipPackage.Description && props.membershipPackage.Description.length < DisplayMemPackageDiscriptionCharacters ? 'none' : 'block' }}\r\n                            >\r\n                                {readmorebtnText}\r\n                            </Link>\r\n                        </Grid>\r\n                    </Grid>\r\n\r\n                </Grid>\r\n\r\n                <Grid container item lg={12} sm={12} xs={12} justifyContent=\"flex-end\">\r\n\r\n                    <Grid item lg={12} sm={12} xs={12} style={{ marginBottom: \"10px\" }}>\r\n\r\n                        <Hidden smDown>\r\n                            <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ marginTop: \"10px\", padding: \"4px\" }}>\r\n                                Membership Types\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography className={classes.smalltourheaderbox} align=\"center\" variant=\"h3\" style={{ marginTop: \"10px\", padding: \"4px\" }}>\r\n                                Membership Types\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography className={classes.smalltourheaderbox} align=\"center\" variant=\"h3\" style={{ marginTop: \"10px\", padding: \"4px\" }}>\r\n                                Membership Types\r\n                            </Typography>\r\n                        </Hidden>\r\n                    </Grid>\r\n\r\n                    {props.membershipPackage.hasOwnProperty(\"MembershipProducts\") && props.membershipPackage.MembershipProducts.map((membershipProduct, i) => {\r\n\r\n                        return membershipProduct.MembershipType === \"Membership\" ?\r\n\r\n                            <Grid container style={{ marginTop: '10px' }} key={i}>\r\n                                <Grid lg={8} sm={8} xs={8} style={{ marginTop: '5px' }}>\r\n\r\n                                    <Hidden smDown>\r\n                                        <Typography variant=\"h3\">{replaceEscapeCharacters(membershipProduct.ProductName)} </Typography>\r\n                                        <Typography className={membershipProduct.hasOwnProperty('Users') && (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) < membershipProduct.MinQuantity || (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) > membershipProduct.MaxQuantity ? classes.errorColor : classes.defaultColor} style={{ marginTop: \"3px\", marginLeft: \"5px\" }}> {membershipProduct.AgeBasedMembership ? '(Min Age : ' + membershipProduct.MinAge + ', Max Age : ' + membershipProduct.MaxAge + ')' : ''} {GetMembershipTypeQty(props.membershipPackage, membershipProduct)}\r\n                                        </Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden xsDown mdUp>\r\n                                        <Typography variant=\"h4\">{replaceEscapeCharacters(membershipProduct.ProductName)}</Typography>\r\n                                        <Typography className={membershipProduct.hasOwnProperty('Users') && (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) < membershipProduct.MinQuantity || (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) > membershipProduct.MaxQuantity ? classes.errorColor : classes.defaultColor} variant=\"h6\" style={{ marginTop: \"3px\", marginLeft: \"5px\" }}> {membershipProduct.AgeBasedMembership ? '(Min Age : ' + membershipProduct.MinAge + ', Max Age : ' + membershipProduct.MaxAge + ')' : ''} {GetMembershipTypeQty(props.membershipPackage, membershipProduct)}\r\n                                        </Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden smUp>\r\n                                        <Typography variant=\"h5\">{replaceEscapeCharacters(membershipProduct.ProductName)}</Typography>\r\n                                        <Typography className={membershipProduct.hasOwnProperty('Users') && (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) < membershipProduct.MinQuantity || (membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) > membershipProduct.MaxQuantity ? classes.errorColor : classes.defaultColor} variant=\"h6\" style={{ marginTop: \"3px\", marginLeft: \"5px\" }}> {membershipProduct.AgeBasedMembership ? '(Min Age : ' + membershipProduct.MinAge + ', Max Age : ' + membershipProduct.MaxAge + ')' : ''} {GetMembershipTypeQty(props.membershipPackage, membershipProduct)}\r\n                                        </Typography>\r\n                                    </Hidden>\r\n\r\n\r\n                                </Grid>\r\n                                <Grid item lg={4} sm={4} xs={4} align=\"right\">\r\n\r\n                                    <Hidden smDown>\r\n                                        <Typography variant=\"h4\"> {genfunction.ccyFormat(membershipProduct.Price)}</Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden xsDown mdUp>\r\n                                        <Typography variant=\"h5\"> {genfunction.ccyFormat(membershipProduct.Price)}</Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden smUp>\r\n                                        <Typography variant=\"h6\"> {genfunction.ccyFormat(membershipProduct.Price)}</Typography>\r\n                                    </Hidden>\r\n                                </Grid>\r\n                                <Grid xs={12} className={classes.hr} style={{ marginTop: '5px' }}>\r\n                                </Grid>\r\n\r\n                                <Grid item lg={12} sm={12} xs={12} style={{ minHeight: '100px' }}>\r\n                                    {membershipProduct.Users && membershipProduct.Users.length > 0\r\n                                        ? membershipProduct.Users.sort((a, b) => Number(b.isPrimaryMember) - Number(a.isPrimaryMember)).map((membership, i) => {\r\n                                            return (\r\n                                                <div key={i}>\r\n                                                    <Grid item lg={12} sm={12} xs={12} container style={{ marginTop: \"10px\" }}>\r\n                                                        <>\r\n                                                            <Tooltip\r\n                                                                enterDelay={300}\r\n                                                                title=\"Edit\"\r\n                                                                enterTouchDelay={0} \r\n                                                                leaveTouchDelay={1000}\r\n                                                            >\r\n                                                                <EditIcon\r\n                                                                    className={classes.AddHoverOnIcons}\r\n                                                                    color={\"primary\"}\r\n                                                                    onClick={() => { EditPerson(membership, membershipProduct.MembershipTypeID) }}\r\n                                                                />\r\n                                                            </Tooltip>\r\n                                                            {membership.isPrimaryMember && membership.isRenewal ? '' :\r\n                                                                <Tooltip\r\n                                                                    enterDelay={300}\r\n                                                                    title=\"Delete\"\r\n                                                                    enterTouchDelay={0} \r\n                                                                    leaveTouchDelay={1000}\r\n                                                                >\r\n                                                                    <CancelIcon\r\n                                                                        className={classes.AddHoverOnIcons}\r\n                                                                        onClick={() => { DeletePerson(membershipProduct.MembershipTypeID, membership) }}\r\n                                                                        color={\"error\"}\r\n                                                                    />\r\n                                                                </Tooltip>}\r\n                                                        </>\r\n\r\n                                                        <Typography className={classes.UserNameDisplay}>{membership.firstName}  {membership.lastName}</Typography>\r\n                                                    </Grid>\r\n\r\n                                                    <Grid item lg={12} sm={12} xs={12} container style={{ marginTop: \"10px\" }}>\r\n\r\n                                                        {(membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) < membershipProduct.MinQuantity ?\r\n                                                            <>\r\n\r\n                                                                <Tooltip\r\n                                                                    enterDelay={300}\r\n                                                                    title=\"Add\"\r\n                                                                    enterTouchDelay={0}\r\n                                                                     leaveTouchDelay={1000}\r\n                                                                >\r\n                                                                    <PersonAddIcon\r\n                                                                        className={classes.AddHoverOnIcons}\r\n                                                                        onClick={() => handleClickOpen(membershipProduct.MembershipTypeID, replaceEscapeCharacters(membershipProduct.ProductName))}\r\n                                                                        color={\"primary\"}\r\n\r\n                                                                    />\r\n                                                                </Tooltip>\r\n\r\n                                                                <Typography className={classes.errorColor + ' ' + classes.NoPersonAssignedTxt} >{ValidateMembershipMinQuantity}</Typography>\r\n\r\n                                                            </> : ''\r\n                                                        }\r\n\r\n                                                    </Grid>\r\n                                                </div>\r\n                                            )\r\n                                        })\r\n\r\n                                        :\r\n\r\n\r\n                                        <Grid item lg={12} sm={12} xs={12} container style={{ marginTop: \"10px\" }}>\r\n\r\n                                            {(membershipProduct.Users === undefined ? 0 : membershipProduct.Users.length) < membershipProduct.MinQuantity ?\r\n                                                <>\r\n\r\n                                                    <Tooltip\r\n                                                        enterDelay={300}\r\n                                                        title=\"Add\"\r\n                                                        enterTouchDelay={0}\r\n                                                         leaveTouchDelay={1000}\r\n                                                    >\r\n                                                        <PersonAddIcon\r\n                                                            className={classes.AddHoverOnIcons}\r\n                                                            onClick={() => handleClickOpen(membershipProduct.MembershipTypeID, replaceEscapeCharacters(membershipProduct.ProductName))}\r\n                                                            color={\"primary\"}\r\n                                                        />\r\n                                                    </Tooltip>\r\n\r\n                                                    <Typography className={classes.errorColor + ' ' + classes.NoPersonAssignedTxt} >{ValidateMembershipMinQuantity}</Typography>\r\n\r\n                                                </> : ''\r\n                                            }\r\n\r\n                                            {(membershipProduct.Users ? membershipProduct.Users.length : 0) <= membershipProduct.MaxQuantity && (membershipProduct.Users ? membershipProduct.Users.length : 0) >= membershipProduct.MinQuantity ?\r\n                                                <>\r\n\r\n                                                    <Tooltip\r\n                                                        enterDelay={300}\r\n                                                        title=\"Add\"\r\n                                                        enterTouchDelay={0} \r\n                                                        leaveTouchDelay={1000}\r\n                                                    >\r\n                                                        <PersonAddIcon\r\n                                                            className={classes.AddHoverOnIcons}\r\n                                                            onClick={() => handleClickOpen(membershipProduct.MembershipTypeID, replaceEscapeCharacters(membershipProduct.ProductName))}\r\n                                                            color={\"primary\"}\r\n                                                        />\r\n                                                    </Tooltip>\r\n\r\n                                                    <Typography className={classes.NoPersonAssignedTxt}>No person is currently assigned to this type.</Typography>\r\n\r\n                                                </> : ''\r\n                                            }\r\n                                        </Grid>\r\n\r\n                                    }\r\n\r\n                                    {membershipProduct.hasOwnProperty('Users') && membershipProduct.Users.length > membershipProduct.MaxQuantity ?\r\n                                        <Grid item lg={12} sm={12} xs={12} container style={{ marginTop: \"10px\" }}>\r\n\r\n                                            <Hidden smDown>\r\n                                                <Typography className={classes.errorColor} style={{ fontSize: \"16px\", marginLeft: \"50px\", marginTop: \"10px\" }}>{ValidateMembershipMaxQuantity}</Typography>\r\n\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography className={classes.errorColor} style={{ fontSize: \"14px\", marginTop: \"10px\" }}>{ValidateMembershipMaxQuantity}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography className={classes.errorColor} style={{ fontSize: \"12px\", marginTop: \"10px\" }}>{ValidateMembershipMaxQuantity}</Typography>\r\n                                            </Hidden>\r\n                                        </Grid>\r\n                                        :\r\n                                        ''\r\n                                    }\r\n\r\n                                    {membershipProduct.hasOwnProperty('Users') && membershipProduct.Users.length > 0 ?\r\n                                        <Grid item lg={12} sm={12} xs={12} container style={{ marginTop: \"10px\" }}>\r\n                                            <Tooltip\r\n                                                enterDelay={300}\r\n                                                title=\"Add\"\r\n                                                enterTouchDelay={0} \r\n                                                leaveTouchDelay={1000}\r\n                                            >\r\n                                                <PersonAddIcon\r\n                                                    className={classes.AddHoverOnIcons}\r\n                                                    onClick={() => handleClickOpen(membershipProduct.MembershipTypeID, replaceEscapeCharacters(membershipProduct.ProductName))}\r\n                                                    color={membershipProduct.Users.length >= membershipProduct.MaxQuantity ? \"disabled\" : \"primary\"}\r\n                                                    style={{ pointerEvents: (membershipProduct.Users.length >= membershipProduct.MaxQuantity ? 'None' : '') }}\r\n                                                />\r\n                                            </Tooltip>\r\n                                        </Grid>\r\n                                        :\r\n                                        ''\r\n                                    }\r\n\r\n                                </Grid>\r\n                            </Grid>\r\n\r\n                            : null\r\n                    })}\r\n\r\n                    {props.membershipPackage.hasOwnProperty(\"MembershipProducts\") &&\r\n                        props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"AddOn\").length > 0 ?\r\n                        <>\r\n                            <Grid item lg={12} sm={12} xs={12}>\r\n\r\n                                <Hidden smDown>\r\n                                    <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ marginTop: \"20px\", padding: \"4px\" }}>\r\n                                        {MembershipAddOnsHeading}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n                                    <Typography className={classes.smalltourheaderbox} align=\"center\" variant=\"h3\" style={{ marginTop: \"20px\", padding: \"4px\" }}>\r\n                                        {MembershipAddOnsHeading}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n                                    <Typography className={classes.smalltourheaderbox} align=\"center\" variant=\"h4\" style={{ marginTop: \"20px\", padding: \"4px\" }}>\r\n                                        {MembershipAddOnsHeading}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                            </Grid>\r\n                            <Grid container item lg={12} sm={12} xs={12} className={classes.hr}>\r\n                            </Grid></>\r\n                        : null}\r\n\r\n                    {props.membershipPackage.hasOwnProperty(\"MembershipProducts\") && props.membershipPackage.MembershipProducts.map((addonMembership, i) => {\r\n\r\n                        return addonMembership.MembershipType === \"AddOn\" ?\r\n                            <Grid container lg={12} sm={12} xs={12} style={{ marginTop: \"10px\" }} key={i}>\r\n                                <Grid container item lg={6} sm={6} xs={6} >\r\n\r\n                                    <Hidden smDown>\r\n                                        <Typography variant=\"h3\" style={{ marginTop: \"10px\" }}>{replaceEscapeCharacters(addonMembership.ProductName)} </Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden xsDown mdUp>\r\n                                        <Typography variant=\"h4\" style={{ marginTop: \"10px\" }}>{replaceEscapeCharacters(addonMembership.ProductName)} </Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden smUp>\r\n                                        <Typography variant=\"h5\" style={{ marginTop: \"10px\" }}>{replaceEscapeCharacters(addonMembership.ProductName)} </Typography>\r\n                                    </Hidden>\r\n\r\n                                </Grid>\r\n                                <Grid item lg={3} sm={3} xs={3} align=\"left\" >\r\n                                    {(addonMembership.Quantity > 0 || addonMembership.MinQuantity > 0) ? () => changeQuantityHandler(addonMembership) : ''}\r\n                                    <Checkbox\r\n                                        color=\"primary\"\r\n                                        inputProps={{ 'aria-label': 'primary checkbox' }}\r\n                                        onChange={() => changeQuantityHandler(addonMembership)}\r\n                                        checked={(addonMembership.Quantity > 0 || addonMembership.MinQuantity > 0)}\r\n                                    />\r\n                                </Grid>\r\n\r\n                                <Grid item lg={3} sm={3} xs={3} align=\"right\" style={{ marginTop: \"10px\" }}>\r\n                                    <Hidden smDown>\r\n                                        <Typography variant=\"h4\"> {genfunction.ccyFormat(addonMembership.Price)}</Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden xsDown mdUp>\r\n                                        <Typography variant=\"h5\"> {genfunction.ccyFormat(addonMembership.Price)}</Typography>\r\n                                    </Hidden>\r\n\r\n                                    <Hidden smUp>\r\n                                        <Typography variant=\"h6\"> {genfunction.ccyFormat(addonMembership.Price)}</Typography>\r\n                                    </Hidden>\r\n                                </Grid>\r\n                            </Grid>\r\n\r\n                            : null\r\n                    })}\r\n\r\n                    <Grid container xs={12}>\r\n                        <Grid item lg={12} sm={12} xs={12} align=\"right\">\r\n                            <Grid style={{ padding: \"30px 0px 30px 0px\" }}>\r\n\r\n                                <Hidden smDown>\r\n                                    <Typography variant=\"h4\">Tax = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TaxTotal)}</Typography>\r\n                                    <Typography variant=\"h4\">Total = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TotalAmount)}</Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n                                    <Typography variant=\"h5\">Tax = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TaxTotal)}</Typography>\r\n                                    <Typography variant=\"h5\">Total = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TotalAmount)}</Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n                                    <Typography variant=\"h6\">Tax = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TaxTotal)}</Typography>\r\n                                    <Typography variant=\"h\">Total = {genfunction.ccyFormat(genfunction.CalculateMembershipPackageTotal(memberPackage).TotalAmount)}</Typography>\r\n                                </Hidden>\r\n\r\n                            </Grid>\r\n\r\n                            <Grid item style={{ padding: \"30px 0px 30px 0px\" }}>\r\n\r\n                                <Hidden smDown>\r\n                                    <Button variant=\"contained\" onClick={() => constredirect()} size=\"large\" className={classes.primarycolor}\r\n                                        style={{ marginRight: \"10px\", marginTop: 0 }}>\r\n                                        Cancel\r\n                                    </Button>\r\n                                    <Button variant=\"contained\"\r\n                                        onClick={() => ConfirmMembershipPackage()} disabled={ValidateMemberPackageQuantities()}\r\n                                        className={classes.primarycolor}\r\n                                        style={{ marginTop: 0 }}\r\n                                        size=\"large\" >\r\n                                        Add to Cart\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n                                    <Button variant=\"contained\" onClick={() => constredirect()} size=\"large\" className={classes.primarycolor}\r\n                                        style={{ marginRight: \"10px\", marginTop: 10 }}>\r\n                                        Cancel\r\n                                    </Button>\r\n                                    <Button variant=\"contained\"\r\n                                        onClick={() => ConfirmMembershipPackage()} disabled={ValidateMemberPackageQuantities()}\r\n                                        className={classes.primarycolor}\r\n                                        style={{ marginTop: 10 }}\r\n                                        size=\"large\" >\r\n                                        Add to Cart\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n                                    <Button variant=\"contained\" onClick={() => constredirect()} size=\"medium\" className={classes.primarycolor}\r\n                                        style={{ marginRight: \"10px\", marginTop: 10 }}>\r\n                                        Cancel\r\n                                    </Button>\r\n                                    <Button variant=\"contained\"\r\n                                        onClick={() => ConfirmMembershipPackage()} disabled={ValidateMemberPackageQuantities()}\r\n                                        className={classes.primarycolor}\r\n                                        style={{ marginTop: 10 }}\r\n                                        size=\"medium\" >\r\n                                        Add to Cart\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                            </Grid>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item lg={1} xs={12} align=\"center\">\r\n                    <Divider orientation=\"vertical\" flexItem style={{ border: \"0.5px solid silver\", marginTop: \"20px\", marginBottom: \"-30px\" }} />\r\n                </Grid>\r\n            </Grid>\r\n\r\n            {/* Add/Edit Person Dialog Start */}\r\n\r\n            <Dialog\r\n                open={open}\r\n                onClose={handleClose}\r\n                aria-labelledby=\"form-dialog-title\"\r\n            >\r\n\r\n                <DialogTitle id=\"form-dialog-title\" className={classes.dialogTitleHeader} >\r\n                    <Typography className=\"AddPersonMembershipTitle\">\r\n                        {state.memberpackageDetail.popupTitle}\r\n                    </Typography>\r\n                </DialogTitle>\r\n                <DialogContent dividers={true}>\r\n\r\n\r\n                    <form className={classes.root + \" addmembership webkitScroll\"}\r\n                        noValidate autoComplete=\"off\"\r\n                    >\r\n                        <Grid container xs={12} spacing={1}>\r\n\r\n                            {props.isRenewPackage && state.memberpackageDetail.isEdit && state.memberpackageDetail.PreviousMembershipType !== undefined ?\r\n                                <>\r\n                                    <Grid item xs={6} >\r\n                                        <Typography variant=\"subtitle1\" color=\"textSecondary\">Current Membership Type : </Typography>\r\n                                    </Grid>\r\n                                    <Grid item xs={6} >\r\n                                        <Typography variant=\"subtitle1\" color=\"textSecondary\"> {state.memberpackageDetail.PreviousMembershipType}</Typography>\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={6} >\r\n                                        <Typography variant=\"subtitle1\" color=\"textSecondary\">Expiry Date :  </Typography>\r\n                                    </Grid>\r\n                                    <Grid item xs={6} >\r\n                                        <Typography variant=\"subtitle1\" color=\"textSecondary\"> {Moment(state.memberpackageDetail.MembershipExpiryDate).format('YYYY-MM-DD')}</Typography>\r\n                                    </Grid>\r\n                                </>\r\n\r\n                                : null}\r\n\r\n                            <Grid item xs={6}>\r\n                                <Typography variant=\"subtitle1\" color=\"textSecondary\">Membership Type</Typography>\r\n                            </Grid>\r\n                            <Grid item xs={6} >\r\n                                <FormControl style={{ width: \"100%\" }} error={errorstate.initialerrorstate.membershipType.errorstate}>\r\n                                    <Select\r\n                                        labelId=\"Membership Type\"\r\n                                        id=\"membershipType\"\r\n                                        name=\"membershipType\"\r\n                                        displayEmpty\r\n                                        value={GetDefaultMembershipName(state.memberpackageDetail.membershipTypeName)}\r\n                                        onChange={fieldhandleChange}\r\n                                        fullWidth={true}\r\n                                    >\r\n\r\n                                        {props.membershipPackage.hasOwnProperty(\"MembershipProducts\") &&\r\n                                            props.membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").map((membershipProduct, i) =>\r\n                                            (\r\n                                                state.memberpackageDetail.isEdit === false ?\r\n                                                    (membershipProduct.Users !== undefined && membershipProduct.Users.length) < membershipProduct.MaxQuantity ?\r\n                                                        <MenuItem\r\n                                                            key={i}\r\n                                                            id={membershipProduct.MembershipTypeID}\r\n                                                            value={replaceEscapeCharacters(membershipProduct.ProductName)}>\r\n                                                            {replaceEscapeCharacters(membershipProduct.ProductName)}\r\n                                                        </MenuItem>\r\n                                                        : null\r\n                                                    :\r\n                                                    <MenuItem\r\n                                                        key={i}\r\n                                                        id={membershipProduct.MembershipTypeID}\r\n                                                        value={replaceEscapeCharacters(membershipProduct.ProductName)}>\r\n                                                        {replaceEscapeCharacters(membershipProduct.ProductName)}\r\n                                                    </MenuItem>\r\n                                            ))}\r\n                                    </Select>\r\n                                    <FormHelperText>{errorstate.initialerrorstate.membershipType.errortext}</FormHelperText>\r\n                                </FormControl>\r\n                            </Grid>\r\n\r\n                            {props.isRenewPackage === true && state.memberpackageDetail.isEdit === false ?\r\n                                <>\r\n                                    <Grid item xs={6}>\r\n                                        <Typography variant=\"subtitle1\" color=\"textSecondary\">Select Existing Member Profile</Typography>\r\n                                    </Grid>\r\n                                    <Grid item xs={6} >\r\n                                        <FormControl style={{ width: \"100%\" }} >\r\n                                            <Select\r\n                                                labelId=\"Search Existing Member Profile\"\r\n                                                id=\"searchExistingMemberProfile\"\r\n                                                name=\"searchExistingMemberProfile\"\r\n                                                displayEmpty\r\n                                                value={GetDefaultMemberName(state.memberpackageDetail.userNo)}\r\n                                                onChange={fieldhandleChange}\r\n                                                fullWidth={true}\r\n                                                disabled={(usersnotpartofpackage\r\n                                                    && usersnotpartofpackage.length > 0\r\n                                                    && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown == false).length === 0)}\r\n                                            >\r\n\r\n                                                {usersnotpartofpackage\r\n                                                    && usersnotpartofpackage.length > 0\r\n                                                    && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown == false).length > 0\r\n                                                    && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown == false).map((child, i) =>\r\n                                                    (\r\n                                                        <MenuItem\r\n                                                            key={i}\r\n                                                            id={child.userNo}\r\n                                                            value={child.firstName + ' ' + child.lastName}\r\n                                                            data-userID={child.userNo}\r\n                                                            disabled={(usersnotpartofpackage\r\n                                                                && usersnotpartofpackage.length > 0\r\n                                                                && usersnotpartofpackage.filter(x => x.notpartofPackage == true && x.userSelectedFromDropdown == false).length === 0)}\r\n                                                        >\r\n                                                            {child.firstName + ' ' + child.lastName}\r\n                                                        </MenuItem>\r\n                                                    )\r\n                                                    )\r\n                                                }\r\n                                            </Select>\r\n                                        </FormControl>\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={6}></Grid>\r\n                                    <Grid item xs={6} style={{ marginTop: '10px' }}>\r\n                                        <Typography>OR</Typography>\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={6}></Grid>\r\n                                    <Grid item xs={6} style={{ marginTop: '10px' }}>\r\n                                        <Button className={classes.primarycolor} variant=\"contained\" size=\"medium\"\r\n                                            disabled={createNewProfile}\r\n                                            onClick={() => {\r\n                                                setCreateNewProfile(true);\r\n                                                handleClickOpen(state.memberpackageDetail.membershipTypeID, replaceEscapeCharacters(state.memberpackageDetail.membershipTypeName));\r\n                                            }}\r\n                                        >\r\n                                            Create New Profile\r\n                                        </Button>\r\n                                    </Grid>\r\n                                </>\r\n                                : ''}\r\n\r\n\r\n                            <>\r\n                                <Grid item xs={6}>\r\n                                    <TextField\r\n                                        margin=\"dense\"\r\n                                        autoFocus\r\n                                        onChange={fieldhandleChange}\r\n                                        name=\"fname\"\r\n                                        id=\"fname\"\r\n                                        label=\"First Name\"\r\n                                        fullWidth={true}\r\n                                        error={errorstate.initialerrorstate.first_name.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.first_name.errortext}\r\n                                        value={state.memberpackageDetail.firstName}\r\n                                        inputProps={{ maxLength: AddPersonFirstNameLength }}\r\n                                    />\r\n                                </Grid>\r\n                                <Grid item xs={6}>\r\n                                    <TextField\r\n                                        margin=\"dense\"\r\n                                        onChange={fieldhandleChange}\r\n                                        id=\"lname\"\r\n                                        name=\"lname\"\r\n                                        label=\"Last Name\"\r\n                                        error={errorstate.initialerrorstate.last_name.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.last_name.errortext}\r\n                                        value={state.memberpackageDetail.lastName}\r\n                                        fullWidth={true}\r\n                                        inputProps={{ maxLength: AddPersonLastNameLength }}\r\n                                    />\r\n                                </Grid>\r\n                                <Grid item xs={12}>\r\n                                    <TextField\r\n                                        margin=\"dense\"\r\n                                        onChange={fieldhandleChange}\r\n                                        id=\"email\"\r\n                                        name=\"email\"\r\n                                        label={state.memberpackageDetail.isPrimaryMember ? 'Email' : 'Email (Optional)'}\r\n                                        type=\"email\"\r\n                                        fullWidth={true}\r\n                                        value={state.memberpackageDetail.email}\r\n                                        error={errorstate.initialerrorstate.email.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.email.errortext}\r\n                                        inputProps={{ maxLength: AddPersonEmailLength }}\r\n                                    />\r\n                                </Grid>\r\n                                <Grid item xs={12}>\r\n                                    <TextField\r\n                                        margin=\"dense\"\r\n                                        type=\"date\"\r\n                                        name=\"dob\"\r\n                                        id=\"dob\"\r\n                                        InputLabelProps={{ shrink: true }}\r\n                                        label=\"DOB (Optional)\"\r\n                                        value={state.memberpackageDetail.dob}\r\n                                        defaultValue=\"\"\r\n                                        onChange={fieldhandleChange}\r\n                                        error={errorstate.initialerrorstate.age.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.age.errortext}\r\n                                        fullWidth={true}\r\n                                        inputProps={{ maxLength: AddPersonDOBLength }}\r\n                                        onInput={(e) => onChangeInput(e)}\r\n                                    />\r\n                                </Grid>\r\n                                <Grid item xs={12} >\r\n                                    <TextField\r\n                                        margin=\"dense\"\r\n                                        id=\"phone\"\r\n                                        name=\"phone\"\r\n                                        label={PhoneNumberMandatory ? \"Phone #\" : \"Phone # (Optional)\"}\r\n                                        type=\"text\"\r\n                                        fullWidth={true}\r\n                                        onChange={fieldhandleChange}\r\n                                        value={state.memberpackageDetail.phone}\r\n                                        error={errorstate.initialerrorstate.phone.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.phone.errortext}\r\n                                        InputProps={{\r\n                                            inputComponent: TextMaskCustom\r\n                                        }}\r\n                                    />\r\n                                </Grid>\r\n                            </>\r\n\r\n                            <Grid item xs={12}>\r\n\r\n                                {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) ?\r\n\r\n                                    <FormControl className={classes.box100per} error={errorstate.initialerrorstate.country.errorstate}>\r\n\r\n                                        <Autocomplete filterOptions={filterOptions}\r\n                                            id=\"country\"\r\n                                            name=\"country\"\r\n                                            className={displayclass}\r\n                                            options={countryandstates}\r\n                                            fullWidth={true}\r\n                                            onChange={onChangeCountry}\r\n                                            autoHighlight\r\n                                            getOptionLabel={(option) => {\r\n                                                if (option.hasOwnProperty('Country')) {\r\n                                                    return option.Country;\r\n                                                }\r\n                                                return option;\r\n                                            }}\r\n                                            value={state.memberpackageDetail.country}\r\n                                            // defaultValue={countryandstates[0]}\r\n                                            renderOption={(option) => (\r\n                                                <>\r\n                                                    <img\r\n                                                        loading=\"lazy\"\r\n                                                        width=\"40\"\r\n                                                        src={`https://flagcdn.com/w40/${option.ISOCode}.png`}\r\n                                                        srcSet={`https://flagcdn.com/w80/${option.ISOCode}.png 2x`}\r\n                                                        alt=\"\"\r\n                                                        style={{ margin: \"10px\" }}\r\n                                                    />\r\n                                                    {` ${option.Country} `}</>\r\n                                            )}\r\n\r\n                                            style={{ width: \"100%\" }}\r\n                                            renderInput={(params) =>\r\n                                            (<TextField label=\"Country\" variant='outlined' className={classes.clearButton}{...params}\r\n                                            />\r\n                                            )}\r\n\r\n                                        />\r\n                                        <FormHelperText>{errorstate.initialerrorstate.country.errortext}</FormHelperText>\r\n                                    </FormControl>\r\n                                    : \"\"}\r\n\r\n                            </Grid>\r\n\r\n                            <Grid item xs={12}>\r\n                                <TextField\r\n                                    margin=\"dense\"\r\n                                    id=\"address1\"\r\n                                    name=\"address1\"\r\n                                    label=\"Address 1\"\r\n                                    type=\"text\"\r\n                                    onChange={fieldhandleChange}\r\n                                    fullWidth={true}\r\n                                    value={state.memberpackageDetail.address1}\r\n                                    className={displayclass}\r\n                                    error={errorstate.initialerrorstate.address1.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.address1.errortext}\r\n                                    inputProps={{ maxLength: AddPersonAddress1Length }}\r\n                                />\r\n                            </Grid>\r\n                            <Grid item xs={12}>\r\n                                <TextField\r\n                                    margin=\"dense\"\r\n                                    id=\"address2\"\r\n                                    name=\"address2\"\r\n                                    label=\"Address 2 (Optional)\"\r\n                                    type=\"text\"\r\n                                    fullWidth={true}\r\n                                    onChange={fieldhandleChange}\r\n                                    value={state.memberpackageDetail.address2}\r\n                                    className={displayclass}\r\n                                    inputProps={{ maxLength: AddPersonAddress2Length }}\r\n                                />\r\n                            </Grid>\r\n                            <Grid item xs={12}>\r\n                                <TextField\r\n                                    margin=\"dense\"\r\n                                    fullWidth={true}\r\n                                    id=\"city\"\r\n                                    name=\"city\"\r\n                                    label={isShowCountryFields(\"CityText\")}\r\n                                    type=\"text\"\r\n                                    onChange={fieldhandleChange}\r\n                                    value={state.memberpackageDetail.city}\r\n                                    className={displayclass}\r\n                                    error={errorstate.initialerrorstate.city.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.city.errortext}\r\n                                    inputProps={{ maxLength: AddPersonCityLength }}\r\n                                />\r\n                            </Grid>\r\n\r\n                            <Grid item xs={6} md={isShowCountryFields(\"ShowPostalCode\") ? 6 : 12}>\r\n                                {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) && isShowCountryFields(\"ShowState\") ?\r\n\r\n                                    <FormControl className={classes.box100per} error={errorstate.initialerrorstate.state.errorstate}>\r\n\r\n                                        <Autocomplete filterOptions={filterOptions}\r\n                                            id=\"state\"\r\n                                            name=\"state\"\r\n                                            className={displayclass}\r\n                                            autoHighlight\r\n                                            options={\r\n                                                state.memberpackageDetail.country ? countryandstates.filter(\r\n                                                    x => x.Country == state.memberpackageDetail.country).map(o => o.hasOwnProperty(\"Picklist\") ? o.Picklist : [])[0]\r\n                                                    : []\r\n                                            }\r\n                                            fullWidth={true}\r\n                                            onChange={onChangeState}\r\n                                            getOptionLabel={(option) => {\r\n                                                if (option.hasOwnProperty('State')) {\r\n                                                    return option.State;\r\n                                                }\r\n                                                return option;\r\n                                            }}\r\n                                            value={state.memberpackageDetail.state}\r\n                                            style={{ width: \"100%\" }}\r\n                                            renderInput={(params) =>\r\n                                            (<TextField label=\"State\" variant='outlined' className={classes.clearButton}{...params}\r\n                                            />\r\n                                            )}\r\n\r\n                                        />\r\n                                        <FormHelperText>{errorstate.initialerrorstate.state.errortext}</FormHelperText>\r\n                                    </FormControl>\r\n                                    : \"\"}\r\n                            </Grid>\r\n\r\n                            <Grid item xs={6} md={isShowCountryFields(\"ShowState\") ? 6 : 12}>\r\n\r\n                                {isShowCountryFields(\"ShowPostalCode\") ?\r\n                                    <TextField\r\n                                        fullWidth={true}\r\n                                        id=\"zipcode\"\r\n                                        name=\"zipcode\"\r\n                                        label={isShowCountryFields(\"PostalCodeName\")}\r\n                                        type=\"text\"\r\n                                        onChange={fieldhandleChange}\r\n                                        value={state.memberpackageDetail.zipcode}\r\n                                        className={displayclass}\r\n                                        error={errorstate.initialerrorstate.zipcode.errorstate}\r\n                                        helperText={errorstate.initialerrorstate.zipcode.errortext}\r\n                                        inputProps={{ maxLength: AddPersonZipCodeLength }}\r\n                                    />\r\n                                    : \"\"}\r\n                            </Grid>\r\n                        </Grid>\r\n\r\n                    </form>\r\n\r\n                    {/* Membership UDFs */}\r\n                    <Grid container xs={12} style={{ marginTop: (props.isRenewPackage === true ? '-10px' : '20px') }}>\r\n                        <Grid item lg={12} sm={12} xs={12}>\r\n                            {state.memberpackageDetail.membershipTypeID && state.memberpackageDetail.membershipTypeID > 0\r\n                                && props.membershipPackage.hasOwnProperty(\"MembershipProducts\") ? props.membershipPackage.MembershipProducts.map((membershipProduct) => {\r\n\r\n                                    return membershipProduct.MembershipTypeID && membershipProduct.MembershipTypeID === state.memberpackageDetail.membershipTypeID ?\r\n                                        <div key={membershipProduct.MembershipTypeID + \"_\" + state.memberpackageDetail.userNo}>\r\n                                            <Grid item lg={12} sm={12} xs={12} spacing={1} >\r\n                                                <MembershipUDF MembershipTypeID={membershipProduct.MembershipTypeID} userNo={state.memberpackageDetail.userNo} isEdit={state.memberpackageDetail.isEdit} />\r\n                                            </Grid>\r\n                                        </div>\r\n                                        : null\r\n                                })\r\n                                : null\r\n                            }\r\n                        </Grid>\r\n                    </Grid>\r\n\r\n                </DialogContent>\r\n                <DialogActions style={{ marginRight: \"50px\", marginBottom: \"3px\" }}>\r\n                    <Button disabled={!ValidateMembershipType() && state.memberpackageDetail.isEdit} className={classes.primarycolor} variant=\"contained\" size=\"medium\" onClick={handleClose}>\r\n                        Cancel\r\n                    </Button>\r\n                    <Button className={classes.primarycolor} disabled={saveBtn} variant=\"contained\" onClick={() => saveDialog()} size=\"medium\" >\r\n                        Save\r\n                    </Button>\r\n                </DialogActions>\r\n            </Dialog>\r\n\r\n            {/* Add/Edit Person Dialog End */}\r\n\r\n\r\n            {/* Confirmation Box Start*/}\r\n            <DialogeBox open={confirmopen.dialogBox} title=\"Delete Person\"\r\n                message={confirmopen.deletemsg}\r\n                button1text=\"Cancel\"\r\n                button1clickhandler={CancelPersonDelete}\r\n                button2text=\"Yes\"\r\n                button2clickhandler={ConfirmDeletePerson}\r\n            ></DialogeBox>\r\n            {/* Confirmation Box Start*/}\r\n\r\n        </Container >\r\n    );\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { MembershipHeader, MembershipTypes } from './components';\r\nimport { actionGetMembershipPackage } from 'actions';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Grid } from '@material-ui/core';\r\n\r\nconst { Membershipheadernewmsg, Membershipheaderrenewmsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        // padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            // marginTop: theme.spacing(5)\r\n        }\r\n    }\r\n}));\r\n\r\nconst Memberships = (props) => {\r\n\r\n    const classes = useStyles();\r\n\r\n    const constnextredirect = () => {\r\n        props.history.push({\r\n            pathname: '/checkout'\r\n        })\r\n    }\r\n\r\n    let shopcartmember = false;\r\n    let membershipPackage;\r\n    let isRenewPackage = false;\r\n    const dispatch = useDispatch();\r\n\r\n    const GetMemberShip = () => {\r\n\r\n        let membership;\r\n\r\n        if (membershippackagesreducer.membershipPackage && membershippackagesreducer.membershipPackage.MembershipPackageID == props.match.params.id) {\r\n            membership = membershippackagesreducer.membershipPackage;\r\n\r\n            if (props.match.path == \"/memberships/join/:id\") {\r\n                //original shopcartmember = false;\r\n                shopcartmember = true;\r\n\r\n            }\r\n            else {\r\n                shopcartmember = true;\r\n            }\r\n        }\r\n        else if (membershipPackages && membershipPackages.length > 0 && membershipPackages.find(x => x.MembershipPackageID == parseInt(props.match.params.id)) !== undefined) {\r\n            membership = membershipPackages.find(x => x.MembershipPackageID == props.match.params.id);\r\n            shopcartmember = true;\r\n        }\r\n        else {\r\n            membership = membershippackagesreducer.membershipPackage;\r\n            shopcartmember = false;\r\n        }\r\n\r\n        if (props.match.path == \"/memberships/renew/:id\") {\r\n            isRenewPackage = true;\r\n        }\r\n\r\n        return membership;\r\n    }\r\n\r\n\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const membershippackagesreducer = useSelector(state => state.reducerMembershipPackages);\r\n\r\n    membershipPackage = GetMemberShip();\r\n\r\n    useEffect(() => {\r\n        if (props.match.path == \"/memberships/join/:id\") {\r\n            actionGetMembershipPackage(dispatch, props.match.params.id);\r\n        }\r\n    }, []);\r\n\r\n    const GetMembershipTypes = () => {\r\n        let membershipTypesID = \"\";\r\n        if (membershipPackage && membershipPackage.MembershipProducts && membershipPackage.MembershipProducts.length > 0) {\r\n            membershipPackage.MembershipProducts.filter(x => x.MembershipType === \"Membership\").map(m => {\r\n\r\n                if (membershipTypesID.length == 0) {\r\n                    membershipTypesID += m.MembershipTypeID;\r\n                }\r\n                else {\r\n                    membershipTypesID += \",\" + m.MembershipTypeID;\r\n                }\r\n            });\r\n        }\r\n\r\n        return membershipTypesID;\r\n    }\r\n\r\n    return (\r\n\r\n        <div className={classes.root}>\r\n            <MembershipHeader membershipPackage={membershipPackage} displayMsg={isRenewPackage ? Membershipheaderrenewmsg : Membershipheadernewmsg} isRenew={isRenewPackage} />\r\n            <MembershipTypes\r\n                membershipTypeIDs={GetMembershipTypes()}\r\n                membershipPackage={membershipPackage}\r\n                shopcartmember={shopcartmember}\r\n                constnextredirect={constnextredirect}\r\n                isRenewPackage={isRenewPackage}  {...props}\r\n                membershipPackageID={parseInt(props.match.params.id)}\r\n            />\r\n\r\n\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default Memberships;\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { MembershipHeader } from './components';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { Button, Container, Grid, Link, TextField, Typography, useMediaQuery } from \"@material-ui/core\";\r\nimport { actionGetMemberValidation, actionResetMemberValidation, actionSetErrorMemberValidation, actionResetCustomer, actionGetMembershipPackages } from 'actions';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport { actionSendEmail, actionResetSendEmail } from 'actions';\r\nimport ProcessingBox from '../Checkout/components/ProcessingBox';\r\n\r\nconst { MembershipPackagesDisplayAreaNo, TitleforloadingSendLostMemberemail, Subtitle1forloadingSendLostMemberemail, Subtitle2forloadingSendLostMemberemail, PhoneOrAddress1ForMemberValidate } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n}));\r\n\r\nconst MemberValidation = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const isSmScreen = useMediaQuery(theme => theme.breakpoints.down('sm'));\r\n\r\n    const membershippackagesreducer = useSelector(state => state.reducerMembershipPackages);\r\n    let membershipPackage = membershippackagesreducer.membershipPackage;\r\n    const memberValidationReducer = useSelector(state => state.reducerMemberValidation);\r\n    const reducerLostMember = useSelector(state => state.reducerLostMember);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const reducerMembershipPackages = useSelector(state => state.reducerMembershipPackages);\r\n\r\n    const [showMainValidate, setshowMainBalidate] = React.useState(false);\r\n    const [showProgBox, setshowProgBox] = React.useState(false);\r\n    const [showMainValidateAllFields, setshowMainValidateAllFields] = React.useState(false);\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    useEffect(() => {\r\n\r\n        if (reducerMembershipPackages && reducerMembershipPackages.membershippackages && reducerMembershipPackages.membershippackages.length == 0) {\r\n            actionGetMembershipPackages(dispatch, MembershipPackagesDisplayAreaNo);\r\n        }\r\n\r\n    }, []);\r\n\r\n    if (memberValidationReducer.membervalidation && memberValidationReducer.membervalidation.MemberValidation && memberValidationReducer.membervalidation.MemberValidation[0].hasOwnProperty(\"EmailMatched\")) {\r\n\r\n        if (!memberValidationReducer.membervalidation.MemberValidation[0].EmailMatched && memberValidationReducer.membervalidation.MemberValidation[0].PhoneMatched == undefined) {\r\n            actionSetErrorMemberValidation(dispatch, 'Email does not match.');\r\n            setshowMainValidateAllFields(true);\r\n        }\r\n\r\n        if (showMainValidateAllFields) {\r\n            if ((memberValidationReducer.membervalidation.MemberValidation[0].PhoneMatched == undefined || memberValidationReducer.membervalidation.MemberValidation[0].PhoneMatched == false)\r\n                && (memberValidationReducer.membervalidation.MemberValidation[0].AddressMatched == undefined || memberValidationReducer.membervalidation.MemberValidation[0].AddressMatched == false)) {\r\n                actionSetErrorMemberValidation(dispatch, 'Phone or Address 1 does not match.');\r\n                setshowMainValidateAllFields(true);\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (reducerLostMember.emailsend || reducerLostMember.lostmemberError.length > 0) {\r\n            setshowProgBox(false);\r\n        }\r\n    }, [reducerLostMember])\r\n\r\n    useEffect(() => {\r\n        if (memberValidationReducer.membervalidation && memberValidationReducer.membervalidation.MemberValidation && validationfields.email && validationfields.email.trim().length > 0) {\r\n\r\n            props.history.push({\r\n                pathname: '/memberships',\r\n                emailaddress: validationfields.email\r\n            })\r\n        }\r\n    }, [memberValidationReducer.membervalidation]);\r\n\r\n    const [validationfields, setvalidationfields] = React.useState({\r\n        lastName: '',\r\n        email: '',\r\n        memberNo: '',\r\n        phone: '',\r\n        address1: ''\r\n    });\r\n\r\n    //Intialize States\r\n    const [errorstate, seterrorstate] = React.useState({\r\n        initialerrorstate: {\r\n            last_name: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            email: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            member_no: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            phone: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            address1: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            }\r\n        }\r\n    });\r\n\r\n    const fieldhandleChange = (event) => {\r\n\r\n        if (event.target.name === \"lname\") {\r\n            setvalidationfields({ ...validationfields, lastName: event.target.value });\r\n        }\r\n\r\n        if (event.target.name === \"email\") {\r\n            setvalidationfields({ ...validationfields, email: event.target.value });\r\n        }\r\n\r\n        if (event.target.name === \"memberno\") {\r\n            setvalidationfields({ ...validationfields, memberNo: event.target.value });\r\n        }\r\n\r\n        if (event.target.name === \"phone\") {\r\n            setvalidationfields({ ...validationfields, phone: event.target.value });\r\n        }\r\n\r\n\r\n        if (event.target.name === \"address1\") {\r\n            setvalidationfields({ ...validationfields, address1: event.target.value });\r\n        }\r\n    }\r\n\r\n\r\n    const ValidateMember = () => {\r\n\r\n        var valFields = { ...validationfields };\r\n        var initialerrstate = { ...errorstate.initialerrorstate };\r\n\r\n\r\n        if (valFields.lastName.trim().length < 1) {\r\n            initialerrstate.last_name.errorstate = true;\r\n            initialerrstate.last_name.errortext = \"Last Name is required.\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n        else {\r\n            initialerrstate.last_name.errorstate = false;\r\n            initialerrstate.last_name.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n\r\n\r\n        if (showMainValidateAllFields == false) {\r\n            if (valFields.email.trim().length < 1) {\r\n                initialerrstate.email.errorstate = true;\r\n                initialerrstate.email.errortext = \"Email is required.\";\r\n                seterrorstate({ ...errorstate, initialerrstate });\r\n            }\r\n            else {\r\n                initialerrstate.email.errorstate = false;\r\n                initialerrstate.email.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrstate });\r\n            }\r\n        }\r\n\r\n\r\n        if (valFields.memberNo.trim().length < 1) {\r\n            initialerrstate.member_no.errorstate = true;\r\n            initialerrstate.member_no.errortext = \"Member No is required.\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n        else {\r\n            initialerrstate.member_no.errorstate = false;\r\n            initialerrstate.member_no.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n\r\n        if (showMainValidateAllFields) {\r\n\r\n            if (valFields.phone.trim().length < 1 && valFields.address1.trim().length < 1) {\r\n                initialerrstate.phone.errorstate = true;\r\n                initialerrstate.phone.errortext = \"Phone No is missing.\";\r\n\r\n                initialerrstate.address1.errorstate = true;\r\n                initialerrstate.address1.errortext = \"Address 1 is missing.\";\r\n\r\n                seterrorstate({ ...errorstate, initialerrstate });\r\n            }\r\n            else {\r\n                initialerrstate.phone.errorstate = false;\r\n                initialerrstate.phone.errortext = \"\";\r\n                initialerrstate.address1.errorstate = false;\r\n                initialerrstate.address1.errortext = \"\";\r\n                seterrorstate({ ...errorstate, initialerrstate });\r\n            }\r\n\r\n\r\n            if (valFields.lastName.trim().length > 0 && valFields.memberNo.trim().length > 0 && (valFields.phone.trim().length > 0 || valFields.address1.trim().length > 0)) {\r\n                actionGetMemberValidation(dispatch, validationfields.memberNo, validationfields.lastName, '', validationfields.phone, validationfields.address1);\r\n            }\r\n        }\r\n        else {\r\n            if (valFields.lastName.trim().length > 0 && valFields.lastName.trim().length > 0 && valFields.memberNo.trim().length > 0) {\r\n                actionGetMemberValidation(dispatch, validationfields.memberNo, validationfields.lastName, validationfields.email);\r\n            }\r\n        }\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetMemberValidation(dispatch);\r\n\r\n        if (customer.customerError && customer.customerError.length) {\r\n            actionResetCustomer(dispatch);\r\n        }\r\n\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const errorcancelhandleemail = () => {\r\n        actionResetSendEmail(dispatch);\r\n    }\r\n\r\n    const ShowEmailView = () => {\r\n        setshowMainBalidate(true);\r\n        setshowMainValidateAllFields(false);\r\n    }\r\n\r\n    const ShowValidateView = () => {\r\n        setshowMainBalidate(false);\r\n        actionResetSendEmail(dispatch);\r\n\r\n        setvalidationfields({ ...validationfields, lastName: '' });\r\n        setvalidationfields({ ...validationfields, email: '' });\r\n        setvalidationfields({ ...validationfields, memberNo: '' });\r\n    }\r\n\r\n    const SendEmailToCst = () => {\r\n\r\n        var valFields = { ...validationfields };\r\n        var initialerrstate = { ...errorstate.initialerrorstate };\r\n\r\n        if (valFields.lastName.trim().length < 1) {\r\n            initialerrstate.last_name.errorstate = true;\r\n            initialerrstate.last_name.errortext = \"Last Name is required.\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n        else {\r\n            initialerrstate.last_name.errorstate = false;\r\n            initialerrstate.last_name.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n\r\n\r\n        if (valFields.email.trim().length < 1) {\r\n            initialerrstate.email.errorstate = true;\r\n            initialerrstate.email.errortext = \"Email is required.\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n        else {\r\n            initialerrstate.email.errorstate = false;\r\n            initialerrstate.email.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrstate });\r\n        }\r\n\r\n\r\n        if (valFields.lastName.trim().length > 0 && valFields.email.trim().length > 0) {\r\n            var request = [{\r\n                \"LastName\": valFields.lastName,\r\n                \"Email\": valFields.email\r\n            }]\r\n\r\n            setshowProgBox(true);\r\n            actionSendEmail(dispatch, request);\r\n        }\r\n\r\n    }\r\n\r\n    return (\r\n        <Container className={classes.root}>\r\n            {/* <div className={classes.root} style={{ width: \"80%\", margin: \"0 auto\" }} > */}\r\n            <ErrorHandling msg={memberValidationReducer.membervalidationError.length > 0 ? memberValidationReducer.membervalidationError : ''}\r\n                open={memberValidationReducer.membervalidationError.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n\r\n            <ErrorHandling msg={reducerLostMember.lostmemberError.length > 0 ? reducerLostMember.lostmemberError : ''}\r\n                open={reducerLostMember.lostmemberError.length > 0 ? true : false} handleclose={errorcancelhandleemail} />\r\n\r\n            <ErrorHandling msg={errorMsg && errorMsg.length > 0 ? errorMsg : ''}\r\n                open={errorMsg && errorMsg.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n\r\n            <MembershipHeader membershipPackage={membershipPackage} />\r\n\r\n            {\r\n                showMainValidateAllFields ?\r\n\r\n                    <div style={{ marginTop: '20px' }}>\r\n                        <Typography variant=\"subtitle2\">\r\n                            To find your existing membership, please enter following information to validate.\r\n                        </Typography>\r\n\r\n                        <Grid container spacing={1} style={{ marginTop: '10px' }}>\r\n                            <Grid item lg={6} xs={12}  >\r\n                                <TextField\r\n                                    fullWidth\r\n                                    autoFocus\r\n                                    margin=\"dense\"\r\n                                    name=\"lname\"\r\n                                    id=\"lname\"\r\n                                    label=\"Last Name\"\r\n                                    type=\"text\"\r\n                                    required\r\n                                    variant=\"outlined\"\r\n                                    onChange={fieldhandleChange}\r\n                                    value={validationfields.lastName}\r\n                                    error={errorstate.initialerrorstate.last_name.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.last_name.errortext}\r\n                                />\r\n                            </Grid>\r\n\r\n\r\n\r\n                            <Grid item lg={6} xs={12} >\r\n                                <TextField\r\n                                    fullWidth\r\n                                    margin=\"dense\"\r\n                                    name=\"memberno\"\r\n                                    id=\"memberno\"\r\n                                    label=\"Member #\"\r\n                                    type=\"text\"\r\n                                    required\r\n                                    variant=\"outlined\"\r\n                                    onChange={fieldhandleChange}\r\n                                    value={validationfields.memberNo}\r\n                                    error={errorstate.initialerrorstate.member_no.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.member_no.errortext}\r\n                                />\r\n\r\n                                <Link href=\"#\" color=\"primary\" underline=\"always\" onClick={ShowEmailView}>\r\n                                    I don't know my member #.\r\n                                </Link>\r\n                            </Grid>\r\n\r\n                            <Grid item lg={6} xs={12}  >\r\n                                <TextField\r\n                                    fullWidth\r\n                                    margin=\"dense\"\r\n                                    name=\"phone\"\r\n                                    id=\"phone\"\r\n                                    label=\"Phone #\"\r\n                                    type=\"text\"\r\n                                    value={validationfields.phone}\r\n                                    variant=\"outlined\"\r\n                                    onChange={fieldhandleChange}\r\n                                    error={errorstate.initialerrorstate.phone.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.phone.errortext}\r\n                                />\r\n                            </Grid>\r\n\r\n\r\n\r\n                            <Grid item lg={6} xs={12} >\r\n                                <TextField\r\n                                    fullWidth\r\n                                    margin=\"dense\"\r\n                                    name=\"address1\"\r\n                                    id=\"address1\"\r\n                                    label=\"Address 1\"\r\n                                    type=\"text\"\r\n                                    value={validationfields.address1}\r\n                                    variant=\"outlined\"\r\n                                    onChange={fieldhandleChange}\r\n                                    error={errorstate.initialerrorstate.address1.errorstate}\r\n                                    helperText={errorstate.initialerrorstate.address1.errortext}\r\n                                />\r\n                            </Grid>\r\n\r\n                            <Grid item lg={12} xs={12} >\r\n                                <Typography variant=\"subtitle2\" color=\"textSecondary\" align=\"center\">{PhoneOrAddress1ForMemberValidate}</Typography>\r\n                            </Grid>\r\n                            <Grid item lg={12} xs={12} align='center'>\r\n\r\n                                <Button color=\"primary\" variant=\"contained\" onClick={ValidateMember} style={{ marginTop: \"6px\", width: (isSmScreen ? '100%' : '50%') }}>\r\n                                    Find Existing Details\r\n                                </Button>\r\n\r\n                            </Grid>\r\n                        </Grid>\r\n                    </div>\r\n                    :\r\n                    <div>\r\n                        {showMainValidate ?\r\n                            <div style={{ marginTop: '20px' }}>\r\n\r\n                                <Typography variant=\"subtitle2\">\r\n                                    Can't remember your member #? Please enter your last name + email and we'll send you an email with the member number to verify and renew.\r\n                                </Typography>\r\n\r\n                                <Grid container spacing={1} >\r\n                                    <Grid item lg={4} sm={12} xs={12}  >\r\n                                        <TextField\r\n                                            fullWidth\r\n                                            autoFocus\r\n                                            margin=\"dense\"\r\n                                            name=\"lname\"\r\n                                            id=\"lname\"\r\n                                            label=\"Last Name\"\r\n                                            type=\"text\"\r\n                                            required\r\n                                            variant=\"outlined\"\r\n                                            onChange={fieldhandleChange}\r\n                                            error={errorstate.initialerrorstate.last_name.errorstate}\r\n                                            helperText={errorstate.initialerrorstate.last_name.errortext}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item lg={4} sm={12} xs={12}  >\r\n                                        <TextField\r\n                                            fullWidth\r\n                                            margin=\"dense\"\r\n                                            name=\"email\"\r\n                                            id=\"email\"\r\n                                            label=\"Email\"\r\n                                            type=\"text\"\r\n                                            required\r\n                                            variant=\"outlined\"\r\n                                            onChange={fieldhandleChange}\r\n                                            error={errorstate.initialerrorstate.email.errorstate}\r\n                                            helperText={errorstate.initialerrorstate.email.errortext}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item lg={4} xs={12} >\r\n\r\n                                        <Button fullWidth={true} color=\"primary\" variant=\"contained\" onClick={SendEmailToCst} style={{ marginTop: \"7px\" }}>\r\n                                            Send Mail\r\n                                        </Button>\r\n\r\n                                    </Grid>\r\n                                    {!reducerLostMember.emailsend ? <Grid alignItems='center' lg={4} xs={12} style={{ minHeight: 200, marginTop: (showProgBox ? 200 : -200) }}>\r\n                                        <ProcessingBox isshow={showProgBox} title={TitleforloadingSendLostMemberemail} text1={Subtitle1forloadingSendLostMemberemail} text2={Subtitle2forloadingSendLostMemberemail} ></ProcessingBox>\r\n                                    </Grid>\r\n                                        : null}\r\n\r\n                                    {reducerLostMember.emailsend ?\r\n                                        <div style={{ width: \"100%\", margin: \"0 auto\" }} >\r\n                                            <Typography variant=\"h5\" >\r\n                                                Email sent successfully!\r\n                                            </Typography>\r\n                                            <Grid item lg={12} sm={12} xs={12}>\r\n                                                <Button color=\"primary\" variant=\"contained\" size=\"large\" onClick={ShowValidateView}>\r\n                                                    Back to Renew\r\n                                                </Button>\r\n                                            </Grid>\r\n                                        </div> : null}\r\n                                </Grid>\r\n\r\n                            </div> :\r\n                            <div style={{ marginTop: '20px' }}>\r\n                                <Typography variant=\"subtitle2\">\r\n                                    To find your existing membership, please enter following information to validate.\r\n                                </Typography>\r\n\r\n                                <Grid container spacing={1} >\r\n                                    <Grid item lg={3} xs={12}  >\r\n                                        <TextField\r\n                                            fullWidth\r\n                                            autoFocus\r\n                                            margin=\"dense\"\r\n                                            name=\"lname\"\r\n                                            id=\"lname\"\r\n                                            label=\"Last Name\"\r\n                                            type=\"text\"\r\n                                            required\r\n                                            variant=\"outlined\"\r\n                                            onChange={fieldhandleChange}\r\n                                            error={errorstate.initialerrorstate.last_name.errorstate}\r\n                                            helperText={errorstate.initialerrorstate.last_name.errortext}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item lg={3} xs={12}  >\r\n                                        <TextField\r\n                                            fullWidth\r\n                                            margin=\"dense\"\r\n                                            name=\"email\"\r\n                                            id=\"email\"\r\n                                            label=\"Email\"\r\n                                            type=\"text\"\r\n                                            required\r\n                                            variant=\"outlined\"\r\n                                            onChange={fieldhandleChange}\r\n                                            error={errorstate.initialerrorstate.email.errorstate}\r\n                                            helperText={errorstate.initialerrorstate.email.errortext}\r\n                                        />\r\n                                    </Grid>\r\n\r\n                                    <Grid item lg={3} xs={12} >\r\n                                        <TextField\r\n                                            fullWidth\r\n                                            margin=\"dense\"\r\n                                            name=\"memberno\"\r\n                                            id=\"memberno\"\r\n                                            label=\"Member #\"\r\n                                            type=\"text\"\r\n                                            required\r\n                                            variant=\"outlined\"\r\n                                            onChange={fieldhandleChange}\r\n                                            error={errorstate.initialerrorstate.member_no.errorstate}\r\n                                            helperText={errorstate.initialerrorstate.member_no.errortext}\r\n                                        />\r\n\r\n                                        <Link href=\"#\" color=\"primary\" underline=\"always\" onClick={ShowEmailView}>\r\n                                            I don't know my member #.\r\n                                        </Link>\r\n                                    </Grid>\r\n\r\n                                    <Grid item lg={3} xs={12} >\r\n                                        <Button fullWidth={true} color=\"primary\" variant=\"contained\" onClick={ValidateMember} style={{ marginTop: \"6px\" }}>\r\n                                            Find Existing Details\r\n                                        </Button>\r\n                                    </Grid>\r\n                                </Grid>\r\n                            </div>\r\n                        }\r\n                    </div>\r\n            }\r\n            {/* </div > */}\r\n        </Container>\r\n    );\r\n};\r\n\r\nexport default MemberValidation;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { useSelector } from 'react-redux';\r\nimport { Typography, TableCell, IconButton, TableRow, Grid } from '@material-ui/core';\r\nimport InfoIcon from '@material-ui/icons/Info'\r\nimport { genfunction } from 'helpers'\r\n\r\nimport NumberSpinner from 'components/InputControls/NumberSpinner';\r\nconst { DisplayGATicketExpiryValidity } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    header: {\r\n        textAlign: \"center\",\r\n        padding: 10,\r\n\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    items: {\r\n        padding: 20\r\n    }\r\n}));\r\n\r\nconst GAGroupItem = props => {\r\n\r\n    const classes = useStyles();\r\n\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n\r\n    const getShopcartTicketQty = (ProductID) => {\r\n        let ticket = gatickets.find(t => t.ProductID === ProductID);\r\n        if (ticket)\r\n            return ticket.Quantity\r\n        else\r\n            return 0;\r\n    }\r\n\r\n    return (\r\n        <div>\r\n            <Typography variant=\"h5\" color=\"primary\" className={classes.header} >{props.GroupHeader}</Typography>\r\n            <div className={classes.items}>\r\n                {props.GroupItems.map(ticket => (\r\n                    <Grid container spacing={5} >\r\n                        <Grid container item xs={8}>\r\n                            <Grid item sm={1} xs={2}>\r\n                                <IconButton\r\n                                    edge=\"end\"\r\n                                    size=\"small\"\r\n                                    onClick={() => { props.InfoClickHandler(ticket.ProductID) }}\r\n                                >\r\n                                    <InfoIcon\r\n                                        color={\"primary\"}\r\n                                    />\r\n                                </IconButton>\r\n                            </Grid>\r\n                            <Grid item sm={11} xs={10}>\r\n                                <Typography variant=\"subtitle1\" color=\"textPrimary\" >{ticket.ProductName} {genfunction.ccyFormat(ticket.Price)}</Typography>\r\n                                {DisplayGATicketExpiryValidity ?\r\n                                    <Typography variant=\"caption\" color=\"textPrimary\" >{'Valid until ' + genfunction.GetEventDate(ticket.GATicketExpiryDate)}</Typography>\r\n                                    : \"\"}\r\n                                {ticket.OriginalPrice && (ticket.OriginalPrice > ticket.Price) ?\r\n                                    <div>\r\n                                        <Typography variant=\"caption\" color=\"textPrimary\" >{'You Save ' + genfunction.ccyFormat((ticket.OriginalPrice - ticket.Price))}</Typography>\r\n                                    </div>\r\n                                    : \"\"}\r\n                            </Grid>\r\n                        </Grid>\r\n                        <Grid item xs={4} align=\"right\">\r\n                            <NumberSpinner refrence={{ eventId: ticket.ProductID, tourProductID: ticket.ProductID }}\r\n                                value={parseInt(ticket.Quantity)}\r\n                                minValue={0} maxValue={ticket.MaxQuantity - getShopcartTicketQty(ticket.ProductID)} steps={1}\r\n                                changeHandler={(refrence, value) => { props.ChangeQuantityHandler(refrence, value) }}></NumberSpinner>\r\n                        </Grid>\r\n                    </Grid>\r\n                ))}\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default GAGroupItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid, Container, Link, Button, Typography, TableCell, TableRow, Table, TableBody } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers'\r\nimport * as underscore from 'underscore'\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions/actionAppLoader';\r\nimport { actionGetGATickets, actionUpdateQuantityToProduct } from 'actions';\r\nimport { actionShopCartAddGATicket } from 'actions';\r\nimport ErrorHandling from 'components/ErrorHandling/ErrorHandling';\r\nimport DialogeBox from 'components/DialogeBox/DialogeBox';\r\nimport GAGroupItem from './components/GAGroupItem'\r\nimport { Hidden } from '@material-ui/core';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\n\r\nconst { DefaultGATicketDisplayAreaNo, TicketPageHeader, OrderItemsInCartError } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    headerText: {\r\n        paddingBottom: 15,\r\n        textAlign: \"center\"\r\n    },\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    footertablecell: {\r\n        paddingRight: 0\r\n    }\r\n}));\r\n\r\nconst useQuery = () => {\r\n    return new URLSearchParams(useLocation().search);\r\n}\r\n\r\nconst GATickets = (props) => {\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [tnc, settnc] = useState({\r\n        tncOpen: false,\r\n        tncMessage: \"\",\r\n    })\r\n    const [DisplayArea, setDisplayArea] = useState(DefaultGATicketDisplayAreaNo);\r\n    const GATickets = useSelector(state => state.reducerGaTicket.GATickets);\r\n    const GATicketsError = useSelector(state => state.reducerGaTicket.GATicketsError);\r\n    const GADisplayAreas = useSelector(state => state.reducerGaTicket.GADisplayAreas);\r\n    const GACouponCode = useQuery().get(\"coupon\");\r\n\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    useEffect(() => {\r\n        if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n            giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (GATickets && GATickets.length > 0) {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    }, [GATickets])\r\n\r\n    useEffect(() => {\r\n        seterrorMsg(GATicketsError);\r\n    }, [GATicketsError])\r\n\r\n    useEffect(() => {\r\n        actionStartAppLoader(dispatch);\r\n        if (props.match.path == \"/gatickets/Area/:id\") {\r\n            var areaNo = props.match.params.id;\r\n            setDisplayArea(areaNo);\r\n            actionGetGATickets(dispatch, areaNo, GACouponCode);\r\n        }\r\n        else\r\n            actionGetGATickets(dispatch, DisplayArea, GACouponCode);\r\n    }, [])\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const settnchandler = (ProductID) => {\r\n        let ticket = GATickets.find(x => x.ProductID === ProductID);\r\n        if (ticket) {\r\n            settnc({\r\n                tncOpen: true,\r\n                tncMessage: ReactHtmlParser(genfunction.replaceEscapeCharacters(ticket.TermsConditions))\r\n            })\r\n        }\r\n        else {\r\n            settnc({\r\n                tncOpen: false,\r\n                tncMessage: \"\"\r\n            })\r\n        }\r\n    }\r\n\r\n    const changeQuantityHandler = (refrence, value) => {\r\n        actionUpdateQuantityToProduct(dispatch, refrence.tourProductID, value);\r\n    }\r\n\r\n    const getGroupedGATickets = () => {\r\n\r\n        var SellTickets = GATickets.filter(ticket => new Date().getTime() >= new Date(ticket.ProductSellStartDate).getTime() && new Date().getTime() <= new Date(ticket.ProductSellEndDate).getTime());\r\n        SellTickets = SellTickets.filter(ticket => DisplayArea == 0 || ticket.DisplayArea == DisplayArea)\r\n        let sortticket = underscore.sortBy(SellTickets, ticket => ticket.GATicketDepartments[0].DepartmentSortOrder);\r\n        let group = underscore.groupBy(sortticket, (ticket) => { return ticket.GATicketDepartments[0].DepartmentName; });\r\n        return group;\r\n    }\r\n\r\n    const getTotalAmount = () => {\r\n        let amount = {\r\n            tax: 0,\r\n            total: 0,\r\n        }\r\n\r\n        GATickets.forEach(ticket => {\r\n            amount.tax += ticket.TaxAmount;\r\n            amount.total += ticket.TotalAmount;\r\n        });\r\n\r\n        return amount;\r\n    }\r\n\r\n    const getDisplayAreaText = () => {\r\n        var DA = GADisplayAreas.find(da => da.DisplayAreaNo == DisplayArea && da.ShowOnline === true);\r\n        if (DA)\r\n            return DA.DisplayText;\r\n        else\r\n            return \"\";\r\n    }\r\n\r\n    const AddToCartHandler = () => {\r\n\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            seterrorMsg(OrderItemsInCartError);\r\n            return;\r\n        }\r\n\r\n        var tickets = GATickets.filter(ticket => ticket.Quantity > 0);\r\n        if (tickets && tickets.length > 0) {\r\n            var minQtytickets = GATickets.find(ticket => ticket.Quantity > 0 && ticket.Quantity < ticket.MinQuantity);\r\n            if (minQtytickets) {\r\n                seterrorMsg(minQtytickets.ProductName + \" (Please select at least \" + minQtytickets.MinQuantity + \" quantity)\");\r\n                return;\r\n            }\r\n            else {\r\n                let newtickets = tickets.map(ticket => ({ ...ticket, CouponCodeApplied: (ticket.OriginalPrice && ticket.Price < ticket.OriginalPrice) ? GACouponCode : null, OriginalPrice: (ticket.OriginalPrice ? ticket.OriginalPrice : ticket.Price) }))\r\n                actionShopCartAddGATicket(dispatch, newtickets);\r\n                props.history.push('/checkout');\r\n            }\r\n        }\r\n        else {\r\n            seterrorMsg(\"Please select quantity first\");\r\n        }\r\n    }\r\n\r\n    return (\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n\r\n            <Typography variant=\"h1\" component=\"h1\" color=\"primary\" className={classes.headerText}\r\n                style={{ marginTop: 0 }}>{TicketPageHeader}</Typography>\r\n\r\n\r\n            <Typography variant=\"subtitle1\" color=\"primary\" className={classes.headerText}>{ReactHtmlParser(genfunction.replaceEscapeCharacters(getDisplayAreaText()))}</Typography>\r\n            <Grid container justify=\"center\" spacing={1}>\r\n                <Grid item xs={12} md={7}>\r\n                    {underscore.map(getGroupedGATickets(), (items, key) => {\r\n                        return (\r\n                            <GAGroupItem GroupHeader={key} GroupItems={underscore.sortBy(items, \"SortOrder\")} ChangeQuantityHandler={changeQuantityHandler} InfoClickHandler={settnchandler}></GAGroupItem>\r\n                        )\r\n                    })}\r\n                </Grid>\r\n                <Grid container item xs={12} md={7}>\r\n                    <Grid item xs={6}></Grid>\r\n                    <Grid item xs={6} align=\"right\">\r\n                        <Grid>\r\n                            <Table size=\"small\" style={{ maxWidth: 150 }}>\r\n                                <TableBody>\r\n                                    <TableRow>\r\n                                        <TableCell className={classes.footertablecell}>Tax</TableCell>\r\n                                        <TableCell className={classes.footertablecell} align=\"right\">{genfunction.ccyFormat(getTotalAmount().tax)}</TableCell>\r\n                                    </TableRow>\r\n                                    <TableRow>\r\n                                        <TableCell className={classes.footertablecell}>Total</TableCell>\r\n                                        <TableCell className={classes.footertablecell} align=\"right\">{genfunction.ccyFormat(getTotalAmount().total)}</TableCell>\r\n                                    </TableRow>\r\n                                </TableBody>\r\n                            </Table>\r\n                            <Button style={{ marginTop: 10 }} color=\"primary\" variant=\"contained\" onClick={AddToCartHandler}>Add to cart</Button>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n            <DialogeBox open={tnc.tncOpen} title={\"Terms and Conditions\"}\r\n                message={tnc.tncMessage}\r\n                button1text={\"Close\"}\r\n                button1clickhandler={() => { settnchandler(0) }}>\r\n            </DialogeBox>\r\n        </Container>\r\n    );\r\n};\r\n\r\nexport default GATickets;\r\n","import React, { useEffect } from 'react';\r\nimport { Container, Grid, Typography, TextField, Button, Hidden } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { actionGetBooking, actionResetBooking } from 'actions';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport { useLocation } from \"react-router-dom\";\r\nimport {\r\n    actionShopCartSetManageMyBooking, actionShopCartApplyMemberCostrate, actionShopCartResetDonation, actionShopCartResetStateWithTourHold\r\n} from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\n\r\nconst { EmailRegex, FindMyBookingTitle, OrderItemsInCartError, InvalidFindMyBookingFieldsErrorMsg, FindBookingIDNumberNumbericOnly } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    content: {\r\n        textAlign: 'center'\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    },\r\n    boxBorder:\r\n    {\r\n        border: '4px solid ' + theme.palette.primary.main,\r\n        borderRadius: '2px'\r\n    },\r\n    itemPadding: {\r\n        padding: '15px'\r\n    },\r\n    searchButton: {\r\n        marginBottom: '10px'\r\n    },\r\n    '@global': {\r\n        '& #bookingID::-webkit-inner-spin-button': {\r\n            \"-webkit-appearance\": \"none\"\r\n        }\r\n    }\r\n}));\r\n\r\n\r\nconst FindMyBooking = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    //States Initializing Start\r\n\r\n    const [state, setState] = React.useState({\r\n        FindBooking: {\r\n            bookingID: '',\r\n            lastName: '',\r\n            email: ''\r\n        }\r\n    });\r\n\r\n    const [errorstate, seterrorstate] = React.useState({\r\n        initialerrorstate: {\r\n            bookingID: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            lastName: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            },\r\n            email: {\r\n                errorstate: false,\r\n                errortext: \"\"\r\n            }\r\n        }\r\n    });\r\n\r\n    //States Initializing End\r\n\r\n\r\n    //Error Handling Start\r\n\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    const errorcancelhandle = () => {\r\n        actionShopCartSetManageMyBooking(dispatch, false, false);\r\n        actionResetBooking(dispatch);\r\n        seterrorMsg('');\r\n    }\r\n\r\n    //Error Handling Start\r\n\r\n\r\n\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    useEffect(() => {\r\n        if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n            giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n\r\n    useEffect(() => {\r\n        if (reducerBooking.loading == true) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    })\r\n\r\n    const constnextredirect = () => {\r\n        props.history.push({\r\n            pathname: '/managebooking'\r\n        })\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        if (reducerBooking.booking !== 'nocontent' && reducerBooking.booking !== 'no-content') {\r\n            reducerBooking.booking[0] = [];\r\n        }\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n\r\n        if (reducerBooking.booking && reducerBooking.booking === \"nocontent\") {\r\n            seterrorMsg(InvalidFindMyBookingFieldsErrorMsg);\r\n            return;\r\n        }\r\n\r\n        if (reducerBooking.bookingError && reducerBooking.bookingError.length > 0) {\r\n            seterrorMsg(reducerBooking.bookingError);\r\n            return;\r\n        }\r\n\r\n        if (reducerBooking.booking && reducerBooking.booking.length > 0 && reducerBooking.booking[0].hasOwnProperty('BookingID')) {\r\n\r\n            if (reducerBooking.booking[0].hasOwnProperty('BookingEmailAddress') && reducerBooking.booking[0].hasOwnProperty('BookingSearchName')) {\r\n                if ((reducerBooking.booking[0].BookingSearchName.toLowerCase() !== state.FindBooking.lastName.toLowerCase()) &&\r\n                    (reducerBooking.booking[0].BookingEmailAddress.toLowerCase() !== state.FindBooking.email.toLowerCase())) {\r\n\r\n                    seterrorMsg('Last Name and Email does not match.');\r\n                }\r\n                else if (reducerBooking.booking[0].BookingSearchName.toLowerCase() !== state.FindBooking.lastName.toLowerCase()) {\r\n                    seterrorMsg('Last Name does not match.');\r\n                }\r\n\r\n                else if (reducerBooking.booking[0].BookingEmailAddress.toLowerCase() !== state.FindBooking.email.toLowerCase()) {\r\n                    seterrorMsg('Email does not match.');\r\n                }\r\n                else {\r\n                    actionShopCartSetManageMyBooking(dispatch, true, false);\r\n                    actionShopCartApplyMemberCostrate(dispatch, reducerBooking.booking[0].CustomerCostRateID, reducerBooking.booking[0].CustomerID, reducerBooking.booking[0].BookingEmailAddress, reducerBooking.booking[0].BookingSearchName);\r\n\r\n                    constnextredirect();\r\n                }\r\n            }\r\n            else {\r\n                seterrorMsg('Last Name and Email does not match.');\r\n                actionResetBooking(dispatch);\r\n            }\r\n        }\r\n    }, [reducerBooking]);\r\n\r\n\r\n    const useQuery = () => {\r\n        return new URLSearchParams(useLocation().search);\r\n    }\r\n\r\n    const paramBookingid = useQuery().get(\"bookingID\");\r\n    const paramName = useQuery().get(\"Name\");\r\n    const paramEmail = useQuery().get(\"Email\");\r\n\r\n    useEffect(() => {\r\n\r\n        if ((paramBookingid && paramBookingid.trim().length > 0) && (paramName && paramName.trim().length > 0) && (paramEmail && paramEmail.trim().length > 0)) {\r\n            var findBookingObj = { ...state.FindBooking };\r\n            findBookingObj.bookingID = paramBookingid;\r\n            findBookingObj.lastName = paramName;\r\n            findBookingObj.email = paramEmail;\r\n            setState({ ...state, FindBooking: findBookingObj });\r\n\r\n            actionGetBooking(dispatch, paramBookingid, paramEmail, paramName);\r\n        }\r\n    }, [])\r\n\r\n    const fieldhandleChange = (event) => {\r\n\r\n        var findBookingObj = { ...state.FindBooking };\r\n\r\n        if (event.target.name === \"bookingID\") {\r\n            findBookingObj.bookingID = event.target.value;\r\n            setState({ ...state, FindBooking: findBookingObj });\r\n        }\r\n\r\n        if (event.target.name === \"lastname\") {\r\n            findBookingObj.lastName = event.target.value;\r\n            setState({ ...state, FindBooking: findBookingObj });\r\n        }\r\n\r\n        if (event.target.name === \"email\") {\r\n            findBookingObj.email = event.target.value;\r\n            setState({ ...state, FindBooking: findBookingObj });\r\n        }\r\n\r\n    }\r\n\r\n    const searchBooking = () => {\r\n\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            seterrorMsg(OrderItemsInCartError);\r\n            return;\r\n        }\r\n\r\n        var initialerrorstate = { ...errorstate.initialerrorstate };\r\n\r\n        if (state.FindBooking.bookingID.trim().length < 1) {\r\n            initialerrorstate.bookingID.errorstate = true;\r\n            initialerrorstate.bookingID.errortext = \"Booking ID is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.bookingID.errorstate = false;\r\n            initialerrorstate.bookingID.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.FindBooking.lastName.trim().length < 1) {\r\n            initialerrorstate.lastName.errorstate = true;\r\n            initialerrorstate.lastName.errortext = \"Last Name is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else {\r\n            initialerrorstate.lastName.errorstate = false;\r\n            initialerrorstate.lastName.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.FindBooking.email.trim().length < 1) {\r\n\r\n            initialerrorstate.email.errorstate = true;\r\n            initialerrorstate.email.errortext = \"Email is required.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n        else if (state.FindBooking.email.trim().length > 0 && validateEmail(state.FindBooking.email) == false) {\r\n            initialerrorstate.email.errorstate = true;\r\n            initialerrorstate.email.errortext = \"Please enter a valid email address.\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n            return;\r\n        }\r\n        else {\r\n            initialerrorstate.email.errorstate = false;\r\n            initialerrorstate.email.errortext = \"\";\r\n            seterrorstate({ ...errorstate, initialerrorstate });\r\n        }\r\n\r\n        if (state.FindBooking.bookingID.trim().length > 0 && state.FindBooking.lastName.trim().length > 0 && state.FindBooking.email.trim().length > 0) {\r\n\r\n            if (shopcartreducer.events && shopcartreducer.events.length > 0) {\r\n                actionShopCartResetStateWithTourHold(dispatch, shopcartreducer.events);\r\n            }\r\n\r\n            if (shopcartreducer.donation && shopcartreducer.donation.length > 0) {\r\n                actionShopCartResetDonation(dispatch);\r\n            }\r\n\r\n            var findBookingObj = { ...state.FindBooking };\r\n            findBookingObj.lastName = findBookingObj.lastName.trim();\r\n            setState({ ...state, FindBooking: findBookingObj });\r\n\r\n            actionGetBooking(dispatch, state.FindBooking.bookingID, state.FindBooking.email, state.FindBooking.lastName.trim());\r\n        }\r\n    }\r\n\r\n    function validateEmail(email) {\r\n        var re = new RegExp(EmailRegex);\r\n        return re.test(String(email).toLowerCase());\r\n    }\r\n\r\n    return (\r\n        <Container className={classes.root} >\r\n            <ErrorHandling msg={errorMsg && errorMsg.length > 0 ? errorMsg : ''}\r\n                open={errorMsg && errorMsg.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n            <Grid\r\n                container\r\n                alignContent=\"center\"\r\n                className={classes.boxBorder}\r\n                align=\"center\"\r\n                xs={12} md={6}\r\n                justify=\"center\"\r\n                style={{ margin: \"0px auto\" }}\r\n            >\r\n                <Grid item xs={12} md={12}>\r\n                    <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\">\r\n                        {FindMyBookingTitle}\r\n                    </Typography>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={12} className={classes.itemPadding}>\r\n                    <TextField\r\n                        margin=\"dense\"\r\n                        name=\"bookingID\"\r\n                        id=\"bookingID\"\r\n                        label=\"Booking ID\"\r\n                        onKeyDown={e => (e.keyCode === 189 || e.keyCode === 109) ? e.preventDefault() : null}\r\n                        type={FindBookingIDNumberNumbericOnly ? \"number\" : \"text\"}\r\n                        fullWidth={true}\r\n                        value={state.FindBooking.bookingID}\r\n                        onChange={fieldhandleChange}\r\n                        error={errorstate.initialerrorstate.bookingID.errorstate}\r\n                        helperText={errorstate.initialerrorstate.bookingID.errortext}\r\n                    />\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={12} className={classes.itemPadding}>\r\n                    <TextField\r\n                        margin=\"dense\"\r\n                        name=\"lastname\"\r\n                        id=\"lastname\"\r\n                        label=\"Last Name\"\r\n                        fullWidth={true}\r\n                        value={state.FindBooking.lastName}\r\n                        onChange={fieldhandleChange}\r\n                        error={errorstate.initialerrorstate.lastName.errorstate}\r\n                        helperText={errorstate.initialerrorstate.lastName.errortext}\r\n                    />\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={12} className={classes.itemPadding}>\r\n                    <TextField\r\n                        margin=\"dense\"\r\n                        name=\"email\"\r\n                        id=\"email\"\r\n                        label=\"Email\"\r\n                        fullWidth={true}\r\n                        value={state.FindBooking.email}\r\n                        onChange={fieldhandleChange}\r\n                        error={errorstate.initialerrorstate.email.errorstate}\r\n                        helperText={errorstate.initialerrorstate.email.errortext}\r\n                    />\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={12} align=\"center\" className={classes.searchButton}>\r\n                    <Button className={classes.primarycolor} variant=\"contained\" onClick={() => searchBooking()} size=\"large\">\r\n                        Search\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        </Container>\r\n    );\r\n};\r\n\r\nexport default FindMyBooking;\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Container, Grid, Typography, Hidden } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport DataAccess from '../../api/constants';\r\nimport Moment from 'moment';\r\nimport { genfunction } from '../../helpers';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { actionShopCartSetManageMyBooking, actionShopCartSetRefundType, actionShopCartSetMmbAmountToPay, actionShopCartResetMembership, actionGetTransactionFee, actionShopCartResetIDME, actionShopCartSetEnteredAmountToPay } from 'actions';\r\nimport { actionGetBookingTypes, actionResetBookingTypes } from 'actions';\r\nimport { actionGetExtraItems, actionResetExtraItems } from 'actions';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport { actionResetBooking } from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\n\r\nconst { ShowReadableBarcode, TransactionFeeProductID, ApplyTransactionFee } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        padding: \"5px\"\r\n    },\r\n    image: {\r\n        border: \"5px solid white\",\r\n        padding: '10px',\r\n        align: 'center'\r\n    },\r\n    warningMsg: {\r\n        color: 'Red'\r\n    },\r\n    AdjustContext: {\r\n        padding: '12px'\r\n    },\r\n    hideBtn: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst ManageMyBooking = (props) => {\r\n\r\n    const dispatch = useDispatch();\r\n\r\n    //States Initializing Start\r\n\r\n    const [open, setOpen] = React.useState(false);\r\n    const [openPaymentmethod, setOpenPaymentMethod] = React.useState(false);\r\n\r\n    //States Initializing End\r\n\r\n\r\n    //Set States  Start\r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n    };\r\n\r\n\r\n    const handleClickOpenPaymentMethod = () => {\r\n        setOpenPaymentMethod(true);\r\n    };\r\n\r\n    const handleClosePaymentMethod = () => {\r\n        setOpenPaymentMethod(false);\r\n    };\r\n\r\n    //Set States  End\r\n\r\n    const classes = useStyles();\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    const displayAreasState = useSelector(state => state.reducerDisplayAreas);\r\n    const tourEvents = useSelector(state => state.reducerExtraItems);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    window.history.pushState({ name: \"browserBack\" }, \"on browser back click\", window.location.href);\r\n\r\n    useEffect(() => {\r\n        if (tourEvents.loading == true) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    })\r\n\r\n    useEffect(() => {\r\n        if (ApplyTransactionFee && TransactionFeeProductID > 0) {\r\n            actionGetTransactionFee(dispatch, TransactionFeeProductID, 'transactionfee');\r\n        }\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (bookingTypes.bookingTypesError && bookingTypes.bookingTypesError.length > 0) {\r\n            seterrorMsg(bookingTypes.bookingTypesError);\r\n        }\r\n    }, [bookingTypes]);\r\n\r\n    useEffect(() => {\r\n        if (tourEvents.extramItemsError && tourEvents.extramItemsError.length > 0) {\r\n            seterrorMsg(tourEvents.extramItemsError);\r\n        }\r\n    }, [tourEvents]);\r\n\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg('');\r\n        if (tourEvents.extramItemsError && tourEvents.extramItemsError.length > 0) {\r\n            actionResetExtraItems(dispatch);\r\n        }\r\n\r\n        if (bookingTypes.bookingTypesError && bookingTypes.bookingTypesError.length > 0) {\r\n            actionResetBookingTypes(dispatch);\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        let displayareaNo = reducerBooking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingTypeDisplayArea') ? reducerBooking.booking[0].BookingTypeDisplayArea : 0;\r\n\r\n        if (reducerBooking && reducerBooking.booking[0]) {\r\n\r\n            if (reducerBooking.booking[0].AllowDateTimeChanges && !reducerBooking.booking[0].AllowDateTimeChangesWithinArea) {\r\n\r\n                if (bookingTypes && bookingTypes.bookingTypes && bookingTypes.bookingTypes.length >= 0 && bookingTypes.bookingTypes.filter(x => x.BookingTypeID === reducerBooking.booking[0].BookingTypeID).length < 1) {\r\n                    actionGetBookingTypes(dispatch, reducerBooking.booking[0].BookingTypeID, false);\r\n                }\r\n            }\r\n            else if (reducerBooking.booking[0].hasOwnProperty('AllowDateTimeChangesWithinArea') && reducerBooking.booking[0].AllowDateTimeChangesWithinArea) {\r\n                actionGetBookingTypes(dispatch, displayareaNo, true);\r\n            }\r\n        }\r\n\r\n    }, [reducerBooking]);\r\n\r\n    useEffect(() => {\r\n        let startFilterDate = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0].EventStartDateTime : '';\r\n        let bookingID = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0].BookingTypeID : 0;\r\n        startFilterDate = Moment(startFilterDate).format('YYYY-MM-DD');\r\n\r\n        if (reducerBooking && reducerBooking.booking[0]) {\r\n            if (reducerBooking.booking[0].AllowDateTimeChanges && !reducerBooking.booking[0].AllowDateTimeChangesWithinArea) {\r\n                actionGetExtraItems(dispatch, bookingID, true, false, startFilterDate, null, \"SingleDay\");\r\n            }\r\n        }\r\n\r\n    }, [bookingTypes.bookingTypes]);\r\n\r\n\r\n    useEffect(() => {\r\n        let startFilterDate = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0].EventStartDateTime : '';\r\n        startFilterDate = Moment(startFilterDate).format('YYYY-MM-DD');\r\n\r\n        if (reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('AllowDateTimeChangesWithinArea') && reducerBooking.booking[0].AllowDateTimeChangesWithinArea) {\r\n\r\n            let displayareaNo = reducerBooking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingTypeDisplayArea') ? reducerBooking.booking[0].BookingTypeDisplayArea : 0;\r\n\r\n            if (displayAreasState.displayAreas !== undefined && displayAreasState.displayAreas.length > 0) {\r\n                actionGetExtraItems(dispatch, displayareaNo, true, true, startFilterDate, null, \"SingleDay\");\r\n            }\r\n            else {\r\n                actionGetExtraItems(dispatch, displayareaNo, true, true, startFilterDate, null, \"SingleDay\");\r\n            }\r\n        }\r\n\r\n    }, [displayAreasState.displayAreas]);\r\n\r\n\r\n\r\n    const ConstRedirectCHangeDateTime = (booking) => {\r\n\r\n        if (booking) {\r\n            if (booking.AllowDateTimeChanges && booking.AllowDateTimeChangesWithinArea === false) {\r\n                props.history.push({\r\n                    pathname: '/calendar/' + booking.BookingTypeID\r\n                })\r\n            }\r\n            if (booking.hasOwnProperty('BookingTypeDisplayArea') && booking.AllowDateTimeChanges && booking.AllowDateTimeChangesWithinArea) {\r\n                props.history.push({\r\n                    pathname: '/calendar/Area/' + booking.BookingTypeDisplayArea\r\n                })\r\n            }\r\n        }\r\n    }\r\n\r\n    const ConstRedirectModifyTickets = () => {\r\n\r\n        if (reducerBooking.booking[0] && reducerBooking.booking[0].TourEventID) {\r\n            props.history.push({\r\n                pathname: '/modifytickets',\r\n                toureventID: reducerBooking.booking[0].TourEventID\r\n            })\r\n        }\r\n    }\r\n\r\n    const CancelBooking = () => {\r\n\r\n        if (totalpayments() === 0) {\r\n            //actionShopCartSetRefundType(dispatch, \"CancelBooking\");\r\n            applyrefund('CancelBooking');\r\n\r\n        }\r\n        else if (reducerBooking.booking[0]) {\r\n            handleClickOpenPaymentMethod();\r\n        }\r\n    }\r\n\r\n    const constredirecttofindmybpooking = () => {\r\n\r\n        actionResetBooking(dispatch);\r\n        actionShopCartSetManageMyBooking(dispatch, false, false);\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n\r\n    }\r\n\r\n    const redirecttofindmybpooking = () => {\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n    const reditecttocheckout = () => {\r\n\r\n        let BalanceOwe = reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0 ? reducerBooking.booking[0].BalanceOwing : 0;\r\n\r\n        if (BalanceOwe > 0) {\r\n            actionShopCartSetRefundType(dispatch, \"AdditionalPayment\");\r\n\r\n            BalanceOwe = addTransFeeWithBalance(BalanceOwe);\r\n\r\n            actionShopCartSetMmbAmountToPay(dispatch, BalanceOwe);\r\n\r\n            props.history.push({\r\n                pathname: '/managecheckout',\r\n                refundType: 'AdditionalPayment'\r\n            })\r\n        }\r\n    }\r\n\r\n    const addTransFeeWithBalance = (balanceOwe) => {\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], balanceOwe, cashlesstotal)\r\n\r\n                if (transFee > 0) {\r\n                    actionShopCartSetEnteredAmountToPay(dispatch, balanceOwe);\r\n                    return genfunction.Rounded(balanceOwe + transFee);\r\n                }\r\n            }\r\n        }\r\n        return balanceOwe;\r\n    }\r\n\r\n    const totalpaid = () => {\r\n        let total = 0;\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingPayments') && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            total = reducerBooking.booking[0].BookingPayments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const totalpayments = () => {\r\n        let total = 0;\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingPayments') && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            total = reducerBooking.booking[0].BookingPayments.length;\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const applyrefund = (type) => {\r\n\r\n        actionShopCartSetMmbAmountToPay(dispatch, - totalpaid());\r\n        actionShopCartSetRefundType(dispatch, type);\r\n\r\n        props.history.push({\r\n            pathname: '/managecheckout',\r\n            refundType: type\r\n        })\r\n    }\r\n\r\n    const eligibletxtReturnClass = () => {\r\n        let eligibleTxt = \"\";\r\n        if (reducerBooking.booking[0]) {\r\n            if (reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].AllowRefundToGiftcardOnly) {\r\n\r\n                if (reducerBooking.booking[0].hasOwnProperty('PaymentToken')) {\r\n                    eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0) + \" to a gift card or card on file \" + (reducerBooking.booking[0].PaymentDescription !== undefined ? reducerBooking.booking[0].PaymentDescription : '');\r\n                }\r\n                else {\r\n                    eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0) + \" to a gift card.\";\r\n                }\r\n            }\r\n            else if (reducerBooking.booking[0].AllowRefundToGiftcardOnly && reducerBooking.booking[0].AllowRefunds == false) {\r\n                eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0) + \" to a gift card.\";\r\n            }\r\n            else if (reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken')) {\r\n                eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0) + \" through card on file \" + (reducerBooking.booking[0].PaymentDescription !== undefined ? reducerBooking.booking[0].PaymentDescription : '');\r\n            }\r\n            else if (reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds || reducerBooking.booking[0].AllowRefundToGiftcardOnly) && totalpayments() > 1) {\r\n                eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0) + \" to a gift card.\";\r\n            }\r\n            return eligibleTxt;\r\n        }\r\n    }\r\n\r\n    const totalbookingcost = () => {\r\n        let total = 0;\r\n        if (reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingProducts') && reducerBooking.booking[0].BookingProducts.length > 0) {\r\n            total = reducerBooking.booking[0].BookingProducts.map(({ ProductLinePriceInclTax }) => ProductLinePriceInclTax).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const CancelGCRefund = () => {\r\n        applyrefund('CancelGiftCardRefund');\r\n        //actionShopCartSetRefundType(dispatch, \"CancelGiftCardRefund\");\r\n    }\r\n\r\n\r\n    return (\r\n\r\n        //Desktop and Laptop (smDown)\r\n        //Tablet (xsDown mdUp)\r\n        //Mobile (smUp)\r\n\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errorMsg && errorMsg.length > 0 ? errorMsg : ''}\r\n                open={errorMsg && errorMsg.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n\r\n            <Grid container justify=\"center\" spacing={1} className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? '' : classes.hideBtn}>\r\n                <Grid item xs={12} md={7} >\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\">\r\n                            {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\">\r\n                            {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\">\r\n                            {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\">\r\n                        <img className={classes.image}\r\n                            alt=\"Logo\"\r\n                            src={DataAccess.apiUrl + 'Barcode/?barcode=\\\\' + (reducerBooking.booking[0] ? reducerBooking.booking[0].BookingID : '') + \"&includeLable=\" + ShowReadableBarcode} />\r\n\r\n                        <Typography variant=\"h5\" className={classes.warningMsg}>\r\n                            {reducerBooking.booking[0] ? reducerBooking.booking[0].NoChangesMessage : ''}\r\n                        </Typography>\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }} >\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Booking Details\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Booking Details\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Booking Details\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Confirmation Number : {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingID : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Confirmation Number : {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingID : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Confirmation Number : {reducerBooking.booking[0] ? reducerBooking.booking[0].BookingID : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Name : {reducerBooking.booking[0] ? reducerBooking.booking[0].CustomerName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Name : {reducerBooking.booking[0] ? reducerBooking.booking[0].CustomerName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Name : {reducerBooking.booking[0] ? reducerBooking.booking[0].CustomerName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Date : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('MMM D, YYYY') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Date : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('MMM D, YYYY') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Date : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('MMM D, YYYY') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Start Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Start Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Start Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventStartDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            End Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventEndDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            End Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventEndDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            End Time : {reducerBooking.booking[0] ? Moment(reducerBooking.booking[0].EventEndDateTime).format('hh:mm a') : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\" style={{ padding: \"12px\" }}>\r\n\r\n                        <Hidden smDown>\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                className={reducerBooking.booking[0]\r\n                                    && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowRefunds\r\n                                    && totalpaid() !== 0\r\n                                    || (reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].hasOwnProperty('BalanceOwing')\r\n                                        && reducerBooking.booking[0].BalanceOwing > 0)\r\n                                    ? classes.hideBtn : ''}\r\n                                style={{ padding: \"12px\", marginTop: 0 }} onClick={handleClickOpen}>\r\n                                Cancel Booking\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 0 }}\r\n                                onClick={() => ConstRedirectCHangeDateTime(reducerBooking.booking[0])}\r\n                                className={reducerBooking.booking[0]\r\n                                    && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowDateTimeChanges ? classes.hideBtn : ''}  >\r\n                                Change Date/Time\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                className={reducerBooking.booking[0]\r\n                                    && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowRefunds\r\n                                    && totalpaid() !== 0\r\n                                    || (reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].hasOwnProperty('BalanceOwing')\r\n                                        && reducerBooking.booking[0].BalanceOwing > 0)\r\n                                    ? classes.hideBtn : ''}\r\n                                style={{ padding: \"12px\", marginTop: 10 }} onClick={handleClickOpen}>\r\n                                Cancel Booking\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 10 }}\r\n                                onClick={() => ConstRedirectCHangeDateTime(reducerBooking.booking[0])}\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowDateTimeChanges ? classes.hideBtn : ''}  >\r\n                                Change Date/Time\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowRefunds\r\n                                    && totalpaid() !== 0\r\n                                    || (reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0)\r\n                                    ? classes.hideBtn : ''}\r\n                                style={{ padding: \"12px\", marginTop: 10 }} onClick={handleClickOpen}>\r\n                                Cancel Booking\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 10 }}\r\n                                onClick={() => ConstRedirectCHangeDateTime(reducerBooking.booking[0])}\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined\r\n                                    && !reducerBooking.booking[0].AllowDateTimeChanges ? classes.hideBtn : ''}  >\r\n                                Change Date/Time\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Dialog\r\n                            open={open}\r\n                            onClose={handleClose}\r\n                            aria-labelledby=\"alert-dialog-title\"\r\n                            aria-describedby=\"alert-dialog-description\"\r\n                            disableEscapeKeyDown={true}\r\n                            disableBackdropClick={true}\r\n                        >\r\n                            <DialogTitle id=\"alert-dialog-title\">{\"Cancel Booking?\"}</DialogTitle>\r\n                            <DialogContent>\r\n                                <DialogContentText id=\"alert-dialog-description\">\r\n\r\n                                    <Hidden smDown>\r\n                                        <Typography align=\"center\" variant=\"h5\" style={{ padding: \"5px\" }}>\r\n                                            Are you sure you want to cancel Booking ID {reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined ? reducerBooking.booking[0].BookingID : ''}?\r\n                                        </Typography>\r\n                                    </Hidden>\r\n                                    <Hidden xsDown mdUp>\r\n                                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"5px\" }}>\r\n                                            Are you sure you want to cancel Booking ID {reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined ? reducerBooking.booking[0].BookingID : ''}?\r\n                                        </Typography>\r\n                                    </Hidden>\r\n                                    <Hidden smUp>\r\n                                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"5px\" }}>\r\n                                            Are you sure you want to cancel Booking ID {reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined ? reducerBooking.booking[0].BookingID : ''}?\r\n                                        </Typography>\r\n                                    </Hidden>\r\n\r\n                                </DialogContentText>\r\n                            </DialogContent>\r\n                            <DialogActions>\r\n                                <Hidden smDown>\r\n                                    <Button onClick={handleClose} variant=\"outlined\" size=\"medium\" color=\"primary\">\r\n                                        Go Back\r\n                                    </Button>\r\n                                    <Button onClick={CancelBooking} variant=\"contained\" size=\"medium\" color=\"primary\" autoFocus>\r\n                                        Cancel Entire Booking\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n\r\n                                    <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                                        Go Back\r\n                                    </Button>\r\n                                    <Button onClick={CancelBooking} variant=\"contained\" size=\"small\" color=\"primary\" autoFocus>\r\n                                        Cancel Entire Booking\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n\r\n                                    <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                                        Go Back\r\n                                    </Button>\r\n                                    <Button onClick={CancelBooking} variant=\"contained\" size=\"small\" color=\"primary\" autoFocus>\r\n                                        Cancel Entire Booking\r\n                                    </Button>\r\n                                </Hidden>\r\n\r\n                            </DialogActions>\r\n                        </Dialog>\r\n\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingProducts') && reducerBooking.booking[0].BookingProducts ?\r\n\r\n                        reducerBooking.booking[0].BookingProducts.filter(x => x.AffectsCapacity).map(prod => (\r\n\r\n                            <>\r\n\r\n                                <Hidden smDown>\r\n                                    <Typography variant=\"h5\" style={{ padding: \"15px\", marginLeft: \"10px\" }} key={prod.TourProductID}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n                                    <Typography variant=\"h6\" style={{ padding: \"15px\", marginLeft: \"10px\" }} key={prod.TourProductID}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n                                    <Typography variant=\"h6\" style={{ padding: \"15px\", marginLeft: \"10px\" }} key={prod.TourProductID}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n                            </>\r\n                        ))\r\n\r\n                        : ''}\r\n\r\n                    {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingProducts') && reducerBooking.booking[0].BookingProducts.filter(x => x.AffectsCapacity === false).length > 0 ?\r\n                        <>\r\n                            <Hidden smDown>\r\n                                <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                                    Add Ons\r\n                                </Typography>\r\n                            </Hidden>\r\n\r\n                            <Hidden xsDown mdUp>\r\n                                <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                                    Add Ons\r\n                                </Typography>\r\n                            </Hidden>\r\n\r\n                            <Hidden smUp>\r\n                                <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                                    Add Ons\r\n                                </Typography>\r\n                            </Hidden>\r\n\r\n                        </>\r\n                        : null}\r\n\r\n                    {reducerBooking.booking[0] && reducerBooking.booking[0].BookingProducts ?\r\n\r\n                        reducerBooking.booking[0].BookingProducts.filter(x => x.AffectsCapacity === false).map(prod => (\r\n\r\n                            <>\r\n\r\n                                <Hidden smDown>\r\n                                    <Typography variant=\"h5\" style={{ padding: \"15px\", marginLeft: \"10px\" }}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden xsDown mdUp>\r\n                                    <Typography variant=\"h6\" style={{ padding: \"15px\", marginLeft: \"10px\" }}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                                <Hidden smUp>\r\n                                    <Typography variant=\"h6\" style={{ padding: \"15px\", marginLeft: \"10px\" }}>\r\n                                        {prod.Quantity} x {prod.TourProductName} {\"   \"}  {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                    </Typography>\r\n                                </Hidden>\r\n\r\n                            </>\r\n\r\n                        ))\r\n\r\n                        : ''}\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\">\r\n\r\n                        <Hidden smDown>\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\" style={{ padding: \"12px\" }}\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].AllowTicketChanges ? '' : classes.hideBtn}\r\n                                onClick={() => ConstRedirectModifyTickets()}>\r\n                                Modify Tickets & Add  Ons\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\" style={{ padding: \"12px\" }}\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].AllowTicketChanges ? '' : classes.hideBtn}\r\n                                onClick={() => ConstRedirectModifyTickets()}>\r\n                                Modify Tickets & Add  Ons\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\" style={{ padding: \"12px\" }}\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].AllowTicketChanges ? '' : classes.hideBtn}\r\n                                onClick={() => ConstRedirectModifyTickets()}>\r\n                                Modify Tickets & Add  Ons\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                    </Grid>\r\n\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }} >\r\n\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Payment\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Payment\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Payment\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Status : {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0 ? 'Unpaid' : 'Paid'}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Status : {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0 ? 'Unpaid' : 'Paid'}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Status : {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0 ? 'Unpaid' : 'Paid'}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                            Total Paid : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Total Paid : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                            Total Paid : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n\r\n                    {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BalanceOwing') && reducerBooking.booking[0].BalanceOwing > 0 ?\r\n                        <>\r\n                            <Hidden smDown>\r\n                                <Typography variant=\"h5\" className={classes.AdjustContext}>\r\n                                    Balance Owing : {genfunction.ccyFormat(reducerBooking.booking[0].BalanceOwing)}\r\n                                </Typography>\r\n                            </Hidden>\r\n\r\n                            <Hidden xsDown mdUp>\r\n                                <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                                    Balance Owing : {genfunction.ccyFormat(reducerBooking.booking[0].BalanceOwing)}\r\n                                </Typography>\r\n                            </Hidden>\r\n\r\n                            <Hidden smUp>\r\n                                <Typography variant=\"h6\" className={classes.AdjustContext}>\r\n                                    Balance Owing : {genfunction.ccyFormat(reducerBooking.booking[0].BalanceOwing)}\r\n                                </Typography>\r\n                            </Hidden>\r\n                        </>\r\n\r\n                        : null}\r\n\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\">\r\n                        <Hidden smDown>\r\n                            <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].BalanceOwing > 0 ? '' : classes.hideBtn}\r\n                                style={{ marginLeft: \"10px\", padding: \"12px\" }}\r\n                                onClick={() => reditecttocheckout()}>\r\n                                Make Payment\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Button variant=\"outlined\" size=\"small\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].BalanceOwing > 0 ? '' : classes.hideBtn}\r\n                                style={{ marginLeft: \"10px\", padding: \"12px\" }}\r\n                                onClick={() => reditecttocheckout()}>\r\n                                Make Payment\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Button variant=\"outlined\" size=\"small\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                className={reducerBooking.booking[0] && reducerBooking.booking[0] !== undefined && reducerBooking.booking[0].BalanceOwing > 0 ? '' : classes.hideBtn}\r\n                                style={{ marginLeft: \"10px\", padding: \"12px\" }}\r\n                                onClick={() => reditecttocheckout()}>\r\n                                Make Payment\r\n                            </Button>\r\n                        </Hidden>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n\r\n            <Dialog\r\n                open={openPaymentmethod}\r\n                onClose={handleClosePaymentMethod}\r\n                aria-labelledby=\"alert-dialog-title\"\r\n                aria-describedby=\"alert-dialog-description\"\r\n                disableEscapeKeyDown={true}\r\n                disableBackdropClick={true}\r\n            >\r\n                <DialogTitle id=\"alert-dialog-title\">{\"Refund Transaction\"}</DialogTitle>\r\n                <DialogContent>\r\n                    <DialogContentText id=\"alert-dialog-description\">\r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                                {eligibletxtReturnClass()}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                                {eligibletxtReturnClass()}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                                {eligibletxtReturnClass()}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                    </DialogContentText>\r\n                </DialogContent>\r\n                <DialogActions>\r\n                    <Hidden smDown>\r\n                        <Button onClick={handleClosePaymentMethod} variant=\"outlined\" size=\"medium\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('CancelBooking')}\r\n                            variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken')) ? '' : classes.hideBtn}  >\r\n                            Refund to Credit Card\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => CancelGCRefund()}\r\n                            variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n                            Refund to Gift Card\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Button onClick={handleClosePaymentMethod} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('CancelBooking')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken')) ? '' : classes.hideBtn}  >\r\n                            Refund to Credit Card\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => CancelGCRefund()}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n                            Refund to Gift Card\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Button onClick={handleClosePaymentMethod} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('CancelBooking')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken')) ? '' : classes.hideBtn}  >\r\n                            Refund to Credit Card\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => CancelGCRefund()}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n                            Refund to Gift Card\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                </DialogActions>\r\n            </Dialog>\r\n\r\n            <Grid container justify=\"center\" style={{ minHeight: '10vh', marginTop: 30 }} spacing={1} className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? classes.hideBtn : ''}>\r\n                <Typography variant=\"h4\" className={classes.AdjustContext}>\r\n                    Please go to find my booking page to Update Booking.\r\n                </Typography>\r\n                <Grid item xs={12} md={12} align=\"center\">\r\n\r\n                    <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                        onClick={() => redirecttofindmybpooking()}>\r\n                        Manage My Booking\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        </Container >\r\n    );\r\n};\r\n\r\nexport default ManageMyBooking;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\nimport { Typography, Grid, Container, Button, Hidden, IconButton, TextField, Table, TableBody, TableCell, TableRow } from '@material-ui/core';\r\nimport ExtraItemsProducts from '../../components/CalendarControls/ExtraItemsProducts';\r\nimport { genfunction } from '../../helpers';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    actionShopCartAddEventWithTourHold, actionShopCartSetManageMyBooking,\r\n    actionShopCartResetStateWithTourHold, actionShopCartResetStateWithUniqueCouponHold, actionRemoveCoupon,\r\n    actionShopCartSetMmbAmountToPay, actionShopCartSetRefundType, actionShopCartSetEnteredAmountToPay\r\n} from 'actions';\r\nimport { actionResetBooking } from 'actions';\r\nimport { actionResetExtraItems } from 'actions';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { actionGetCoupon, actionResetCoupon, actionEndCouponLoading } from 'actions';\r\nimport { actionResetUniqueCouponCardHoldState } from 'actions';\r\nimport { actionResetCouponAlreadyApplied, actionShopCartRemoveCoupons, actionShopCartResetError, actionShopCartResetMembership, actionShopCartResetIDME } from 'actions';\r\nimport { actionDeleteUniqueCoupon } from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\n\r\nconst { DefaultCostRateID, ChangeDateTimeHeading, RefundCreditCardButton, RefundGiftCardButton } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    },\r\n    diplaynone: {\r\n        display: \"none\"\r\n    },\r\n    hideBtn: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst ConfimBookingChanges = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const bookingreducer = useSelector(state => state.reducerBooking);\r\n    const newExtraItem = useSelector(state => state.reducerExtraItems.extraItem);\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n    const reducerCoupon = useSelector(state => state.reducerCoupon);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    let bookingID = bookingreducer && bookingreducer.booking[0] ? bookingreducer.booking[0].BookingTypeID : 0;\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == bookingID)[0] : null;\r\n    const uniqueCouponHolds = useSelector(state => state.reducerUniqueCouponHolds);\r\n\r\n    let amountaftercoupon = genfunction.subproducttotal(cartEvents, null, null, null, null, null, null, [], []);\r\n\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n    const managemybkng = useSelector(state => state.reducerShopCart.managemybooking);\r\n\r\n    //States Initializing Start\r\n\r\n    const [couponNo, setcouponNo] = useState(\"\");\r\n    const [errormsg, seterrormsg] = useState(\"\");\r\n    const [open, setOpen] = React.useState(false);\r\n    const [isredirectclicked, setisredirectclicked] = useState(false);\r\n\r\n    //States Initializing End\r\n\r\n\r\n    //Set States Start\r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n    };\r\n\r\n    useEffect(() => {\r\n        if (reducerCoupon.loading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [reducerCoupon.loading]);\r\n\r\n    useEffect(() => {\r\n        if (reducerCoupon.couponError !== undefined && reducerCoupon.couponError.length > 0) {\r\n            seterrormsg(reducerCoupon.couponError);\r\n\r\n            if (cartEvents && cartEvents.length > 0) {\r\n                actionShopCartResetStateWithTourHold(dispatch, cartEvents);\r\n                actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n            }\r\n        }\r\n    }, [reducerCoupon.couponError]);\r\n\r\n    //Set States End\r\n\r\n    useEffect(() => {\r\n        if (cartEvents && cartEvents.length > 0 && shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length < 1) {\r\n            actionShopCartResetStateWithTourHold(dispatch, cartEvents);\r\n            actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n        }\r\n    }, [shopcartreducer.tourCoupons])\r\n\r\n    useEffect(() => {\r\n        actionShopCartSetManageMyBooking(dispatch, true, false);\r\n    }, [managemybkng === false])\r\n\r\n\r\n    const CouponsTotal = () => {\r\n        let total = 0;\r\n\r\n        if (cartEvents && cartEvents.length > 0) {\r\n            cartEvents.map(x => {\r\n                x.CouponItems.map(e => {\r\n                    total += e.TotalAmount;\r\n                });\r\n            })\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const AmountToPay = () => {\r\n\r\n        let previouspaid = totalpaid();\r\n\r\n        if (cartEvents && cartEvents.length > 0) {\r\n            return amountaftercoupon - previouspaid;\r\n        }\r\n\r\n        if (newExtraItem && newExtraItem.TotalAmount) {\r\n            return newExtraItem.TotalAmount - previouspaid;\r\n        }\r\n        return 0;\r\n    }\r\n\r\n\r\n    const constredirecttofindmybpooking = () => {\r\n\r\n        actionResetBooking(dispatch);\r\n        actionResetExtraItems(dispatch);\r\n        actionShopCartSetManageMyBooking(dispatch, false, false);\r\n        actionResetCoupon(dispatch);\r\n        actionShopCartRemoveCoupons(dispatch);\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n\r\n        if ((cartEvents && cartEvents.length > 0) || (shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length > 0)) {\r\n            actionShopCartResetStateWithTourHold(dispatch, cartEvents);\r\n            actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n        }\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        let BalanceOwe = AmountToPay();\r\n\r\n        if (isredirectclicked && shopcartreducer.error.length < 1 && shopcartreducer.events && shopcartreducer.events.length > 0 && BalanceOwe > -1) {\r\n            BalanceOwe = addTransFeeWithBalance(BalanceOwe);\r\n\r\n            actionShopCartSetMmbAmountToPay(dispatch, BalanceOwe);\r\n            setisredirectclicked(false);\r\n\r\n            props.history.push({\r\n                pathname: '/managecheckout',\r\n                refundType: ''\r\n            })\r\n        }\r\n        if (isredirectclicked && shopcartreducer.error.length > 0) {\r\n            seterrormsg(shopcartreducer.error);\r\n            setisredirectclicked(false);\r\n        }\r\n    }, [shopcartreducer, (isredirectclicked === true)]);\r\n\r\n    const addTransFeeWithBalance = (balanceOwe) => {\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], balanceOwe, cashlesstotal)\r\n\r\n                if (transFee > 0) {\r\n                    actionShopCartSetEnteredAmountToPay(dispatch, balanceOwe);\r\n                    return genfunction.Rounded(balanceOwe + transFee);\r\n                }\r\n            }\r\n        }\r\n        return balanceOwe;\r\n    }\r\n\r\n    const addeventstotourholdaction = () => {\r\n        let filterdata = { ...newExtraItem };\r\n        filterdata.TourProducts = filterdata.TourProducts.filter(product => product.Quantity > 0);\r\n        let cartdata = [...cartEvents];\r\n\r\n        if (filterdata && filterdata.hasOwnProperty('BookingTypeID')) {\r\n            let usealternamteMerchant = false;\r\n            if (bkngType && bkngType.hasOwnProperty('UseAlternateMerchant')) {\r\n                usealternamteMerchant = bkngType.UseAlternateMerchant;\r\n            }\r\n\r\n            filterdata.UseAlternateMerchant = usealternamteMerchant;\r\n        }\r\n\r\n        actionShopCartAddEventWithTourHold(dispatch, filterdata, cartdata);\r\n    }\r\n\r\n    const constredirecttomanagecheckout = () => {\r\n\r\n        if (ValidateQuanity()) {\r\n            if (AmountToPay() >= 0 && newExtraItem && newExtraItem.hasOwnProperty('TotalAmount')) {\r\n\r\n                if (shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length < 1) {\r\n                    addeventstotourholdaction();\r\n                }\r\n\r\n                setisredirectclicked(true);\r\n            }\r\n            else {\r\n                handleClickOpen();\r\n            }\r\n        }\r\n    }\r\n\r\n    const ValidateQuanity = () => {\r\n        let MinTicket = bkngType.MinimumTickets\r\n        let MaxTicket = bkngType.MaximumTickets;\r\n\r\n        let CartQty = 0;\r\n        let NewQty = 0;\r\n        let TotalTicketCount = 0;\r\n        if (cartEvents && cartEvents.length > 0) {\r\n\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID == newExtraItem.TourEventID);\r\n            if (cartTourEvent && cartTourEvent.TourProducts.length > 0) {\r\n                CartQty = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n                    let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                    let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                    let newobj = { Quantity: aqty + bqty }\r\n                    return newobj;\r\n                }).Quantity;\r\n            }\r\n        }\r\n\r\n        NewQty = newExtraItem.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n            let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n            let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n            let newobj = { Quantity: aqty + bqty }\r\n            return newobj;\r\n        }).Quantity;\r\n\r\n        TotalTicketCount = CartQty + NewQty;\r\n\r\n        if (newExtraItem.SeatsAvailable == 0 || newExtraItem.BookNowOption != \"Book Now\") {\r\n            seterrormsg(\"Tickets not longer available, please choose another time\");\r\n            return false;\r\n        }\r\n        else if (NewQty > newExtraItem.SeatsAvailable) {\r\n            seterrormsg(\"Maximum of \" + newExtraItem.SeatsAvailable + \" tickets available\");\r\n            return false;\r\n        }\r\n        else if (TotalTicketCount < MinTicket) {\r\n            seterrormsg(\"Minimum tickets per order is \" + MinTicket)\r\n            return false;\r\n        }\r\n        else if (TotalTicketCount > MaxTicket) {\r\n            seterrormsg(\"Maximum of \" + MaxTicket + \" tickets allowed\")\r\n            return false;\r\n        }\r\n        else {\r\n            return true;\r\n        }\r\n    }\r\n    const applyrefund = (type) => {\r\n\r\n        if (shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length < 1) {\r\n            addeventstotourholdaction();\r\n        }\r\n\r\n        actionShopCartSetMmbAmountToPay(dispatch, AmountToPay());\r\n        actionShopCartSetRefundType(dispatch, type);\r\n\r\n        props.history.push({\r\n            pathname: '/managecheckout',\r\n            refundType: type\r\n        })\r\n    }\r\n\r\n    const totalpaid = () => {\r\n        let total = 0;\r\n        if (bookingreducer.booking && bookingreducer.booking[0] && bookingreducer.booking[0].BookingPayments && bookingreducer.booking[0].BookingPayments.length > 0) {\r\n            total = bookingreducer.booking[0].BookingPayments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n\r\n    const CheckCouponNo = (couponCode) => {\r\n        if (couponCode == '') {\r\n            seterrormsg('Please enter Coupon number.')\r\n        }\r\n        else {\r\n            if (couponCode.length > 0) {\r\n\r\n                if (!CheckUniqueCouponAlreadyApplied(couponCode)) {\r\n                    if (newExtraItem && newExtraItem.TotalAmount) {\r\n                        addeventstotourholdaction();\r\n                        setcouponNo(couponCode);\r\n                    }\r\n                }\r\n                else {\r\n                    seterrormsg(\"Unique Coupon already applied, please remove existing coupon and try again.\");\r\n                    setcouponNo('');\r\n                }\r\n            }\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (cartEvents && cartEvents.length > 0 && couponNo.length > 0) {\r\n            actionGetCoupon(dispatch, couponNo);\r\n            setcouponNo('');\r\n        }\r\n    }, [cartEvents]);\r\n\r\n    const errorcancelhandle = () => {\r\n\r\n        // Reset Coupons\r\n        actionResetUniqueCouponCardHoldState(dispatch);\r\n        actionResetCouponAlreadyApplied(dispatch);\r\n        actionResetCoupon(dispatch);\r\n        actionShopCartResetError(dispatch);\r\n        setcouponNo('');\r\n        seterrormsg('');\r\n        setisredirectclicked(false);\r\n    }\r\n\r\n    const CheckUniqueCouponAlreadyApplied = (couponCode) => {\r\n\r\n        let exist = false;\r\n        if (cartEvents && cartEvents.length > 0) {\r\n\r\n            cartEvents.map(e => {\r\n\r\n                if (e.CouponItems.filter(x => x.UniqueCouponCode == couponCode && x.isUniqueCoupon).length > 0) {\r\n                    exist = true;\r\n                }\r\n            });\r\n        }\r\n\r\n        return exist;\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (uniqueCouponHolds.UniqueCouponError && uniqueCouponHolds.UniqueCouponError.length > 0) {\r\n            seterrormsg(uniqueCouponHolds.UniqueCouponError);\r\n            actionEndCouponLoading(dispatch);\r\n        }\r\n    }, [uniqueCouponHolds.UniqueCouponError]);\r\n\r\n    const openerrorpopup = () => {\r\n        return (errormsg != \"\")\r\n    }\r\n\r\n    function ShowCurrentBookingStartAndEndTime() {\r\n        let time = \"\";\r\n\r\n        if (bookingreducer.booking && bookingreducer.booking[0]) {\r\n\r\n            time += genfunction.GetEventDateReceiptFormat(bookingreducer.booking[0].EventStartDateTime);\r\n            time += ' - ' + genfunction.AppendEndTime(bookingreducer.booking[0].EventEndDateTime);\r\n        }\r\n\r\n        return time;\r\n    }\r\n\r\n    function ShowStartAndEndTime(bkngType, newExtraItem) {\r\n        let time = \"\";\r\n\r\n        if (bkngType && newExtraItem) {\r\n\r\n            if (bkngType.ShowStartTime) {\r\n                time += genfunction.GetEventDateReceiptFormat(newExtraItem.EventStartDateTime);\r\n            }\r\n\r\n            if (bkngType.ShowEndTime && !bkngType.ShowStartTime) {\r\n                time += genfunction.GetEventDateReceiptFormat(newExtraItem.EventStartDateTime);\r\n            }\r\n\r\n            if (bkngType.ShowEndTime && bkngType.ShowStartTime) {\r\n                time += ' - ' + genfunction.AppendEndTime(newExtraItem.EventEndDateTime);\r\n            }\r\n\r\n            if (!bkngType.ShowStartTime && !bkngType.ShowEndTime) {\r\n                time += genfunction.GetEventDateReceiptFormatwithoutTime(newExtraItem.EventStartDateTime);\r\n            }\r\n        }\r\n\r\n        return time;\r\n    }\r\n\r\n    const removeclickhandler = (eventid, productid, couponID, couponRefHold) => {\r\n        if (couponRefHold !== null) {\r\n            if (DeleteCouponsHolds(couponID)) {\r\n                actionDeleteUniqueCoupon(dispatch, couponRefHold);\r\n            }\r\n        }\r\n\r\n        actionRemoveCoupon(dispatch, eventid, productid);\r\n    }\r\n\r\n    const DeleteCouponsHolds = (CouponID) => {\r\n        let removeUniqueCouponHolds = false;\r\n        if (cartEvents) {\r\n\r\n            cartEvents.map(x => {\r\n                if (x.CouponItems.filter(x => x.CouponID == CouponID && x.isUniqueCoupon).length < 2) {\r\n                    removeUniqueCouponHolds = true;\r\n                }\r\n            })\r\n        }\r\n\r\n        return removeUniqueCouponHolds;\r\n    }\r\n\r\n    const redirecttofindmybpooking = () => {\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n    return (\r\n\r\n        //Desktop and Laptop (smDown)\r\n        //Tablet (xsDown mdUp)\r\n        //Mobile (smUp)\r\n\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errormsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n            <Grid container justify=\"center\" spacing={1} className={bookingreducer.booking[0] && bookingreducer.booking[0].BookingID ? '' : classes.hideBtn}>\r\n                <Grid item xs={12} md={7}>\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h1\" style={{ padding: \"15px\", fontWeight: \"bold\", marginTop: 0 }}>\r\n                            {ChangeDateTimeHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"h2\" style={{ padding: \"15px\", fontWeight: \"bold\" }}>\r\n                            {ChangeDateTimeHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"h3\" style={{ padding: \"15px\", fontWeight: \"bold\" }}>\r\n                            {ChangeDateTimeHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                </Grid>\r\n                <Grid item xs={12} md={7}>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: 10 }}>\r\n                            Original Booking : {ShowCurrentBookingStartAndEndTime()}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h5\" style={{ padding: 12 }}>\r\n                            Original Booking : {ShowCurrentBookingStartAndEndTime()}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h6\" style={{ padding: 10, height: 'auto' }}>\r\n                            Original Booking : {ShowCurrentBookingStartAndEndTime()}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            For reference, here are the original tickets in your order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"subtitle1\" style={{ padding: \"10px\" }}>\r\n                            For reference, here are the original tickets in your order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"subtitle2\" style={{ padding: \"10px\" }}>\r\n                            For reference, here are the original tickets in your order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"5px\" }}>\r\n                            These will all be replaced with tickets selected below.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"subtitle1\" style={{ padding: \"5px\" }}>\r\n                            These will all be replaced with tickets selected below.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"subtitle2\" style={{ padding: \"5px\" }}>\r\n                            These will all be replaced with tickets selected below.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n\r\n                    {bookingreducer.booking[0] && bookingreducer.booking[0].hasOwnProperty('BookingProducts') && bookingreducer.booking[0].BookingProducts.length > 0 ?\r\n\r\n                        bookingreducer.booking[0].BookingProducts.map((prod, i) => {\r\n                            return prod.Quantity > 0 ?\r\n                                <Grid style={{ padding: \"10px\" }} container item xs={12} ms={12} lg={12} key={prod.TourProductID}>\r\n                                    <Grid item xs={6} ms={6} lg={6}>\r\n\r\n                                        <Hidden smDown>\r\n                                            <Typography align=\"right\" variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                                {prod.Quantity} x {prod.TourProductName}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                        <Hidden xsDown mdUp>\r\n                                            <Typography align=\"right\" variant=\"h5\" style={{ padding: \"10px\" }}>\r\n\r\n                                                {prod.Quantity} x {prod.TourProductName}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                        <Hidden smUp>\r\n                                            <Typography align=\"right\" variant=\"h6\" style={{ padding: \"10px\" }}>\r\n\r\n                                                {prod.Quantity} x {prod.TourProductName}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                    </Grid>\r\n\r\n                                    <Grid item xs={6} ms={6} lg={6}>\r\n\r\n                                        <Hidden smDown>\r\n                                            <Typography align=\"left\" variant=\"h4\" style={{ padding: \"10px\" }}>\r\n\r\n                                                {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                        <Hidden xsDown mdUp>\r\n                                            <Typography align=\"left\" variant=\"h5\" style={{ padding: \"10px\" }}>\r\n\r\n                                                {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                        <Hidden smUp>\r\n                                            <Typography align=\"left\" variant=\"h6\" style={{ padding: \"10px\" }}>\r\n\r\n                                                {genfunction.ccyFormat(prod.ProductLinePriceInclTax)}\r\n                                            </Typography>\r\n                                        </Hidden>\r\n\r\n                                    </Grid>\r\n                                </Grid> : null\r\n                        }) : null}\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: 10 }}>\r\n                            New Booking :  {ShowStartAndEndTime(bkngType, newExtraItem)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h5\" style={{ padding: 12 }}>\r\n                            New Booking :  {ShowStartAndEndTime(bkngType, newExtraItem)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h6\" style={{ padding: 10, height: 'auto' }}>\r\n                            New Booking :  {ShowStartAndEndTime(bkngType, newExtraItem)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Select the tickets and add ons for your new date / time.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"subtitle1\" style={{ padding: \"10px\" }}>\r\n                            Select the tickets and add ons for your new date / time.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"subtitle2\" style={{ padding: \"10px\" }}>\r\n                            Select the tickets and add ons for your new date / time.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"5px\" }}>\r\n                            These tickets will replace the tickets from your original order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"subtitle1\" style={{ padding: \"5px\" }}>\r\n                            These tickets will replace the tickets from your original order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"subtitle2\" style={{ padding: \"5px\" }}>\r\n                            These tickets will replace the tickets from your original order.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Grid item xs={12} md={12} style={{ margin: \"auto\" }}>\r\n                        <ExtraItemsProducts\r\n                            allowQuantityChange={shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length > 0 ? false : true}\r\n                            hidetopheading={true} isMMB={true}\r\n                            tourEventId={props.location.eventID} ismembershipapplied={props.location.ismembershipapplied ? props.location.ismembershipapplied : false}\r\n                            membercostrate={props.location.membercostrate ? props.location.membercostrate : DefaultCostRateID}\r\n                            bookingtypeID={props.location.bookingtypeID !== undefined && props.location.bookingtypeID > 0 ? props.location.bookingtypeID : bookingID} />\r\n                    </Grid>\r\n\r\n                    <Grid item xs={12} md={12} >\r\n\r\n                        <Grid item xs={12} md={12} align=\"center\" style={{ marginTop: \"15px\" }}>\r\n                            <TextField\r\n                                margin=\"dense\"\r\n                                id=\"couponcode\"\r\n                                name=\"couponcode\"\r\n                                label=\"Enter Coupon Code\"\r\n                                type=\"text\"\r\n                                value={couponNo}\r\n                                onChange={event => {\r\n                                    setcouponNo(event.target.value);\r\n                                }}\r\n                            />\r\n\r\n                            <Hidden smDown>\r\n                                <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                    style={{ padding: \"12px\", marginLeft: \"10px\" }}\r\n                                    onClick={() => { CheckCouponNo(couponNo) }}\r\n                                    disabled={props.amounttopay <= 0 || shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length > 0}\r\n                                >\r\n                                    Apply\r\n                                </Button>\r\n                            </Hidden>\r\n\r\n                            <Hidden xsDown mdUp>\r\n                                <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                    style={{ padding: 12, marginLeft: 10, marginTop: 5 }}\r\n                                    onClick={() => { CheckCouponNo(couponNo) }}\r\n                                    disabled={props.amounttopay <= 0 || shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length > 0}\r\n                                >\r\n                                    Apply\r\n                                </Button>\r\n                            </Hidden>\r\n\r\n                            <Hidden smUp>\r\n                                <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                    style={{ padding: 12, marginLeft: 10, marginTop: 5 }}\r\n                                    onClick={() => { CheckCouponNo(couponNo) }}\r\n                                    disabled={props.amounttopay <= 0 || shopcartreducer.tourCoupons && shopcartreducer.tourCoupons.length > 0}\r\n                                >\r\n                                    Apply\r\n                                </Button>\r\n                            </Hidden>\r\n\r\n                        </Grid>\r\n                    </Grid>\r\n\r\n\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            Original Cost : {bookingreducer.booking[0] && bookingreducer.booking[0].BookingPayments ? genfunction.ccyFormat(bookingreducer.booking[0].BookingPayments[0].PaymentAmount) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Original Cost : {bookingreducer.booking[0] && bookingreducer.booking[0].BookingPayments ? genfunction.ccyFormat(bookingreducer.booking[0].BookingPayments[0].PaymentAmount) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Original Cost : {bookingreducer.booking[0] && bookingreducer.booking[0].BookingPayments ? genfunction.ccyFormat(bookingreducer.booking[0].BookingPayments[0].PaymentAmount) : genfunction.ccyFormat(0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            New Cost : {genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            New Cost : {genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            New Cost : {genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Amount to Pay\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Amount to Pay\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Amount to Pay\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            New Cost :{genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            New Cost :{genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            New Cost :{genfunction.ccyFormat(newExtraItem.TotalAmount ? newExtraItem.TotalAmount : 0)}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            Coupon Applied : {genfunction.ccyFormat(CouponsTotal())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Coupon Applied : {genfunction.ccyFormat(CouponsTotal())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Coupon Applied : {genfunction.ccyFormat(CouponsTotal())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Grid item xs={12} md={12} className={cartEvents !== undefined && cartEvents.length > 0 ? \"\" : classes.diplaynone}>\r\n                        <Table size=\"small\" style={{ padding: \"15px\" }} aria-label=\"spanning table\">\r\n                            <TableBody>\r\n                                {cartEvents !== undefined && cartEvents.length > 0 ?\r\n                                    cartEvents.map(event =>\r\n                                        event.CouponItems.map(e =>\r\n                                            <TableRow >\r\n                                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                                    <IconButton\r\n                                                        edge=\"end\"\r\n                                                        size=\"small\"\r\n                                                        onClick={() => removeclickhandler(e.TourEventID, e.TourProductID, e.CouponID, e.CouponHoldRef)}>\r\n                                                        <CancelIcon color={\"error\"} />\r\n                                                    </IconButton>{'      ' + e.ApplyDiscountTourProductName + '      (' + e.UniqueCouponCode + ')'}\r\n                                                </TableCell>\r\n                                                <TableCell align=\"right\" className={classes.couponAmount}>-{genfunction.ccyFormat(e.TotalAmount)}</TableCell>\r\n                                            </TableRow>\r\n                                        )) : null\r\n                                }\r\n                            </TableBody>\r\n                        </Table>\r\n                    </Grid>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            Previous Payment : {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Previous Payment : {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Previous Payment : {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\", fontWeight: \"bold\" }}>\r\n                            Amount to Pay : {genfunction.ccyFormat(AmountToPay())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\", fontWeight: \"bold\" }}>\r\n                            Amount to Pay : {genfunction.ccyFormat(AmountToPay())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\", fontWeight: \"bold\" }}>\r\n                            Amount to Pay : {genfunction.ccyFormat(AmountToPay())}\r\n                        </Typography>\r\n                    </Hidden>\r\n                </Grid>\r\n\r\n\r\n                <Grid item xs={12} md={7} align=\"center\" style={{ marginTop: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginTop: 0 }}\r\n                            onClick={() => constredirecttofindmybpooking()}>\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 0 }}\r\n                            onClick={() => {\r\n                                setisredirectclicked(true);\r\n                                constredirecttomanagecheckout();\r\n                            }}\r\n                        >\r\n                            Confirm Changes\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Button variant=\"outlined\" size=\"small\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginTop: 10 }}\r\n                            onClick={() => constredirecttofindmybpooking()}>\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 10 }}\r\n                            onClick={() => {\r\n                                setisredirectclicked(true);\r\n                                constredirecttomanagecheckout();\r\n                            }}\r\n                        >\r\n                            Confirm Changes\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Button variant=\"outlined\" size=\"small\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginTop: 10 }}\r\n                            onClick={() => constredirecttofindmybpooking()}>\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            style={{ padding: \"12px\", marginLeft: \"10px\", marginTop: 10 }}\r\n                            onClick={() => {\r\n                                setisredirectclicked(true);\r\n                                constredirecttomanagecheckout();\r\n                            }}\r\n                        >\r\n                            Confirm Changes\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                </Grid>\r\n            </Grid>\r\n\r\n            <Dialog\r\n                open={open}\r\n                onClose={handleClose}\r\n                aria-labelledby=\"alert-dialog-title\"\r\n                aria-describedby=\"alert-dialog-description\"\r\n                disableEscapeKeyDown={true}\r\n                disableBackdropClick={true}\r\n            >\r\n                <DialogTitle id=\"alert-dialog-title\">{\"Refund Transaction\"}</DialogTitle>\r\n                <DialogContent>\r\n                    <DialogContentText id=\"alert-dialog-description\">\r\n\r\n                        {/* \r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                Your new booking total is {genfunction.ccyFormat(AmountToPay())} and your total paid is {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}.\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                                Your new booking total is {genfunction.ccyFormat(AmountToPay())} and your total paid is {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}.\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                                Your new booking total is {genfunction.ccyFormat(AmountToPay())} and your total paid is {bookingreducer.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}.\r\n                            </Typography>\r\n                        </Hidden> */}\r\n\r\n\r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment:\" + genfunction.ccyFormat(totalpaid())}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(AmountToPay()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment:\" + genfunction.ccyFormat(totalpaid())}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(AmountToPay()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment:\" + genfunction.ccyFormat(totalpaid())}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(AmountToPay()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                    </DialogContentText>\r\n                </DialogContent>\r\n                <DialogActions>\r\n                    <Hidden smDown>\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"medium\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && bookingreducer.booking[0].AllowRefunds && !bookingreducer.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && (bookingreducer.booking[0].AllowRefunds || bookingreducer.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && bookingreducer.booking[0].AllowRefunds && !bookingreducer.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && (bookingreducer.booking[0].AllowRefunds || bookingreducer.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && bookingreducer.booking[0].AllowRefunds && !bookingreducer.booking[0].AllowRefundToGiftcardOnly ? '' : classes.hideBtn}  >\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={bookingreducer.booking[0] && (bookingreducer.booking[0].AllowRefunds || bookingreducer.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n\r\n                </DialogActions>\r\n            </Dialog>\r\n\r\n\r\n            <Grid container alignItems=\"center\" style={{ minHeight: '10vh', marginTop: 30 }} justify=\"center\" spacing={0} className={bookingreducer.booking[0] && bookingreducer.booking[0].BookingID ? classes.hideBtn : ''}>\r\n                <Typography variant=\"h4\" className={classes.AdjustContext}>\r\n                    Please go to find my booking page to Update Booking.\r\n                </Typography>\r\n                <Grid item xs={12} md={12} align=\"center\">\r\n\r\n                    <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                        onClick={() => redirecttofindmybpooking()}>\r\n                        Manage My Booking\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        </Container >\r\n    );\r\n};\r\n\r\nexport default ConfimBookingChanges;\r\n","import React, { useEffect, useRef, useState, useCallback } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport {\r\n    Button, Checkbox, Card, CardContent, CardHeader, FormControl, FormControlLabel, Hidden, FormHelperText, Grid, InputLabel, InputAdornment,\r\n    Link, MenuItem, Radio, RadioGroup, Select, Typography, TextField\r\n} from '@material-ui/core';\r\nimport { CreditCard, DateRange, VpnKey } from '@material-ui/icons';\r\nimport { genfunction } from '../../../helpers';\r\nimport { actionPostPaymentTransaction, actionResetPaymentTransaction, actionShopCartShowTransFee } from 'actions';\r\nimport CryptoAES from 'crypto-js/aes';\r\nimport CryptoENC from 'crypto-js/enc-utf8';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport DialogeBox from '../../../components/DialogeBox/DialogeBox';\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport MaskedInput from 'react-text-mask';\r\nimport { actionResetFormErrorState, actionSetFormErrorState, actionSetFieldValueState } from 'actions';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { actionGetCustomer, actionResetCustomer } from 'actions';\r\nimport { actionShopCartSetRefundType, actionShopCartSetAdditionalBookingAmount, actionShopCartSetMmbAmountToPay } from 'actions';\r\nimport { actionGetCountryAndState } from 'actions';\r\nimport { useGoogleReCaptcha } from 'react-google-recaptcha-v3';\r\nimport Payments from '../../../components/Payments/Payments';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport { createFilterOptions } from '@material-ui/lab/Autocomplete';\r\nimport MultiPayments from '../../Checkout/components/MultiPayments';\r\nimport { useDebouncedCallback } from 'use-debounce';\r\nimport { actionStopUserToPurchase } from 'actions';\r\nimport { actionValidateRecaptchaToken } from 'actions';\r\n\r\nconst { EnableAlternateMerchantOnline, EmailRegex, PhoneNumberMessage, spreedlyEnvironment, RecaptchaV3Client, TermsnConditionCheckBoxText,\r\n    TermsnConditionCheckMsg, UseStreetAddressForAVS, ShowFullAddressOnCheckout, PaymentMethodType, PhoneNumberMandatory, ApplyTransactionFee } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(3)\r\n    }, primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    },\r\n    box100per: {\r\n        width: \"100%\"\r\n    },\r\n    box95per: {\r\n        width: \"97%\"\r\n    },\r\n    iconforiframe: {\r\n        marginTop: \"18px\"\r\n    },\r\n    iframebox: {\r\n        marginTop: \"-13px\",\r\n        height: \"31px\",\r\n    },\r\n    visible: {\r\n        visibility: \"visible\"\r\n    },\r\n    hideVisiblity: {\r\n        display: \"none\"\r\n    },\r\n    cancelbtnconfig:\r\n    {\r\n        marginTop: \"-40px !important\"\r\n    },\r\n    cancelbtnconfig10per:\r\n    {\r\n        marginTop: \"10px !important\"\r\n    },\r\n    clearButton: {\r\n        \"& .MuiButtonBase-root.MuiAutocomplete-clearIndicator\": {\r\n            color: theme.palette.primary.main\r\n        }\r\n    }\r\n}));\r\n\r\nfunction TextMaskCustom(props) {\r\n    const { inputRef, onChange, value, ...other } = props;\r\n    let pnMask = ['(', /[1-9]/, /\\d/, /\\d/, ')', ' ', /\\d/, /\\d/, /\\d/, '-', /\\d/, /\\d/, /\\d/, /\\d/];\r\n    return (\r\n        <MaskedInput\r\n            value={value}\r\n            {...other}\r\n            ref={(ref) => {\r\n                inputRef(ref ? ref.inputElement : null);\r\n            }}\r\n            onChange={onChange}\r\n            mask={pnMask}\r\n        />\r\n    );\r\n}\r\n\r\nconst CreditCardPayment = (props) => {\r\n\r\n    const paymentsRef = useRef();\r\n    var requiredFields = {};\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const { executeRecaptcha } = useGoogleReCaptcha();\r\n\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const errorstate = useSelector(state => state.reducerFormError.errorstate);\r\n    const formfields = useSelector(state => state.reducerFormError.formfields);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n    const customer = useSelector(state => state.reducerCustomer);\r\n    const managebkngTicketsModify = useSelector(state => state.reducerShopCart.managebookingticketsmodification);\r\n    let shopcartamounttoPay = useSelector(state => state.reducerShopCart.mmbAmountToPay);\r\n    let refundType = useSelector(state => state.reducerShopCart.refundType);\r\n    const countryandstates = useSelector(state => state.reducerCountryAndState.countryandstate);\r\n    const donation = useSelector(state => state.reducerShopCart.donation);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n    let enteredAmountToPay = useSelector(state => state.reducerShopCart.enteredAmountToPay);\r\n    const recaptacha = useSelector(state => state.reducerRecaptcha);\r\n    const sessionID = useSelector(state => state.reducerGlobal.sessionID);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n    const mmbHasPaid = useSelector(state => state.reducerShopCart.MMBHasPaid);\r\n\r\n    const environmentKey = CryptoAES.decrypt(spreedlyEnvironment, '1271').toString(CryptoENC);\r\n    const [CreditCardValue, setCreditCardValue] = React.useState(''); //NewCardDetails\r\n    const [opentnc, setopentnc] = useState(false);\r\n    const [tncchecked, settncChecked] = React.useState(false);\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n\r\n    const paymenttranstate = useSelector(state => {\r\n        return (\r\n            {\r\n                loading: state.reducerPaymentTransaction.loading,\r\n                haspaid: state.reducerPaymentTransaction.Payment.hasOwnProperty('Products'),\r\n                paymentinfo: state.reducerPaymentTransaction.Payment,\r\n                errormsg: state.reducerPaymentTransaction.PaymentInfoError\r\n            }\r\n        )\r\n    });\r\n\r\n    let inputreferences = [];\r\n\r\n    inputreferences.first_name = React.useRef();\r\n    inputreferences.last_name = React.useRef();\r\n    inputreferences.email = React.useRef();\r\n    inputreferences.phone_number = React.useRef();\r\n    inputreferences.address1 = React.useRef();\r\n    inputreferences.country = React.useRef();\r\n    inputreferences.state = React.useRef();\r\n    inputreferences.city = React.useRef();\r\n    inputreferences.zip = React.useRef();\r\n    inputreferences.memberno = React.useRef();\r\n    inputreferences.shipping_phone_number = React.useRef();\r\n    inputreferences.shipping_address1 = React.useRef();\r\n    inputreferences.shipping_city = React.useRef();\r\n    inputreferences.shipping_state = React.useRef();\r\n    inputreferences.shipping_zip = React.useRef();\r\n    inputreferences.shipping_country = React.useRef();\r\n\r\n    const openerrorpopup = () => {\r\n        return (paymenttranstate.errormsg != \"\" || errorMsg != \"\")\r\n    }\r\n\r\n    const filterOptions = createFilterOptions({\r\n        stringify: (option) => option.Country + '' + option.State,\r\n    });\r\n\r\n    useEffect(() => {\r\n        if (shopcartamounttoPay > 0) {\r\n            if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n                if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                    actionShopCartShowTransFee(dispatch, true);\r\n                }\r\n            }\r\n        }\r\n\r\n    }, [transactionfee])\r\n\r\n    const handleReCaptchaVerify = useCallback(async () => {\r\n\r\n        if (!executeRecaptcha) {\r\n            console.log('Execute recaptcha not yet available.');\r\n            return;\r\n        }\r\n\r\n        let token = await executeRecaptcha('ecommerce');\r\n\r\n        if (token.length > 0) {\r\n            actionValidateRecaptchaToken(dispatch, token, sessionID);\r\n        }\r\n        else {\r\n            seterrorMsg(\"Recaptcha token not fetched.\");\r\n        }\r\n\r\n    }, [executeRecaptcha]);\r\n\r\n    useEffect(() => {\r\n\r\n        if ((events && events.length > 0) || refundType === \"AdditionalPayment\") {\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '' && (stopUserToPurchase !== undefined\r\n                && stopUserToPurchase === false) && (sessionID !== undefined && sessionID.length > 0)\r\n                && (recaptacha.validToken !== undefined && recaptacha.validToken === false)) {\r\n\r\n                handleReCaptchaVerify();\r\n            }\r\n        }\r\n\r\n    }, [handleReCaptchaVerify, RecaptchaV3Client, stopUserToPurchase, sessionID, recaptacha.validToken])\r\n\r\n\r\n    useEffect(() => {\r\n        if (paymenttranstate.errormsg.includes(\"Payment has been unsuccessful. To make this purchase, please contact us directly.\")) {\r\n            actionStopUserToPurchase(dispatch);\r\n        }\r\n    }, [paymenttranstate.errormsg]);\r\n\r\n    useEffect(() => {\r\n        if (recaptacha.validTokenError.length > 0) {\r\n            seterrorMsg(recaptacha.validTokenError);\r\n            actionStopUserToPurchase(dispatch);\r\n        }\r\n\r\n    }, [recaptacha.validTokenError]);\r\n\r\n    const transFeeCheckHandler = (event) => {\r\n        let transFee;\r\n\r\n        if (refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0)) {\r\n            transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal)\r\n        }\r\n        else {\r\n            transFee = genfunction.TransactionFee(events, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts);\r\n        }\r\n\r\n        let amoutToPay = event.target.checked ? genfunction.Rounded(shopcartamounttoPay + transFee) : genfunction.Rounded(shopcartamounttoPay - transFee);\r\n        actionShopCartShowTransFee(dispatch, event.target.checked);\r\n        actionShopCartSetMmbAmountToPay(dispatch, amoutToPay);\r\n    };\r\n\r\n    const transFeeCheckBox = () => {\r\n\r\n        let showTFBox = true;\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeOptional === false && transactionfee.transactionFee[0].TransactionFeeByDefault === false) {\r\n                showTFBox = false;\r\n                if (!showTransFee && ApplyTransactionFee) {\r\n                    actionShopCartShowTransFee(dispatch, true);\r\n                }\r\n            }\r\n        }\r\n\r\n        return showTFBox;\r\n    };\r\n\r\n    useEffect(() => {\r\n\r\n        if (props.booking && props.booking.hasOwnProperty('CustomerID') && props.booking.CustomerID > 0 && mmbHasPaid === false) {\r\n\r\n            let cstID = props.booking.CustomerID;\r\n            if (props.booking.hasOwnProperty('BookingContactID') && props.booking.BookingContactID) {\r\n                cstID = props.booking.BookingContactID;\r\n            }\r\n\r\n            actionGetCustomer(dispatch, cstID, props.booking.BookingEmailAddress);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (props.amounttopay <= 0 || shopcartamounttoPay <= 0) {\r\n            setCreditCardValue(\"\");\r\n        }\r\n    }, [cashless])\r\n\r\n\r\n    useEffect(() => {\r\n        if (customer.customerError && customer.customerError.length > 0) {\r\n            seterrorMsg(customer.customerError);\r\n        }\r\n    }, [customer]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (shopcartamounttoPay == 0 && refundType !== \"CancelBooking\" && customer.customer && customer.customer.length > 0) {\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                    paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n                }).catch(error => {\r\n                    seterrorMsg(\"Recaptcha token not fetched\")\r\n                })\r\n            }\r\n            else {\r\n                paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n            }\r\n        }\r\n    }, [customer]);\r\n\r\n    useEffect(() => {\r\n\r\n        if (shopcartamounttoPay < 0 && (refundType == \"GiftCardRefund\" || refundType == \"CancelGiftCardRefund\") && customer.customer && customer.customer.length > 0) {\r\n            actionShopCartSetRefundType(dispatch, refundType)\r\n\r\n            if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                    paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n                }).catch(error => {\r\n                    seterrorMsg(\"Recaptcha token not fetched\")\r\n                })\r\n            }\r\n            else {\r\n                paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n            }\r\n        }\r\n    }, [customer]);\r\n\r\n    useEffect(() => {\r\n\r\n        if ((refundType == \"CancelBooking\" || refundType == \"CreditCardRefund\") && customer.customer && customer.customer.length > 0) {\r\n\r\n            let cardonfileToken = \"\";\r\n            let cardType = \"\";\r\n            let cardMaskedNum = \"\";\r\n\r\n\r\n            if (props.booking.hasOwnProperty('PaymentToken') && props.booking.PaymentToken.length > 0) {\r\n                cardonfileToken = PaymentMethodType === \"Spreedly\" ?\r\n                    props.booking.PaymentToken.substring(9, props.booking.PaymentToken.length) :\r\n                    props.booking.PaymentToken.substring(props.booking.PaymentToken.length - 10);\r\n            }\r\n\r\n            if (props.booking.hasOwnProperty('PaymentDescription') && props.booking.PaymentDescription.length > 0) {\r\n                cardType = PaymentMethodType === \"Spreedly\" ?\r\n                    props.booking.PaymentDescription.substr(0, props.booking.PaymentDescription.indexOf('-')) :\r\n                    props.booking.PaymentDescription.substring(0, props.booking.PaymentDescription.indexOf('-') - 1).trim();\r\n\r\n                cardMaskedNum = props.booking.PaymentDescription.substring(props.booking.PaymentDescription.indexOf('-') + 1, props.booking.PaymentDescription.length).trim();\r\n            }\r\n\r\n            if (cardonfileToken.length > 0) {\r\n                actionShopCartSetRefundType(dispatch, refundType);\r\n\r\n                if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n                    executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                        paymentTokenHandler({ token: cardonfileToken, cardtype: cardType, cardnumber: cardMaskedNum }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n\r\n                    }).catch(error => {\r\n                        seterrorMsg(\"Recaptcha token not fetched\")\r\n                    })\r\n                }\r\n                else {\r\n                    paymentTokenHandler({ token: cardonfileToken, cardtype: cardType, cardnumber: cardMaskedNum }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n                }\r\n\r\n            }\r\n        }\r\n    }, [customer]);\r\n\r\n    const GetTransOptionalText = () => {\r\n        let optionalTxt = '';\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            optionalTxt = transactionfee.transactionFee[0].TransactionFeeOptionalText;\r\n\r\n            if (refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0))\r\n                optionalTxt += ' [' + genfunction.ccyFormat(parseFloat(genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal))) + ']';\r\n\r\n            else\r\n                optionalTxt += ' [' + genfunction.ccyFormat(parseFloat(genfunction.TransactionFee(events, donation, transactionfee.transactionFee[0], cashless, membershipPackages, gatickets, giftcards.giftcards, orderProducts, donationProducts))) + ']';\r\n        }\r\n\r\n        return optionalTxt;\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetPaymentTransaction(dispatch);\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const fieldhandleChange = (event) => {\r\n        if (event.currentTarget.name === \"checkBoxMember\")\r\n            actionSetFieldValueState(dispatch, event.currentTarget.name, event.target.checked);\r\n        else if (event.target.name === \"MonthSelect\" || event.target.name === \"YearSelect\")\r\n            actionSetFieldValueState(dispatch, event.target.name, event.target.value);\r\n        else\r\n            actionSetFieldValueState(dispatch, event.currentTarget.name, event.target.value);\r\n\r\n    };\r\n\r\n    const getTNC = () => {\r\n        return ReactHtmlParser(TermsnConditionCheckMsg);\r\n    }\r\n\r\n    const handleChange = (event) => {\r\n        setCreditCardValue(event.target.value);\r\n    };\r\n\r\n    const tnccheckeHandle = (event) => {\r\n        settncChecked(event.target.checked);\r\n    };\r\n\r\n    const paymentTokenHandler = (token, client, recaptchaToken) => {\r\n        actionPostPaymentTransaction(dispatch, token, client, recaptchaToken);\r\n    }\r\n\r\n    const changeBillingAddress = () => {\r\n        actionSetFieldValueState(dispatch, 'billingAddressSame', !formfields.billingAddressSame.value);\r\n    }\r\n\r\n    const ZeroDollaroRGiftCardOnlyTransCall = () => {\r\n\r\n        if (RecaptchaV3Client && RecaptchaV3Client != '') {\r\n            executeRecaptcha(\"checkout\").then(recaptchaToken => {\r\n                paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", recaptchaToken);\r\n            }).catch(error => {\r\n                seterrorMsg(\"Recaptcha token not fetched\")\r\n            })\r\n        }\r\n        else {\r\n            paymentTokenHandler({ token: \"\", cardtype: \"\" }, customer.customer && customer.customer.length > 0 ? customer.customer : \"\", \"\");\r\n        }\r\n    }\r\n\r\n    const ProcessAndConfigurePaymentsWithoutCard = () => {\r\n\r\n        if ((refundType == \"AdditionalPayment\" || refundType === \"\") && shopcartamounttoPay > 0) {\r\n\r\n            if (cashlesstotal === 0) {\r\n                actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay);\r\n            }\r\n\r\n            if (cashlesstotal > 0) {\r\n                actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay - cashlesstotal);\r\n            }\r\n        }\r\n\r\n        if (formfields.billingAddressSame.value) {\r\n            billingAddressSameAsAbover();\r\n        }\r\n\r\n        reseterrorfield();\r\n\r\n        requiredFields = BindRequiredFields();\r\n\r\n        return requiredFields ? true : false;\r\n    }\r\n\r\n    const onChangeCountry = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"country\", value === null ? \"\" : value.Country);\r\n        onChangeState(event, null);\r\n    }\r\n\r\n    const onChangeState = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"state\", value === null ? \"\" : value.State);\r\n    }\r\n\r\n    const onChangeShippingCountry = (event, value) => {\r\n        if (value === null) {\r\n            actionSetFieldValueState(dispatch, \"shipping_country\", \"\")\r\n            actionSetFieldValueState(dispatch, \"shipping_state\", \"\")\r\n        }\r\n        else\r\n            actionSetFieldValueState(dispatch, \"shipping_country\", value.Country);\r\n\r\n        onChangeShippingState(event, null);\r\n    }\r\n    const onChangeShippingState = (event, value) => {\r\n        actionSetFieldValueState(dispatch, \"shipping_state\", value === null ? \"\" : value.State);\r\n    }\r\n\r\n    useEffect(() => {\r\n        actionGetCountryAndState(dispatch);\r\n\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (countryandstates && countryandstates.length > 0) {\r\n            if (formfields.country.value == \"\")\r\n                actionSetFieldValueState(dispatch, \"country\", countryandstates[0].Country);\r\n            if (formfields.shipping_country.value == \"\")\r\n                actionSetFieldValueState(dispatch, \"shipping_country\", countryandstates[0].Country);\r\n\r\n        }\r\n    }, [countryandstates]);\r\n\r\n    const isShowCountryFields = (columnName) => {\r\n        return genfunction.GetValueFromCountryAndState(countryandstates, formfields.country.value, columnName);\r\n    }\r\n\r\n    const isShowShippingCountryFields = (columnName) => {\r\n        return genfunction.GetValueFromCountryAndState(countryandstates, formfields.shipping_country.value, columnName);\r\n    }\r\n\r\n    const BindRequiredFields = () => {\r\n\r\n        if (PhoneNumberMandatory) {\r\n            requiredFields[\"phone_number\"] = formfields.phone_number.value.trim();\r\n            requiredFields[\"shipping_phone_number\"] = formfields.shipping_phone_number.value;\r\n        }\r\n\r\n        requiredFields[\"email\"] = formfields.email.value.trim();\r\n        if (UseStreetAddressForAVS)\r\n            requiredFields[\"address1\"] = formfields.address1.value;\r\n        requiredFields[\"country\"] = formfields.country.value;\r\n        requiredFields[\"city\"] = formfields.city.value;\r\n\r\n        if (isShowCountryFields(\"ShowState\")) {\r\n            requiredFields[\"state\"] = formfields.state.value;\r\n        }\r\n        else {\r\n            formfields.state.value = \"0\";\r\n        }\r\n\r\n        if (isShowCountryFields(\"ShowPostalCode\")) {\r\n            requiredFields[\"zip\"] = formfields.zip.value;\r\n        }\r\n        else {\r\n            formfields.zip.value = \"0\";\r\n        }\r\n\r\n        requiredFields[\"first_name\"] = formfields.first_name.value;\r\n        requiredFields[\"last_name\"] = formfields.last_name.value;\r\n\r\n        requiredFields[\"shipping_address1\"] = formfields.shipping_address1.value;\r\n        requiredFields[\"shipping_city\"] = formfields.shipping_city.value;\r\n\r\n        if (isShowShippingCountryFields(\"ShowState\")) {\r\n            requiredFields[\"shipping_state\"] = formfields.shipping_state.value;\r\n        }\r\n        else {\r\n            formfields.shipping_state.value = \"0\";\r\n        }\r\n\r\n        if (isShowShippingCountryFields(\"ShowPostalCode\")) {\r\n            requiredFields[\"shipping_zip\"] = formfields.shipping_zip.value;\r\n        }\r\n        else {\r\n            formfields.shipping_zip.value = \"0\";\r\n        }\r\n\r\n        requiredFields[\"shipping_country\"] = formfields.shipping_country.value;\r\n\r\n        if (ShowFullAddressOnCheckout == false) {\r\n            requiredFields[\"address1\"] = requiredFields[\"country\"] = requiredFields[\"city\"] = requiredFields[\"state\"] = undefined;\r\n            requiredFields[\"shipping_address1\"] = requiredFields[\"shipping_country\"] = requiredFields[\"shipping_city\"] = requiredFields[\"shipping_state\"] = undefined;\r\n        }\r\n\r\n        if (checkfieldvalidation(requiredFields) == false) { return; }\r\n\r\n        if (validateEmail(requiredFields[\"email\"]) == false) {\r\n            errorfield(\"email\", \"Please enter a valid email address\", true);\r\n            inputreferences['email'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else if (requiredFields[\"phone_number\"] && validatePhoneNum(requiredFields[\"phone_number\"]) == false) {\r\n            errorfield(\"phone_number\", \"Please enter a valid phone #\", true);\r\n            inputreferences['phone_number'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else if (requiredFields[\"shipping_phone_number\"] && validatePhoneNum(requiredFields[\"shipping_phone_number\"]) == false) {\r\n            errorfield(\"shipping_phone_number\", \"Please enter a valid phone #\", true);\r\n            inputreferences['shipping_phone_number'].current.focus();\r\n            window.scrollBy(0, -65);\r\n            return;\r\n        }\r\n        else {\r\n            if (PhoneNumberMandatory) {\r\n                requiredFields[\"phone_number\"] = formfields.phone_number.value;\r\n                requiredFields[\"shipping_phone_number\"] = formfields.shipping_phone_number.value;\r\n            }\r\n\r\n            requiredFields[\"address2\"] = formfields.address2.value;\r\n            requiredFields[\"shipping_address2\"] = formfields.shipping_address2.value;\r\n\r\n        }\r\n\r\n        return requiredFields;\r\n    }\r\n\r\n\r\n    const submitPaymentForm = () => {\r\n\r\n        if (shopcartamounttoPay === 0 || props.amounttopay === 0) {\r\n            ZeroDollaroRGiftCardOnlyTransCall();\r\n            return;\r\n        }\r\n\r\n        if (CreditCardValue === \"NewCardDetails\") {\r\n\r\n            if (ProcessAndConfigurePaymentsWithoutCard()) {\r\n                if (genfunction.subproducttotal(events, cashless, null, (showTransFee ? transactionfee.transactionFee[0] : null), null, null, null, [], []) > 0) {\r\n                    requiredFields[\"month\"] = formfields.MonthSelect.value;\r\n                    requiredFields[\"year\"] = formfields.YearSelect.value;\r\n                    paymentsRef.current.SpreedlyTransactionCall(requiredFields);\r\n                }\r\n                else if ((refundType === 'AdditionalPayment' || refundType === \"\") && shopcartamounttoPay > 0) {\r\n                    requiredFields[\"month\"] = formfields.MonthSelect.value;\r\n                    requiredFields[\"year\"] = formfields.YearSelect.value;\r\n                    paymentsRef.current.SpreedlyTransactionCall(requiredFields);\r\n                }\r\n                else {\r\n                    paymentsRef.current.SpreedlyZeroDollarTransactionCall(requiredFields);\r\n                }\r\n            }\r\n        }\r\n        else {\r\n            if ((refundType == \"AdditionalPayment\" || refundType === \"\") && shopcartamounttoPay > 0) {\r\n\r\n                if (cashlesstotal === 0) {\r\n                    actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay);\r\n                }\r\n\r\n                if (cashlesstotal > 0) {\r\n                    actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay - cashlesstotal);\r\n                }\r\n            }\r\n\r\n            paymentsRef.current.SpreedlyCardOnFileTransaction();\r\n        }\r\n    }\r\n\r\n    const onClickPayBtn = useDebouncedCallback(submitPaymentForm, 5000, { leading: true });\r\n\r\n    const PayByGlobalPayment = () => {\r\n\r\n        if ((refundType == \"AdditionalPayment\" || refundType === \"\") && shopcartamounttoPay > 0) {\r\n\r\n            if (cashlesstotal === 0) {\r\n                actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay);\r\n            }\r\n\r\n            if (cashlesstotal > 0) {\r\n                actionShopCartSetAdditionalBookingAmount(dispatch, shopcartamounttoPay - cashlesstotal);\r\n            }\r\n        }\r\n\r\n        paymentsRef.current.PayByCardOnFile();\r\n    }\r\n\r\n    const onClickGPPayBtn = useDebouncedCallback(PayByGlobalPayment, 5000, { leading: true });\r\n\r\n    const ManageNonPaymentMethodTrans = () => {\r\n        if (CreditCardValue === \"\" && cashlesstotal > 0 && (parseFloat(shopcartamounttoPay) === parseFloat(cashlesstotal.toFixed(2)))) {\r\n            ZeroDollaroRGiftCardOnlyTransCall();\r\n        }\r\n    }\r\n\r\n\r\n    const CancelChanges = () => {\r\n        props.onClickHandler()\r\n    }\r\n\r\n    const reseterrorfield = () => {\r\n        actionResetFormErrorState(dispatch);\r\n    }\r\n\r\n    function validateEmail(email) {\r\n        var re = new RegExp(EmailRegex);\r\n        return re.test(String(email).toLowerCase());\r\n    }\r\n\r\n    function validatePhoneNum(phoneNum) {\r\n        let cusNumber = phoneNum.replace(/\\D/g, \"\");\r\n        if (cusNumber != \"\" && cusNumber.length < 10) {\r\n            return false;\r\n        }\r\n        return true;\r\n    }\r\n\r\n    const errorfield = (errorfield, errortext, errorstate) => {\r\n        actionSetFormErrorState(dispatch, errorfield, errortext, errorstate)\r\n    }\r\n\r\n    const checkfieldvalidation = (fields) => {\r\n        for (let prop in fields) {\r\n            if (fields[prop] == \"\") {\r\n\r\n                if (prop === 'phone_number') {\r\n                    errorfield(prop, PhoneNumberMessage, true);\r\n                }\r\n                else {\r\n                    errorfield(prop, prop + \" is required.\", true);\r\n                }\r\n\r\n                inputreferences[prop].current.focus();\r\n                window.scrollBy(0, -65);\r\n                return false\r\n            }\r\n            else {\r\n                errorfield(prop, \"\", false)\r\n            }\r\n        }\r\n        return true;\r\n    }\r\n\r\n    const billingAddressSameAsAbover = () => {\r\n\r\n        formfields.shipping_address1.value = formfields.address1.value;\r\n        formfields.shipping_address2.value = formfields.address2.value;\r\n        formfields.shipping_city.value = formfields.city.value;\r\n        formfields.shipping_state.value = formfields.state.value;\r\n        formfields.shipping_zip.value = formfields.zip.value;\r\n        formfields.shipping_country.value = formfields.country.value;\r\n        formfields.shipping_phone_number.value = formfields.phone_number.value;\r\n    }\r\n\r\n\r\n    return (\r\n\r\n        //Desktop and Laptop (smDown)\r\n        //Tablet (xsDown mdUp)\r\n        //Mobile (smUp)\r\n\r\n        <Grid item xs={12} md={7}>\r\n            <ErrorHandling msg={paymenttranstate.errormsg != \"\" ? paymenttranstate.errormsg : errorMsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n            <Hidden smDown>\r\n                <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: 5 }}>\r\n                    Credit Card Payment\r\n                </Typography>\r\n            </Hidden>\r\n\r\n            <Hidden xsDown mdUp>\r\n                <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: 7 }}>\r\n                    Credit Card Payment\r\n                </Typography>\r\n            </Hidden>\r\n\r\n            <Hidden smUp>\r\n                <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: 10 }}>\r\n                    Credit Card Payment\r\n                </Typography>\r\n            </Hidden>\r\n\r\n\r\n            <Card id=\"pform\" className={classes.box100per}>\r\n                <Grid item xs={12} md={12} align=\"center\" style={{ marginTop: \"15px\" }} >\r\n\r\n                    <FormControl component=\"fieldset\">\r\n                        <RadioGroup aria-label=\"creditcards\" name=\"selectoption\" value={CreditCardValue} onChange={handleChange} >\r\n                            <FormControlLabel\r\n                                value=\"UseCardOnFile\"\r\n                                control={<Radio />}\r\n                                label={\"Use (\" + (props.booking && props.booking.hasOwnProperty('PaymentDescription') ? props.booking.PaymentDescription : 'Visa XXXX-XXXX-XXXX-1234') + \") Card on File\"}\r\n                                disabled={!(props.booking && props.booking.hasOwnProperty('PaymentDescription') && props.booking.PaymentDescription.length > 0)\r\n                                    || (props.amounttopay <= 0 || shopcartamounttoPay <= 0)} />\r\n\r\n                            <FormControlLabel value=\"NewCardDetails\" control={<Radio />} label=\"Enter New Card Details\"\r\n                                // disabled={(props.amounttopay === 0 || shopcartamounttoPay === 0)}\r\n                                disabled={(props.amounttopay <= 0 || shopcartamounttoPay <= 0)}\r\n                            // || (refundType == \"GiftCardRefund\" || refundType === \"CreditCardRefund\" || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\")}\r\n\r\n                            />\r\n                        </RadioGroup>\r\n                    </FormControl>\r\n\r\n                </Grid>\r\n\r\n                {CreditCardValue === \"NewCardDetails\" || CreditCardValue === \"UseCardOnFile\" ?\r\n                    <CardContent>\r\n                        <Grid container>\r\n                            <Grid container item xs={12} className={shopcartamounttoPay === 0 ? classes.hideVisiblity : classes.visible}>\r\n\r\n                                <Grid container spacing={2}>\r\n\r\n                                    {CreditCardValue === \"NewCardDetails\" ?\r\n                                        <>\r\n                                            <Grid item xs={6}>\r\n                                                <TextField\r\n                                                    id=\"Fname\"\r\n                                                    label=\"First Name\"\r\n                                                    name=\"first_name\"\r\n                                                    fullWidth={true}\r\n                                                    autoFocus\r\n                                                    inputRef={inputreferences['first_name']}\r\n                                                    error={errorstate.first_name.errorstate}\r\n                                                    helperText={errorstate.first_name.errortext}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.first_name.value}\r\n                                                />\r\n                                            </Grid>\r\n                                            <Grid item xs={6}>\r\n                                                <TextField\r\n                                                    id=\"Lname\"\r\n                                                    label=\"Last Name\"\r\n                                                    name=\"last_name\"\r\n                                                    fullWidth={true}\r\n                                                    inputRef={inputreferences['last_name']}\r\n                                                    error={errorstate.last_name.errorstate}\r\n                                                    helperText={errorstate.last_name.errortext}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.last_name.value}\r\n                                                />\r\n                                            </Grid>\r\n                                            <Grid item xs={12} >\r\n                                                <TextField\r\n                                                    id=\"Email\"\r\n                                                    label=\"Email\"\r\n                                                    name=\"email\"\r\n                                                    fullWidth={true}\r\n                                                    inputRef={inputreferences['email']}\r\n                                                    error={errorstate.email.errorstate}\r\n                                                    helperText={errorstate.email.errortext}\r\n                                                    type=\"email\"\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.email.value}\r\n                                                />\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12}>\r\n                                                <TextField\r\n                                                    label={PhoneNumberMandatory ? \"Phone #\" : \"Phone # (Optional)\"}\r\n                                                    onChange={fieldhandleChange}\r\n                                                    value={formfields.phone_number.value}\r\n                                                    name=\"phone_number\"\r\n                                                    fullWidth={true}\r\n                                                    id=\"phone_number\"\r\n                                                    inputRef={inputreferences['phone_number']}\r\n                                                    error={errorstate.phone_number.errorstate}\r\n                                                    helperText={errorstate.phone_number.errortext}\r\n                                                    InputProps={{\r\n                                                        inputComponent: TextMaskCustom\r\n                                                    }}\r\n                                                >\r\n                                                </TextField>\r\n                                            </Grid>\r\n                                            {ShowFullAddressOnCheckout ?\r\n                                                <>\r\n\r\n                                                    <Grid item xs={12} md={12}>\r\n\r\n                                                        {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) ?\r\n\r\n                                                            <FormControl className={classes.box100per} error={errorstate.country.errorstate}>\r\n                                                                <Autocomplete filterOptions={filterOptions}\r\n                                                                    id=\"country\"\r\n                                                                    name=\"country\"\r\n                                                                    options={countryandstates}\r\n                                                                    fullWidth={true}\r\n                                                                    onChange={onChangeCountry}\r\n                                                                    autoHighlight\r\n                                                                    getOptionLabel={(option) => {\r\n                                                                        if (option.hasOwnProperty('Country')) {\r\n                                                                            return option.Country;\r\n                                                                        }\r\n                                                                        return option;\r\n                                                                    }}\r\n                                                                    value={formfields.country.value}\r\n                                                                    renderOption={(option) => (\r\n                                                                        <>\r\n                                                                            <img\r\n                                                                                loading=\"lazy\"\r\n                                                                                width=\"40\"\r\n                                                                                src={`https://flagcdn.com/w40/${option.ISOCode}.png`}\r\n                                                                                srcSet={`https://flagcdn.com/w80/${option.ISOCode}.png 2x`}\r\n                                                                                alt=\"\"\r\n                                                                                style={{ margin: \"10px\" }}\r\n                                                                            />\r\n                                                                            {` ${option.Country} `}</>\r\n                                                                    )}\r\n\r\n                                                                    style={{ width: \"100%\" }}\r\n                                                                    renderInput={(params) =>\r\n                                                                    (<TextField inputRef={inputreferences['country']} label=\"Country\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                                    />\r\n                                                                    )}\r\n\r\n                                                                />\r\n                                                                <FormHelperText>{errorstate.country.errortext}</FormHelperText>\r\n                                                            </FormControl>\r\n                                                            : \"\"}\r\n\r\n                                                    </Grid>\r\n                                                    <Grid item xs={12}>\r\n                                                        <TextField\r\n                                                            id=\"address1\"\r\n                                                            name=\"address1\"\r\n                                                            label=\"Address 1\"\r\n                                                            inputRef={inputreferences['address1']}\r\n                                                            fullWidth={true}\r\n                                                            error={errorstate.address1.errorstate}\r\n                                                            helperText={errorstate.address1.errortext}\r\n                                                            onChange={fieldhandleChange}\r\n                                                            value={formfields.address1.value}\r\n                                                        />\r\n                                                    </Grid>\r\n                                                    <Grid item xs={12}>\r\n                                                        <TextField\r\n                                                            id=\"address2\"\r\n                                                            name=\"address2\"\r\n                                                            label=\"Address 2 (Optional)\"\r\n                                                            fullWidth={true}\r\n                                                            error={errorstate.address2.errorstate}\r\n                                                            helperText={errorstate.address2.errortext}\r\n                                                            onChange={fieldhandleChange}\r\n                                                            value={formfields.address2.value}\r\n                                                        />\r\n                                                    </Grid>\r\n\r\n                                                    <Grid item xs={12} md={12}>\r\n                                                        <TextField\r\n                                                            id=\"city\"\r\n                                                            label={isShowCountryFields(\"CityText\")}\r\n                                                            name=\"city\"\r\n                                                            inputRef={inputreferences['city']}\r\n                                                            fullWidth={true}\r\n                                                            error={errorstate.city.errorstate}\r\n                                                            helperText={errorstate.city.errortext}\r\n                                                            onChange={fieldhandleChange}\r\n                                                            value={formfields.city.value}\r\n                                                        />\r\n                                                    </Grid>\r\n\r\n                                                    <Grid item xs={12} md={isShowCountryFields(\"ShowPostalCode\") ? 6 : 12}>\r\n\r\n                                                        {isShowCountryFields(\"ShowState\") ?\r\n                                                            <FormControl className={classes.box100per} error={errorstate.state.errorstate}>\r\n\r\n                                                                <Autocomplete filterOptions={filterOptions}\r\n                                                                    id=\"state\"\r\n                                                                    name=\"state\"\r\n                                                                    autoHighlight\r\n                                                                    options={\r\n                                                                        formfields.country.value ? countryandstates.filter(\r\n                                                                            x => x.Country == formfields.country.value).map(o => o.hasOwnProperty(\"Picklist\") ? o.Picklist : [])[0]\r\n                                                                            : []\r\n                                                                    }\r\n                                                                    fullWidth={true}\r\n                                                                    onChange={onChangeState}\r\n                                                                    getOptionLabel={(option) => {\r\n                                                                        if (option.hasOwnProperty('State')) {\r\n                                                                            return option.State;\r\n                                                                        }\r\n                                                                        return option;\r\n                                                                    }}\r\n                                                                    value={formfields.state.value}\r\n                                                                    style={{ width: \"100%\" }}\r\n                                                                    renderInput={(params) =>\r\n                                                                    (<TextField inputRef={inputreferences['state']} label=\"State\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                                    />\r\n                                                                    )}\r\n\r\n                                                                />\r\n                                                                <FormHelperText>{errorstate.state.errortext}</FormHelperText>\r\n                                                            </FormControl>\r\n                                                            : \"\"}\r\n\r\n                                                    </Grid>\r\n                                                </>\r\n                                                : \"\"}\r\n                                            <Grid item xs={12} md={isShowCountryFields(\"ShowState\") ? 6 : 12}>\r\n                                                {isShowCountryFields(\"ShowPostalCode\") ?\r\n\r\n                                                    <TextField\r\n                                                        id=\"zip\"\r\n                                                        label={isShowCountryFields(\"PostalCodeName\")}\r\n                                                        name=\"zip\"\r\n                                                        inputRef={inputreferences['zip']}\r\n                                                        fullWidth={true}\r\n                                                        error={errorstate.zip.errorstate}\r\n                                                        helperText={errorstate.zip.errortext}\r\n                                                        onChange={fieldhandleChange}\r\n                                                        value={formfields.zip.value}\r\n                                                    />\r\n\r\n                                                    : \"\"}\r\n                                            </Grid>\r\n                                            {ShowFullAddressOnCheckout ?\r\n                                                <>\r\n                                                    <Grid item xs={12}>\r\n                                                        <FormControlLabel\r\n                                                            control={\r\n                                                                <Checkbox\r\n                                                                    inputProps={{ 'aria-label': 'primary checkbox' }}\r\n                                                                    name=\"checkboxBillingAddress\"\r\n                                                                    color=\"primary\"\r\n                                                                    onChange={() => changeBillingAddress()}\r\n                                                                    checked={formfields.billingAddressSame.value}\r\n                                                                />\r\n                                                            }\r\n                                                            label=\"Billing Address same as above\"\r\n                                                        />\r\n                                                    </Grid>\r\n\r\n                                                    {formfields.billingAddressSame.value == false ?\r\n                                                        <>\r\n                                                            <Grid item xs={12}>\r\n                                                                <Typography variant=\"h4\">Billing Address</Typography>\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12}>\r\n                                                                <TextField\r\n                                                                    label={PhoneNumberMandatory ? \"Phone #\" : \"Phone # (Optional)\"}\r\n                                                                    onChange={fieldhandleChange}\r\n                                                                    value={formfields.shipping_phone_number.value}\r\n                                                                    name=\"shipping_phone_number\"\r\n                                                                    fullWidth={true}\r\n                                                                    id=\"shipping_phone_number\"\r\n                                                                    inputRef={inputreferences['shipping_phone_number']}\r\n                                                                    error={errorstate.shipping_phone_number.errorstate}\r\n                                                                    helperText={errorstate.shipping_phone_number.errortext}\r\n                                                                    InputProps={{\r\n                                                                        inputComponent: TextMaskCustom\r\n                                                                    }}\r\n                                                                >\r\n                                                                </TextField>\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12} md={12}>\r\n                                                                {genfunction.IsObjectNotNullOrEmptyOrUndefined(countryandstates) ?\r\n\r\n                                                                    <FormControl className={classes.formControl + \" \" + classes.box100per} error={errorstate.shipping_country.errorstate}>\r\n\r\n                                                                        <Autocomplete filterOptions={filterOptions}\r\n                                                                            id=\"shipping_country\"\r\n                                                                            name=\"shipping_country\"\r\n                                                                            options={countryandstates}\r\n                                                                            fullWidth={true}\r\n                                                                            onChange={onChangeShippingCountry}\r\n                                                                            autoHighlight\r\n                                                                            getOptionLabel={(option) => {\r\n                                                                                if (option.hasOwnProperty('Country')) {\r\n                                                                                    return option.Country;\r\n                                                                                }\r\n                                                                                return option;\r\n                                                                            }}\r\n                                                                            value={formfields.shipping_country.value}\r\n                                                                            renderOption={(option) => (\r\n                                                                                <>\r\n                                                                                    <img\r\n                                                                                        loading=\"lazy\"\r\n                                                                                        width=\"40\"\r\n                                                                                        src={`https://flagcdn.com/w40/${option.ISOCode}.png`}\r\n                                                                                        srcSet={`https://flagcdn.com/w80/${option.ISOCode}.png 2x`}\r\n                                                                                        alt=\"\"\r\n                                                                                        style={{ margin: \"10px\" }}\r\n                                                                                    />\r\n                                                                                    {` ${option.Country} `}</>\r\n                                                                            )}\r\n\r\n                                                                            style={{ width: \"100%\" }}\r\n                                                                            renderInput={(params) =>\r\n                                                                            (<TextField inputRef={inputreferences['shipping_country']} label=\"Country\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                                            />\r\n                                                                            )}\r\n\r\n                                                                        />\r\n                                                                        <FormHelperText>{errorstate.shipping_country.errortext}</FormHelperText>\r\n                                                                    </FormControl>\r\n                                                                    : \"\"}\r\n\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12}>\r\n                                                                <TextField\r\n                                                                    id=\"shipping_address1\"\r\n                                                                    name=\"shipping_address1\"\r\n                                                                    label=\"Address 1\"\r\n                                                                    inputRef={inputreferences['shipping_address1']}\r\n                                                                    fullWidth={true}\r\n                                                                    error={errorstate.shipping_address1.errorstate}\r\n                                                                    helperText={errorstate.shipping_address1.errortext}\r\n                                                                    onChange={fieldhandleChange}\r\n                                                                    value={formfields.shipping_address1.value}\r\n                                                                />\r\n                                                            </Grid>\r\n                                                            <Grid item xs={12}>\r\n                                                                <TextField\r\n                                                                    id=\"shipping_address2\"\r\n                                                                    name=\"shipping_address2\"\r\n                                                                    label=\"Address 2 (Optional)\"\r\n                                                                    fullWidth={true}\r\n                                                                    error={errorstate.shipping_address2.errorstate}\r\n                                                                    helperText={errorstate.shipping_address2.errortext}\r\n                                                                    onChange={fieldhandleChange}\r\n                                                                    value={formfields.shipping_address2.value}\r\n                                                                />\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12} md={12}>\r\n                                                                <TextField\r\n                                                                    id=\"shipping_city\"\r\n                                                                    label={isShowShippingCountryFields(\"CityText\")}\r\n                                                                    name=\"shipping_city\"\r\n                                                                    inputRef={inputreferences['shipping_city']}\r\n                                                                    fullWidth={true}\r\n                                                                    error={errorstate.shipping_city.errorstate}\r\n                                                                    helperText={errorstate.shipping_city.errortext}\r\n                                                                    onChange={fieldhandleChange}\r\n                                                                    value={formfields.shipping_city.value}\r\n                                                                />\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12} md={isShowShippingCountryFields(\"ShowPostalCode\") ? 6 : 12}>\r\n                                                                {isShowShippingCountryFields(\"ShowState\") ?\r\n\r\n                                                                    <FormControl className={classes.formControl + \" \" + classes.box100per} error={errorstate.shipping_state.errorstate}>\r\n\r\n                                                                        <Autocomplete filterOptions={filterOptions}\r\n                                                                            id=\"shipping_state\"\r\n                                                                            name=\"shipping_state\"\r\n                                                                            autoHighlight\r\n                                                                            options={\r\n                                                                                formfields.shipping_country.value ? countryandstates.filter(\r\n                                                                                    x => x.Country == formfields.shipping_country.value).map(o => o.hasOwnProperty(\"Picklist\") ? o.Picklist : [])[0]\r\n                                                                                    : []\r\n                                                                            }\r\n                                                                            fullWidth={true}\r\n                                                                            onChange={onChangeShippingState}\r\n                                                                            getOptionLabel={(option) => {\r\n                                                                                if (option.hasOwnProperty('State')) {\r\n                                                                                    return option.State;\r\n                                                                                }\r\n                                                                                return option;\r\n                                                                            }}\r\n                                                                            value={formfields.shipping_state.value}\r\n                                                                            style={{ width: \"100%\" }}\r\n                                                                            renderInput={(params) =>\r\n                                                                            (<TextField inputRef={inputreferences['shipping_state']} label=\"State\" variant='outlined' className={classes.clearButton}{...params}\r\n                                                                            />\r\n                                                                            )}\r\n\r\n                                                                        />\r\n                                                                        <FormHelperText>{errorstate.shipping_state.errortext}</FormHelperText>\r\n                                                                    </FormControl>\r\n                                                                    : \"\"}\r\n                                                            </Grid>\r\n\r\n                                                            <Grid item xs={12} md={isShowShippingCountryFields(\"ShowState\") ? 6 : 12}>\r\n                                                                {isShowShippingCountryFields(\"ShowPostalCode\") ?\r\n\r\n                                                                    <TextField\r\n                                                                        id=\"shipping_zip\"\r\n                                                                        label={isShowShippingCountryFields(\"PostalCodeName\")}\r\n                                                                        name=\"shipping_zip\"\r\n                                                                        inputRef={inputreferences['shipping_zip']}\r\n                                                                        fullWidth={true}\r\n                                                                        error={errorstate.shipping_zip.errorstate}\r\n                                                                        helperText={errorstate.shipping_zip.errortext}\r\n                                                                        onChange={fieldhandleChange}\r\n                                                                        value={formfields.shipping_zip.value}\r\n                                                                    />\r\n                                                                    : \"\"}\r\n                                                            </Grid>\r\n\r\n                                                        </>\r\n                                                        : null}\r\n                                                </> : \"\"}\r\n                                        </>\r\n                                        : null}\r\n\r\n                                    {PaymentMethodType === \"Spreedly\" ?\r\n                                        <>\r\n                                            <Grid item xs={12} className={CreditCardValue === \"UseCardOnFile\" ? classes.hideVisiblity : classes.visible}>\r\n                                                <Payments type={PaymentMethodType} ref={paymentsRef}\r\n                                                    showFreeTkt={false}\r\n                                                    managemyBooking={true}\r\n                                                    mmbPayBy={CreditCardValue}\r\n                                                    ValidatePaymentFields={ProcessAndConfigurePaymentsWithoutCard}\r\n                                                    AdditionBooking={refundType === 'AdditionalPayment' ? true : false}\r\n                                                />\r\n                                            </Grid>\r\n\r\n                                            {ApplyTransactionFee && transFeeCheckBox() === true && !(props.amounttopay <= 0 || shopcartamounttoPay <= 0)\r\n                                                ?\r\n                                                < Grid item xs={12} >\r\n                                                    <Checkbox\r\n                                                        color=\"primary\"\r\n                                                        checked={showTransFee}\r\n                                                        onChange={transFeeCheckHandler}\r\n                                                        inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                                    />\r\n                                                    <Typography color=\"textSecondary\" component=\"span\" >\r\n                                                        {GetTransOptionalText()}\r\n                                                    </Typography>\r\n                                                </Grid>\r\n                                                : null}\r\n\r\n                                            <Grid item xs={12}>\r\n                                                <Checkbox\r\n                                                    color=\"primary\"\r\n                                                    checked={tncchecked}\r\n                                                    onChange={tnccheckeHandle}\r\n                                                    inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                                />\r\n                                                <Typography color=\"textSecondary\" component=\"span\" >\r\n                                                    {TermsnConditionCheckBoxText}\r\n                                                    <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                                                </Typography>\r\n\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12}>\r\n                                                {tncchecked && EnableAlternateMerchantOnline && (orderProducts && orderProducts.length < 1) ? <MultiPayments /> : null}\r\n                                            </Grid>\r\n\r\n                                            <Grid item xs={12} align=\"center\" style={{ marginTop: \"10px\" }}>\r\n\r\n                                                <Grid xs={12}>\r\n\r\n                                                    <Button\r\n                                                        disabled={stopUserToPurchase === true || onClickPayBtn.isPending() || !((tncchecked && CreditCardValue !== \"\")\r\n                                                            || (tncchecked && CreditCardValue === \"\" && shopcartamounttoPay <= 0)\r\n                                                            || (tncchecked && props.amounttopay <= 0)) || errorstate.cvv.errorstate}\r\n                                                        variant=\"contained\"\r\n                                                        className={classes.primarycolor + \" \" + classes.box95per}\r\n                                                        onClick={onClickPayBtn} >\r\n                                                        Pay</Button>\r\n\r\n                                                </Grid>\r\n                                                <Grid xs={12}>\r\n                                                    <Button variant=\"outlined\"\r\n                                                        style={{ marginTop: \"10px\" }}\r\n                                                        className={classes.primarycolor + \" \" + classes.box95per} onClick={CancelChanges} >Cancel Changes</Button>\r\n                                                </Grid>\r\n                                            </Grid>\r\n                                        </>\r\n                                        :\r\n                                        <>\r\n\r\n                                            <Grid item xs={12} className={CreditCardValue === \"UseCardOnFile\" ? 'hidden' : classes.visible}>\r\n                                                <Payments type={PaymentMethodType} ref={paymentsRef}\r\n                                                    showFreeTkt={false}\r\n                                                    managemyBooking={true}\r\n                                                    mmbPayBy={CreditCardValue}\r\n                                                    ValidatePaymentFields={ProcessAndConfigurePaymentsWithoutCard}\r\n                                                    AdditionBooking={refundType === 'AdditionalPayment' ? true : false}\r\n                                                />\r\n                                            </Grid>\r\n\r\n                                            {CreditCardValue === \"UseCardOnFile\" ?\r\n                                                <>\r\n                                                    {ApplyTransactionFee && transFeeCheckBox() === true && !(props.amounttopay <= 0 || shopcartamounttoPay <= 0)\r\n                                                        ?\r\n                                                        < Grid item xs={12} >\r\n                                                            <Checkbox\r\n                                                                color=\"primary\"\r\n                                                                checked={showTransFee}\r\n                                                                onChange={transFeeCheckHandler}\r\n                                                                inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                                            />\r\n                                                            <Typography color=\"textSecondary\" component=\"span\" >\r\n                                                                {GetTransOptionalText()}\r\n                                                            </Typography>\r\n                                                        </Grid>\r\n                                                        : null}\r\n\r\n                                                    <Grid item xs={12}>\r\n                                                        <Checkbox\r\n                                                            color=\"primary\"\r\n                                                            checked={tncchecked}\r\n                                                            onChange={tnccheckeHandle}\r\n                                                            inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                                        />\r\n                                                        <Typography color=\"textSecondary\" component=\"span\" >\r\n                                                            {TermsnConditionCheckBoxText}\r\n                                                            <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                                                        </Typography>\r\n                                                    </Grid>\r\n\r\n                                                    <Grid item xs={12}>\r\n                                                        {tncchecked && EnableAlternateMerchantOnline && (orderProducts && orderProducts.length < 1) ? <MultiPayments /> : null}\r\n                                                    </Grid>\r\n\r\n                                                    <Grid xs={12} align=\"center\">\r\n                                                        <Button\r\n                                                            disabled={stopUserToPurchase == true || onClickGPPayBtn.isPending() || !((tncchecked && CreditCardValue !== \"\") || (tncchecked && CreditCardValue === \"\" && shopcartamounttoPay === 0) || (tncchecked && props.amounttopay === 0))}\r\n                                                            variant=\"contained\" className={classes.primarycolor + \" \" + classes.box95per} onClick={onClickGPPayBtn} >Pay</Button>\r\n                                                    </Grid>\r\n                                                </>\r\n                                                : null}\r\n\r\n                                            <Grid xs={12} align=\"center\">\r\n                                                <Button\r\n                                                    variant=\"outlined\"\r\n                                                    className={classes.primarycolor + \" \" + classes.box95per + \" \" + (CreditCardValue.length > 0 && CreditCardValue == \"NewCardDetails\" ? classes.cancelbtnconfig : classes.cancelbtnconfig10per)}\r\n                                                    onClick={CancelChanges} >Cancel Changes</Button>\r\n                                            </Grid>\r\n                                        </>\r\n                                    }\r\n\r\n                                </Grid>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </CardContent>\r\n                    : null}\r\n\r\n                {CreditCardValue === \"\" ?\r\n                    <>\r\n                        {ApplyTransactionFee && transFeeCheckBox() === true && !(props.amounttopay <= 0 || shopcartamounttoPay <= 0)\r\n                            ?\r\n                            < Grid item xs={12} >\r\n                                <Checkbox\r\n                                    color=\"primary\"\r\n                                    checked={showTransFee}\r\n                                    onChange={transFeeCheckHandler}\r\n                                    inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                                />\r\n                                <Typography color=\"textSecondary\" component=\"span\" >\r\n                                    {GetTransOptionalText()}\r\n                                </Typography>\r\n                            </Grid>\r\n                            : null}\r\n\r\n                        <Grid item xs={12}>\r\n                            <Checkbox\r\n                                color=\"primary\"\r\n                                checked={tncchecked}\r\n                                onChange={tnccheckeHandle}\r\n                                inputProps={{ 'aria-label': 'secondary checkbox' }}\r\n                            />\r\n                            <Typography color=\"textSecondary\" component=\"span\" >\r\n                                {TermsnConditionCheckBoxText}\r\n                                <Link href=\"#\" onClick={() => { setopentnc(true) }} > Terms and Conditions </Link>\r\n                            </Typography>\r\n                        </Grid>\r\n\r\n                        <Grid xs={12} align=\"center\">\r\n                            <Button\r\n                                disabled={!(tncchecked && CreditCardValue === \"\" && shopcartamounttoPay > 0)}\r\n                                variant=\"contained\" className={classes.primarycolor + \" \" + classes.box95per} onClick={ManageNonPaymentMethodTrans} >Pay</Button>\r\n                        </Grid>\r\n\r\n                        <Grid xs={12} align=\"center\">\r\n                            <Button\r\n                                variant=\"outlined\"\r\n                                className={classes.primarycolor + \" \" + classes.box95per}\r\n                                style={{ marginTop: 10 }}\r\n                                onClick={CancelChanges} >Cancel Changes</Button>\r\n                        </Grid>\r\n                    </>\r\n                    :\r\n                    null\r\n                }\r\n\r\n                <DialogeBox open={opentnc} title={\"Terms and Conditions\"}\r\n                    message={getTNC()}\r\n                    button1text={\"Close\"}\r\n                    button1clickhandler={() => { setopentnc(false) }}></DialogeBox>\r\n            </Card>\r\n        </Grid >\r\n    );\r\n};\r\n\r\nexport default CreditCardPayment;\r\n","import React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { genfunction } from 'helpers'\r\nimport CancelIcon from '@material-ui/icons/Cancel'\r\nimport {\r\n    Card, CardContent, CardHeader, Grid, IconButton,\r\n    Table, TableBody, TableCell, TableRow,\r\n} from '@material-ui/core';\r\n\r\nimport { actionDeleteGiftCardHold } from 'actions';\r\nimport { actionGetTransactionFee } from 'actions';\r\n\r\nconst { TransactionFeeProductID, ApplyTransactionFee, Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px',\r\n    },\r\n    labelbold: {\r\n        fontWeight: \"bold\",\r\n        fontSize: \"18px\",\r\n\r\n    },\r\n    textaligncenter: {\r\n        textAlign: \"center\"\r\n    },\r\n\r\n    cashlessvalue: {\r\n        color: theme.palette.error.main\r\n    },\r\n    couponAmount: {\r\n        color: 'red'\r\n    }\r\n}));\r\n\r\nconst PayableCardMMB = props => {\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    let enteredAmountToPay = useSelector(state => state.reducerShopCart.enteredAmountToPay);\r\n    let shopcartamounttoPay = useSelector(state => state.reducerShopCart.mmbAmountToPay);\r\n    let refundType = useSelector(state => state.reducerShopCart.refundType);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const booking = useSelector(state => state.reducerBooking).booking[0];\r\n\r\n    let bookingName = booking.BookingName.split(\"Event:\")[1] ? booking.BookingName.split(\"Event:\")[1] : booking.BookingName;\r\n\r\n\r\n    const removecashlesskhandler = (GiftcardHoldRef) => {\r\n        actionDeleteGiftCardHold(dispatch, GiftcardHoldRef);\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (ApplyTransactionFee && TransactionFeeProductID > 0) {\r\n            actionGetTransactionFee(dispatch, TransactionFeeProductID, 'transactionfee');\r\n        }\r\n    }, [])\r\n\r\n\r\n    return (\r\n        <Grid container justify=\"center\"  >\r\n            <Grid item xs={12} md={7} >\r\n                <Card>\r\n                    <CardHeader className={classes.tourheaderbox + ' ' + classes.textaligncenter}\r\n                        title=\"To Pay\"\r\n                        titleTypographyProps={{ color: \"inherit\", variant: 'h3' }}\r\n                    />\r\n                    <CardContent>\r\n                        <Grid container>\r\n                            <Grid container item xs={12} >\r\n                                <Table size=\"small\" className={classes.table} aria-label=\"spanning table\">\r\n                                    <TableBody>\r\n\r\n                                        <TableRow key={booking.TourEventID} >\r\n                                            <TableCell>{bookingName}</TableCell>\r\n                                            <TableCell align=\"right\">{genfunction.ccyFormat(enteredAmountToPay)}</TableCell>\r\n                                        </TableRow>\r\n\r\n                                        {showTransFee && transactionfee.transactionFee[0] && transactionfee.transactionFee[0].Price > 0 && transactionfee.transactionFee !== \"nocontent\" ?\r\n                                            <TableRow key={transactionfee.transactionFee[0].Price}>\r\n\r\n                                                <TableCell className={classes.tablecell} align=\"left\">\r\n                                                    {transactionfee.transactionFee[0].ProductName}\r\n                                                </TableCell>\r\n                                                <TableCell align=\"right\">\r\n\r\n                                                    {(refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0)) ?\r\n                                                        genfunction.ccyFormat(parseFloat(genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal))) :\r\n                                                        genfunction.ccyFormat(parseFloat(genfunction.TransactionFee(events, null, transactionfee.transactionFee[0], cashless, null, null, null, null, null)))}\r\n\r\n                                                </TableCell>\r\n                                            </TableRow> : null}\r\n\r\n                                        {cashless.map(objcashless => (\r\n                                            <TableRow key={objcashless.GiftcardNo}>\r\n                                                <TableCell>\r\n                                                    <IconButton\r\n                                                        edge=\"start\"\r\n                                                        size=\"small\"\r\n                                                        onClick={() => removecashlesskhandler(objcashless.GiftcardHoldRef)}\r\n                                                    >\r\n                                                        <CancelIcon color={\"error\"} />\r\n                                                    </IconButton>\r\n                                                    {'Giftcard Applied - ' + genfunction.maskGiftCardNo(objcashless.GiftcardNo)}</TableCell>\r\n                                                <TableCell align=\"right\" className={classes.cashlessvalue}>{'-' + genfunction.ccyFormat(objcashless.HoldAmount)}</TableCell>\r\n                                            </TableRow>\r\n                                        ))}\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.labelbold}>Amount To Pay</TableCell>\r\n                                            <TableCell className={classes.labelbold} align=\"right\">{Currency}{props.AmountToPay}</TableCell>\r\n                                        </TableRow>\r\n                                    </TableBody>\r\n                                </Table>\r\n                            </Grid>\r\n                        </Grid>\r\n                    </CardContent>\r\n                </Card>\r\n            </Grid>\r\n\r\n        </Grid>\r\n    );\r\n};\r\n\r\nPayableCardMMB.propTypes = {\r\n    products: PropTypes.array.isRequired\r\n};\r\n\r\nexport default PayableCardMMB;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Container, Grid, Typography, TextField, Hidden } from '@material-ui/core';\r\nimport CreditCardPayment from '../components/CreditCardPayment';\r\nimport { genfunction } from '../../../helpers';\r\nimport { actionAddGiftCardHold, actionResetGiftCardHoldState, actionRecalculateGiftCardHold } from 'actions';\r\nimport ErrorHandling from '../../../components/ErrorHandling/ErrorHandling';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { actionShopCardAddGiftCard, actionShopCartSetMmbAmountToPay, actionShopCartSetEnteredAmountToPay } from 'actions';\r\nimport { withRouter } from 'react-router';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../../actions/actionAppLoader';\r\nimport PayableCardMMB from '../../../views/Checkout/components/PayableCardMMB';\r\nconst { AmountToPayLength, Currency } = window['runConfig'];\r\n\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(3)\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    }, tourheaderboxMobView: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '80px'\r\n    }, hideGrid: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst MakePayment = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const [giftCardno, setgiftCardno] = useState(\"\");\r\n    const [errormsg, seterrormsg] = useState(\"\");\r\n    const { GiftCardHold, GiftCardHoldLoading, GiftCardHoldError } = useSelector(state => state.reducerGiftCardHold);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n    const currentDateEvent = useSelector(state => state.reducerExtraItems.extraItem);\r\n    const managebkngTicketsModify = useSelector(state => state.reducerShopCart.managebookingticketsmodification);\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n    let shopcartamounttoPay = useSelector(state => state.reducerShopCart.mmbAmountToPay);\r\n    let refundType = useSelector(state => state.reducerShopCart.refundType);\r\n    const showTransFee = useSelector(state => state.reducerShopCart.showTransactionFee);\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    let enteredAmountToPay = useSelector(state => state.reducerShopCart.enteredAmountToPay);\r\n\r\n    const [amounttopayTxtBox, setamounttopayTxtBox] = useState(0);\r\n\r\n    let amountaftercoupon = genfunction.subproducttotal(cartEvents, null, null, null, null, null, null, [], []);\r\n\r\n    const CheckGiftCard = (giftcardNo) => {\r\n        if (shopcartamounttoPay <= 0) {\r\n            seterrormsg('Please add item in cart before applying Giftcard.')\r\n        }\r\n        else if (giftCardno == '') {\r\n            seterrormsg('Please enter Giftcard number.')\r\n        }\r\n        else {\r\n            actionShopCartSetMmbAmountToPay(dispatch, shopcartamounttoPay);\r\n            actionAddGiftCardHold(dispatch, giftcardNo);\r\n            setgiftCardno('');\r\n        }\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        actionResetGiftCardHoldState(dispatch);\r\n        setgiftCardno('');\r\n        seterrormsg('');\r\n    }\r\n\r\n    const openerrorpopup = () => {\r\n        return (errormsg != \"\")\r\n    }\r\n\r\n\r\n    //Gift Card Handling\r\n\r\n    useEffect(() => {\r\n        seterrormsg(GiftCardHoldError)\r\n    }, [GiftCardHoldError]);\r\n\r\n    useEffect(() => {\r\n        if (GiftCardHoldLoading)\r\n            actionStartAppLoader(dispatch)\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [GiftCardHoldLoading]);\r\n\r\n    useEffect(() => {\r\n        if (GiftCardHold.GiftcardHoldRef)\r\n            ValidateAndAddGiftCard(GiftCardHold)\r\n    }, [GiftCardHold]);\r\n\r\n    const ValidateAndAddGiftCard = (giftcardholdresponse) => {\r\n        if (giftcardholdresponse.HoldAmount == 0) {\r\n            seterrormsg('Giftcard is already consumed');\r\n        }\r\n        else {\r\n            actionShopCardAddGiftCard(dispatch, giftcardholdresponse);\r\n            actionResetGiftCardHoldState(dispatch);\r\n        }\r\n    }\r\n    useEffect(() => {\r\n        let total;\r\n        let isTransFeeApplicable = showTransFee && transactionfee.transactionFee[0] && transactionfee.transactionFee[0].PriceIsAPercentage ? transactionfee.transactionFee[0] : undefined;\r\n\r\n        if (cashlesstotal > 0 && isTransFeeApplicable) {\r\n            total = AmountToPayCalCulation();\r\n            if (parseFloat(total) === 0)\r\n                actionShopCartSetMmbAmountToPay(dispatch, enteredAmountToPay);\r\n            else\r\n                actionShopCartSetMmbAmountToPay(dispatch, genfunction.AddCashlessAndAdditionalPayment(cashless, parseFloat(total)));\r\n        }\r\n\r\n    }, [cashless]);\r\n\r\n    useEffect(() => {\r\n        RecalculationGiftCard();\r\n    }, [showTransFee])\r\n\r\n    const RecalculationGiftCard = () => {\r\n        if (enteredAmountToPay > 0 && cashless.length > 0) {\r\n            actionRecalculateGiftCardHold(dispatch);\r\n        }\r\n    }\r\n\r\n    const totalpaid = () => {\r\n        let total = 0;\r\n        let actualTotal = 0;\r\n        let newTotal = 0;\r\n        let eventTotal = cartEvents && cartEvents.length ? amountaftercoupon : currentDateEvent.TotalAmount ? currentDateEvent.TotalAmount : 0;\r\n\r\n        if (props.booking && props.booking && props.booking.BookingPayments && props.booking.BookingPayments.length > 0 && props.booking.BookingProducts\r\n            && props.booking.BookingProducts.length > 0) {\r\n\r\n            actualTotal = props.booking.BookingProducts.map(({ ProductLinePriceInclTax }) => ProductLinePriceInclTax).reduce((sum, i) => sum + i, 0);\r\n            if (managebkngTicketsModify) {\r\n                props.booking.BookingProducts.map(prod => {\r\n                    if (prod.hasOwnProperty('isModify') && prod.isModify) {\r\n                        newTotal += prod.newQuantity * prod.Price;\r\n                    }\r\n                    else {\r\n                        newTotal += prod.ProductLinePriceInclTax;\r\n                    }\r\n                })\r\n            }\r\n            total = parseFloat(((actualTotal - newTotal) * 100) / 100);\r\n        }\r\n\r\n        return (eventTotal - total).toFixed(2);\r\n\r\n    }\r\n\r\n    const totalbookingcost = () => {\r\n        let total = 0;\r\n        if (props.booking && props.booking.hasOwnProperty('BookingProducts') && props.booking.BookingProducts.length > 0) {\r\n            total = props.booking.BookingProducts.map(({ ProductLinePriceInclTax }) => ProductLinePriceInclTax).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const totalbookingpaid = () => {\r\n        let totalpaid = 0;\r\n\r\n        if (props.booking && props.booking.hasOwnProperty('BookingPayments') && props.booking.BookingPayments.length > 0) {\r\n            totalpaid = props.booking.BookingPayments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return totalpaid;\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (managebkngTicketsModify || refundType === 'AdditionalPayment' || (refundType === \"\" && shopcartamounttoPay > 0)) {\r\n            setamounttopayTxtBox(parseFloat(enteredAmountToPay > 0 ? enteredAmountToPay : shopcartamounttoPay).toFixed(2));\r\n            actionShopCartSetMmbAmountToPay(dispatch, genfunction.Rounded(shopcartamounttoPay));\r\n        }\r\n        else {\r\n\r\n            setamounttopayTxtBox(parseFloat(totalpaid()));\r\n            actionShopCartSetMmbAmountToPay(dispatch, parseFloat(totalpaid()));\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        actionShopCartSetEnteredAmountToPay(dispatch, parseFloat(amounttopayTxtBox));\r\n    }, [amounttopayTxtBox])\r\n\r\n    const amounttopayTxtUpdate = (event) => {\r\n\r\n        let totalcst = totalbookingcost();\r\n        let totalpd = totalbookingpaid();\r\n        let txtBoxValue = parseFloat(event.target.value);\r\n\r\n        if (txtBoxValue > 0 && (txtBoxValue <= genfunction.Rounded(totalcst - totalpd))) {\r\n\r\n            setamounttopayTxtBox(genfunction.Rounded(txtBoxValue));\r\n\r\n            let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], txtBoxValue, cashlesstotal);\r\n            actionShopCartSetMmbAmountToPay(dispatch, showTransFee ? genfunction.Rounded(txtBoxValue + transFee) : genfunction.Rounded(txtBoxValue));\r\n        }\r\n        else {\r\n            setamounttopayTxtBox(0);\r\n            actionShopCartSetMmbAmountToPay(dispatch, 0);\r\n        }\r\n    }\r\n\r\n    const AmountToPayCalCulation = () => {\r\n        let total = 0;\r\n        if (refundType === \"GiftCardRefund\" || refundType === \"CreditCardRefund\" || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\") {\r\n            total = shopcartamounttoPay;\r\n        }\r\n        else if (refundType === \"AdditionalPayment\" || (refundType === \"\" && shopcartamounttoPay > 0)) {\r\n\r\n            if (showTransFee) {\r\n\r\n                let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], enteredAmountToPay, cashlesstotal);\r\n                total = genfunction.Rounded(enteredAmountToPay + transFee) - cashlesstotal;\r\n\r\n            }\r\n            else {\r\n\r\n                total = enteredAmountToPay - cashlesstotal;\r\n            }\r\n\r\n        }\r\n        else {\r\n            total = shopcartamounttoPay - cashlesstotal;\r\n        }\r\n\r\n        return parseFloat(total).toFixed(2);\r\n    }\r\n\r\n    return (\r\n\r\n        //Desktop and Laptop (smDown)\r\n        //Tablet (xsDown mdUp)\r\n        //Mobile (smUp)\r\n\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errormsg} open={openerrorpopup()} handleclose={errorcancelhandle} />\r\n\r\n            <Grid container justify=\"center\" spacing={1} >\r\n                <Grid item xs={12} md={7}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: 5 }}>\r\n                            {props.booking !== undefined && props.booking.hasOwnProperty('BookingName') ? props.booking.BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: 7 }}>\r\n                            {props.booking !== undefined && props.booking.hasOwnProperty('BookingName') ? props.booking.BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: 10, marginTop: 10, height: 'auto' }}>\r\n                            {props.booking !== undefined && props.booking.hasOwnProperty('BookingName') ? props.booking.BookingName : ''}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Make Payment for Booking ID {props.booking && props.booking.hasOwnProperty('BookingID') ? props.booking.BookingID : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Make Payment for Booking ID {props.booking && props.booking.hasOwnProperty('BookingID') ? props.booking.BookingID : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Make Payment for Booking ID {props.booking && props.booking.hasOwnProperty('BookingID') ? props.booking.BookingID : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Total : {genfunction.ccyFormat(totalbookingcost())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                            Total Paid : {genfunction.ccyFormat(totalbookingpaid())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Total Paid : {genfunction.ccyFormat(totalbookingpaid())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Total Paid : {genfunction.ccyFormat(totalbookingpaid())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Grid item xs={12} md={12} style={{\r\n                        display: 'flex',\r\n                        alignItems: 'center'\r\n                    }}>\r\n\r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                Amount to Pay :\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                                Amount to Pay :\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                                Amount to Pay :\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n\r\n                        {Currency}<TextField\r\n                            onChange={amounttopayTxtUpdate}\r\n                            style={{ padding: \"10px\" }}\r\n                            id=\"amounttoPay\"\r\n                            name=\"amounttoPay\"\r\n                            type=\"number\"\r\n                            inputProps={{ maxLength: AmountToPayLength }}\r\n                            value={amounttopayTxtBox}\r\n                            disabled={refundType !== 'AdditionalPayment'}\r\n                        /></Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} className={refundType === \"CreditCardRefund\" ? classes.hideGrid : ''}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: 5 }}>\r\n                            Apply a Gift Card\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: 7 }}>\r\n                            Apply a Gift Card\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: 10 }}>\r\n                            Apply a Gift Card\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\" style={{ marginTop: \"15px\" }}>\r\n                        <TextField\r\n                            margin=\"dense\"\r\n                            id=\"giftcard\"\r\n                            name=\"giftcard\"\r\n                            label=\"Enter Gift Card Number\"\r\n                            type=\"text\"\r\n                            value={giftCardno}\r\n                            onChange={event => {\r\n                                setgiftCardno(event.target.value);\r\n                            }}\r\n                        />\r\n\r\n                        <Hidden smDown>\r\n                            <Button variant=\"contained\" size=\"large\" color=\"primary\"\r\n                                style={{ marginTop: \"8px\", marginLeft: \"10px\" }}\r\n                                onClick={() => { CheckGiftCard(giftCardno) }}\r\n                                disabled={parseFloat(AmountToPayCalCulation()) === 0 || refundType == \"GiftCardRefund\" || refundType === \"CreditCardRefund\" || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\"}\r\n                            >\r\n                                Apply\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                style={{ marginTop: \"14px\", marginLeft: \"10px\" }}\r\n                                onClick={() => { CheckGiftCard(giftCardno) }}\r\n                                disabled={refundType == \"GiftCardRefund\" || refundType === \"CreditCardRefund\" || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\"}\r\n                            >\r\n                                Apply\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                style={{ marginTop: \"20px\", marginLeft: \"10px\" }}\r\n                                onClick={() => { CheckGiftCard(giftCardno) }}\r\n                                disabled={refundType == \"GiftCardRefund\" || refundType === \"CreditCardRefund\" || refundType === \"CancelBooking\" || refundType === \"CancelGiftCardRefund\"}\r\n                            >\r\n                                Apply\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12}>\r\n                    <PayableCardMMB AmountToPay={AmountToPayCalCulation()} />\r\n                </Grid>\r\n\r\n                <CreditCardPayment\r\n                    onClickHandler={props.onClickHandler}\r\n                    booking={props.booking}\r\n                    amounttopay={AmountToPayCalCulation()}\r\n                    refundType={refundType}\r\n                />\r\n            </Grid>\r\n        </Container >\r\n    );\r\n};\r\n\r\nexport default withRouter(MakePayment);\r\n","import React, { useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Typography, Button, Card, CardHeader, CardContent, Table, TableRow, TableCell, Grid } from '@material-ui/core';\r\nimport { CheckCircleOutlineOutlined } from '@material-ui/icons';\r\nimport { genfunction } from '../../../helpers'\r\nimport theme from '../../../theme'\r\nimport DataAccess from '../../../api/constants';\r\nimport Moment from 'moment';\r\nimport { actionResetBookingTypes } from 'actions';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nconst { BookingCancelMsg, BookingSuccessfullyUpdate, CustomMessageforconfirmpage, BookingTypeBarcodeHeader, TransactionCompleteTitle, ConfirmationReceiptMessage,\r\n    ShowReadableBarcode } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    center: {\r\n        position: \"relative\",\r\n        margin: \"auto\",\r\n        maxWidth: \"550px\"\r\n    },\r\n    diplaynone: {\r\n        display: \"none\"\r\n    },\r\n    textaligncenter: {\r\n        textAlign: \"center\"\r\n    },\r\n    headerbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        textAlign: \"left\"\r\n    },\r\n    footerbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        textAlign: \"left\",\r\n        padding: \"16px\"\r\n    },\r\n    headertext: {\r\n        marginTop: \"8px\",\r\n        marginRight: \"10px\"\r\n    },\r\n    image: {\r\n        border: \"5px solid white\"\r\n    },\r\n    receiptfileds: {\r\n        textAlign: \"left\"\r\n    },\r\n    ReceiptTableCell: {\r\n        'border-bottom': '0px solid #000 !important',\r\n        fontSize: '16px !important',\r\n        padding: '5px !important'\r\n    }\r\n\r\n}));\r\n\r\nconst PaymentCompletePage = props => {\r\n    const { isshow, transaction } = props;\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    const Payment = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n\r\n    useEffect(() => {\r\n        if (props.mmbHasPaid && transaction.hasOwnProperty('Products') == false) {\r\n            onClickHandler();\r\n        }\r\n    }, [])\r\n\r\n    const onClickHandler = () => {\r\n        actionResetBookingTypes(dispatch);\r\n        props.onClickHandler()\r\n    }\r\n\r\n    const ShowWebDisplayName = (tourEvent) => {\r\n        if (!tourEvent || tourEvent || tourEvent.BookingTypeID === undefined) { return ''; }\r\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == tourEvent.BookingTypeID)[0];\r\n        return bookType ? tourEvent.EventName : '';\r\n    }\r\n\r\n    const groupbyTourEvent = () => {\r\n        let products = [];\r\n        transaction.Products.filter(x => x.Quantity > 0).map(item => {\r\n            let itemobj = products.find(x => x.TourEventID == item.TourEventID);\r\n            if (itemobj == null || itemobj == undefined) {\r\n                if (item.TourEventID !== undefined) {\r\n                    products.push(item);\r\n                }\r\n            }\r\n        })\r\n        return products;\r\n    }\r\n\r\n    const GetGiftCards = () => {\r\n        let giftcards = transaction.Products.filter(x => x.Giftcards && x.Giftcards.length > 0);\r\n        return giftcards;\r\n    }\r\n\r\n    const getEvent = (toureventid) => {\r\n        if (toureventid)\r\n            return transaction.Events.find(x => x.TourEventID == toureventid)\r\n    }\r\n\r\n    const VisibleStartAndEndTime = (tourEvent) => {\r\n\r\n        let time = \"\";\r\n        if (tourEvent === undefined || tourEvent.BookingTypeID === undefined) {\r\n            return '';\r\n        }\r\n\r\n        const bookType = bookingTypes.filter(x => x.BookingTypeID == tourEvent.BookingTypeID)[0];\r\n\r\n        if (bookType) {\r\n            if (bookType.ShowStartTime && bookType.ShowEndTime) {\r\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventStartDateTime) + ' - ' + Moment(tourEvent.EventEndDateTime).format('hh:mm a');\r\n            }\r\n\r\n            if (bookType.ShowStartTime && !bookType.ShowEndTime) {\r\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventStartDateTime);\r\n            }\r\n\r\n            if (!bookType.ShowStartTime && bookType.ShowEndTime) {\r\n                time += genfunction.GetEventDateReceiptFormat(tourEvent.EventEndDateTime);\r\n            }\r\n\r\n            if (!bookType.ShowStartTime && !bookType.ShowEndTime) {\r\n                time += genfunction.GetEventDateReceiptFormatwithoutTime(tourEvent.EventStartDateTime);\r\n            }\r\n        }\r\n\r\n        return time;\r\n    }\r\n\r\n    const TotalPaid = () => {\r\n        let total = 0;\r\n        if (transaction) {\r\n            if (transaction.Payments && transaction.Payments.length > 0) {\r\n                total = transaction.Payments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0);\r\n            }\r\n\r\n            if ((props.refundType === 'GiftCardRefund' || props.refundType === 'CancelGiftCardRefund') && transaction.Products && transaction.Products.length > 0 && transaction.Products.filter(x => x.Giftcards !== undefined).length > 0) {\r\n                total -= transaction.Products.filter(x => x.Giftcards !== undefined).map(({ LinePriceIncTax }) => LinePriceIncTax).reduce((sum, i) => sum + i, 0);\r\n            }\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const GetTourName = () => {\r\n        let tourname = \"\";\r\n\r\n        if (Payment.Events && Payment.Events.length > 0) {\r\n            tourname = Payment.Events[0].EventName;\r\n        }\r\n\r\n        if (tourname.length < 1 && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty(\"BookingName\")) {\r\n            tourname = reducerBooking.booking[0].BookingName;\r\n        }\r\n\r\n        return tourname;\r\n    }\r\n\r\n    const GetTourDetails = () => {\r\n        let tourdetails = \"\";\r\n        let bookingID = reducerBooking.booking[0] ? reducerBooking.booking[0].BookingTypeID : 0;\r\n\r\n        if (Payment.Events && Payment.Events.length > 0) {\r\n            bookingID = Payment.Events[0].BookingTypeID;\r\n        }\r\n\r\n        if (transaction && transaction.Products && transaction.Events.length > 0 && transaction.Events.filter(x => x.BookingTypeID === bookingID).length > 0) {\r\n            tourdetails = transaction.Events.filter(x => x.BookingTypeID === bookingID)[0].EventStartDateTime;\r\n        }\r\n\r\n        if (transaction && transaction.Products && transaction.Events.length < 1 && reducerBooking.booking[0].hasOwnProperty('EventStartDateTime')) {\r\n            tourdetails = reducerBooking.booking[0].EventStartDateTime;\r\n        }\r\n\r\n        return tourdetails;\r\n    }\r\n\r\n    const GetBookingPrevPaid = () => {\r\n        let bookingPaid = 0;\r\n\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].BookingPayments && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            bookingPaid = reducerBooking.booking[0].BookingPayments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0)\r\n        }\r\n\r\n        return bookingPaid;\r\n    }\r\n\r\n    if (transaction.hasOwnProperty('Products') == false)\r\n        return (\"\");\r\n    else {\r\n\r\n        let amounts = genfunction.GetProdsTotalAmount(transaction.Products)\r\n\r\n        return (\r\n\r\n            //Desktop and Laptop (smDown)\r\n            //Tablet (xsDown mdUp)\r\n            //Mobile (smUp)\r\n\r\n            <div className={classes.center + \" \" + (!isshow ? classes.diplaynone : \"\")}>\r\n                <div className={classes.textaligncenter}>\r\n                    <CheckCircleOutlineOutlined style={{ fontSize: 80, fontWeight: \"lighter\", color: theme.palette.success.main }}></CheckCircleOutlineOutlined>\r\n                    <Typography display=\"block\" color=\"primary\" gutterBottom={true} variant=\"h4\" component=\"h4\">{TransactionCompleteTitle}</Typography>\r\n                    <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\" style={{ marginBottom: \"30px\" }}>Thank you {transaction.Customer.FirstName + \" \" + transaction.Customer.LastName}!</Typography>\r\n                    <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ConfirmationReceiptMessage}</Typography>\r\n                    <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{transaction.Customer.CustomerAddress[0].Email}</Typography>\r\n\r\n                    {Payment && Payment.hasOwnProperty('isCancelBooking') === false && reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ?\r\n                        <div>\r\n                            <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\">Booking ID {reducerBooking.booking[0].BookingID} {BookingSuccessfullyUpdate}</Typography>\r\n                        </div>\r\n                        : null\r\n                    }\r\n\r\n\r\n                    <Card style={{ borderRadius: \"0px\" }} >\r\n                        <CardHeader className={classes.headerbox}\r\n                            action={<Typography variant=\"h5\" className={classes.headertext} color=\"inherit\" component=\"h5\">Receipt # {transaction.ReceiptNo}</Typography>}\r\n                            title={\"Transaction Summary\"}\r\n                            titleTypographyProps={{ color: \"inherit\" }}\r\n                        />\r\n                        <CardContent>\r\n                            <Grid container>\r\n                                <Grid item xs={12} style={{ textAlign: \"left\" }}>\r\n                                    <Table>\r\n                                        <TableRow >\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Receipt Date and Time : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.GetTransactionDate(transaction.TransactionDate)}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow >\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Receipt Number : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}><Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{transaction.ReceiptNo}</Typography></TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow >\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Booking # : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{(reducerBooking.booking[0] ? reducerBooking.booking[0].BookingID : 0)}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Tour Name : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{GetTourName()}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Tour Details : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.GetTransactionDate(GetTourDetails())}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow >\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">New Cost : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.ccyFormat((TotalPaid() > 0 ? Math.abs(TotalPaid()) + Math.abs(GetBookingPrevPaid()) : Math.abs(GetBookingPrevPaid()) - Math.abs(TotalPaid())))}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Previous Paid : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.ccyFormat(GetBookingPrevPaid())}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                        <TableRow>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" gutterBottom={true} color=\"inherit\" component=\"h5\">Amount Difference : </Typography>\r\n                                            </TableCell>\r\n                                            <TableCell className={classes.ReceiptTableCell}>\r\n                                                <Typography variant=\"h5\" className={classes.receiptfileds} gutterBottom={true} color=\"inherit\" component=\"h5\">{genfunction.ccyFormat(TotalPaid())}</Typography>\r\n                                            </TableCell>\r\n                                        </TableRow>\r\n                                    </Table>\r\n                                </Grid>\r\n                            </Grid>\r\n                        </CardContent>\r\n                    </Card>\r\n                    <Card style={{ borderRadius: \"0px\" }}>\r\n                        <CardHeader className={classes.headerbox}\r\n                            title={BookingTypeBarcodeHeader}\r\n                            titleTypographyProps={{ color: \"inherit\" }}\r\n                        />\r\n                        <CardContent style={{ textAlign: \"center\" }}>\r\n                            {\r\n                                groupbyTourEvent().length > 0 ? groupbyTourEvent().map(item => (\r\n\r\n                                    <div>\r\n\r\n                                        <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{ShowWebDisplayName(getEvent(item.TourEventID))}</Typography>\r\n                                        <Typography display=\"block\" gutterBottom={true} variant=\"subtitle2\" component=\"p\">{VisibleStartAndEndTime(getEvent(item.TourEventID))}</Typography>\r\n                                        <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=\\\\' + item.BookingID + \"&includeLable=\" + ShowReadableBarcode} />\r\n                                    </div>\r\n                                ))\r\n                                    : null\r\n                            }\r\n\r\n                            {\r\n                                GetGiftCards().length > 0 ? GetGiftCards().map(giftcard => (\r\n                                    giftcard.Giftcards.map(gc => (\r\n                                        <div>\r\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"subtitle1\" component=\"p\">{giftcard.ProductName}</Typography>\r\n                                            <img className={classes.image} alt=\"Logo\" src={DataAccess.apiUrl + 'Barcode/?barcode=' + gc.GiftcardNo + \"&includeLable=\" + ShowReadableBarcode} />\r\n                                        </div>\r\n                                    ))\r\n                                )) : null\r\n                            }\r\n\r\n                        </CardContent>\r\n                        {\r\n                            props.refundType === '' && ((amounts.totalExclTax + amounts.totalExclTax + amounts.totalExclTax) === 0) ?\r\n                                <CardContent style={{ textAlign: \"center\" }}>\r\n                                    <div>\r\n                                        <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\">Thank You</Typography>\r\n                                        <Typography display=\"block\" gutterBottom={true} variant=\"h5\" component=\"h5\">Amount Paid was {genfunction.ccyFormat(0)}</Typography>\r\n                                        <Typography display=\"block\" gutterBottom={true} variant=\"h5\" component=\"h5\">No Refund is due.</Typography>\r\n                                    </div>\r\n                                </CardContent>\r\n                                : null\r\n                        }\r\n\r\n                        {Payment && Payment.hasOwnProperty('Products') && Payment.Products.length > 0 ?\r\n                            <CardContent style={{ textAlign: \"center\" }}>\r\n                                {\r\n                                    Payment.Products.filter(x => x.Giftcards).map(item => (\r\n\r\n                                        <div>\r\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\">Gift Card Number # </Typography>\r\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"h5\" component=\"h5\" >{item.Giftcards[0].GiftcardNo}</Typography>\r\n\r\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\" >Balance Available</Typography>\r\n                                            <Typography display=\"block\" gutterBottom={true} variant=\"h5\" component=\"h5\" >{genfunction.ccyFormat(item.Giftcards[0].TotalBalance)}</Typography>\r\n\r\n                                        </div>\r\n                                    ))\r\n                                }\r\n\r\n                            </CardContent> : null}\r\n\r\n                        {Payment && Payment.hasOwnProperty('isCancelBooking') && Payment.isCancelBooking ?\r\n                            <CardContent style={{ textAlign: \"center\" }}>\r\n                                {\r\n                                    Payment && Payment.hasOwnProperty('isCancelBooking') && Payment.isCancelBooking ?\r\n                                        <div>\r\n                                            {Payment.hasOwnProperty('BookingID') ?\r\n                                                <Typography display=\"block\" gutterBottom={true} variant=\"h4\" component=\"h4\">Booking ID {Payment.BookingID} {BookingCancelMsg}</Typography>\r\n                                                : null}\r\n                                        </div>\r\n                                        : null\r\n                                }\r\n\r\n                            </CardContent>\r\n                            : null}\r\n\r\n                        <CardContent style={{ textAlign: \"center\" }}>\r\n                            <Typography display=\"block\" gutterBottom={true} style={{ marginTop: \"30px\" }} variant=\"subtitle1\" component=\"p\">{CustomMessageforconfirmpage}</Typography>\r\n                            <Button style={{ marginTop: 10 }} variant=\"contained\" color=\"primary\" onClick={onClickHandler}>\r\n                                OK\r\n                            </Button>\r\n                        </CardContent>\r\n                    </Card>\r\n\r\n                </div>\r\n            </div >\r\n\r\n        );\r\n    }\r\n};\r\n\r\nPaymentCompletePage.propTypes = {\r\n    isshow: PropTypes.bool.isRequired,\r\n    transaction: PropTypes.object.isRequired\r\n};\r\n\r\nexport default PaymentCompletePage;\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport MakePayment from '../ManageCheckout/components/MakePayment';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\nimport {\r\n    actionShopCartResetMembership, actionShopCartResetIDME, actionShopCartResetMembershipPackage, actionShopCartResetStateWithTourHold,\r\n    actionShopCartResetStateWithUniqueCouponHold, actionShopCartResetGiftcards, actionResetCountryAndState,actionResetCustomer\r\n} from 'actions';\r\nimport PaymentCompletePage from './components/PaymentCompletePage';\r\nimport ProcessingBox from '../Checkout/components/ProcessingBox';\r\nimport { actionShopCartSetManageMyBooking, actionShopCartSetRefundType, actionShopCartSetAdditionalBookingAmount, actionShopCartResetState } from 'actions';\r\nimport { actionResetBooking } from 'actions';\r\nimport { actionResetFieldValuesState } from 'actions';\r\nimport { actionDeleteGiftCardHold } from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionResetExtraItems } from 'actions';\r\nimport { Typography, Grid, Container, Button } from '@material-ui/core';\r\nimport { actionValidateRecaptchaReset } from 'actions';\r\nimport { actionShopCartSetMMBHasPaid } from 'actions/actionShopCart';\r\n\r\nconst { RedirectAfterCheckout, Titleforloadingpayment, Subtitle1forloadingpayment, Subtitle2forloadingpayment, } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    }, hidden: {\r\n        visibility: \"hidden\"\r\n    },\r\n    displaynone: {\r\n        display: \"none\"\r\n    }\r\n}));\r\n\r\nconst ManageCheckout = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    const mmbHasPaid = useSelector(state => state.reducerShopCart.MMBHasPaid);\r\n    const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\r\n\r\n    const paymenttranstate = useSelector(state => {\r\n        return (\r\n            {\r\n                loading: state.reducerPaymentTransaction.loading,\r\n                haspaid: state.reducerPaymentTransaction.Payment.hasOwnProperty('Products'),\r\n                paymentinfo: state.reducerPaymentTransaction.Payment,\r\n                errormsg: state.reducerPaymentTransaction.PaymentInfoError\r\n            }\r\n        )\r\n\r\n    });\r\n\r\n\r\n    const onClickPaymentHandler = () => {\r\n        actionStartAppLoader(dispatch);\r\n        actionShopCartResetStateWithTourHold(dispatch, events);\r\n        actionResetPaymentTransaction(dispatch);\r\n        actionResetFieldValuesState(dispatch);\r\n        actionShopCartResetStateWithUniqueCouponHold(dispatch);\r\n        actionShopCartResetMembershipPackage(dispatch);\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n        actionResetBooking(dispatch);\r\n        actionResetExtraItems(dispatch);\r\n        actionShopCartSetManageMyBooking(dispatch, false, false);\r\n        actionShopCartSetRefundType(dispatch, '');\r\n        actionShopCartSetAdditionalBookingAmount(dispatch, 0);\r\n        actionShopCartResetState(dispatch);\r\n        actionResetCountryAndState(dispatch);\r\n        actionShopCartSetMMBHasPaid(dispatch, false);\r\n        actionResetCustomer(dispatch);\r\n\r\n        if (cashless && cashless.length > 0) {\r\n            actionDeleteGiftCardHold(dispatch, cashless[0].GiftcardHoldRef);\r\n            actionShopCartResetGiftcards(dispatch);\r\n        }\r\n\r\n        if(stopUserToPurchase === false)\r\n        {\r\n            actionValidateRecaptchaReset(dispatch);\r\n        }\r\n\r\n        setTimeout(function () {\r\n            actionEndAppLoader(dispatch);\r\n            window.location.href = RedirectAfterCheckout;\r\n        }, 2000);\r\n    }\r\n\r\n    useEffect(() =>{\r\n        if(mmbHasPaid === true)\r\n        {\r\n            actionResetCustomer(dispatch);\r\n        }\r\n    },[mmbHasPaid]);\r\n\r\n    const redirecttofindmybpooking = () => {\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (paymenttranstate.paymentinfo.hasOwnProperty('Products') == true) {\r\n            actionShopCartSetMMBHasPaid(dispatch, true);\r\n        }\r\n    }, [paymenttranstate.paymentinfo.hasOwnProperty('Products') == true])\r\n\r\n    let displayclass = \"\";\r\n    if (paymenttranstate.loading)\r\n        displayclass = classes.displaynone;\r\n    else if (paymenttranstate.haspaid)\r\n        displayclass = classes.displaynone;\r\n    else if (mmbHasPaid)\r\n        displayclass = classes.displaynone;\r\n\r\n    return (\r\n\r\n        <Container className={classes.root}>\r\n            <Grid className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? '' : classes.displaynone}>\r\n                <Grid className={displayclass}>\r\n                    <MakePayment onClickHandler={onClickPaymentHandler} refundType={props.location.refundType} booking={reducerBooking.booking[0]} amounttopay={props.location.amounttopay} />\r\n                </Grid>\r\n                <ProcessingBox isshow={paymenttranstate.loading} title={Titleforloadingpayment} text1={Subtitle1forloadingpayment} text2={Subtitle2forloadingpayment} ></ProcessingBox>\r\n                <PaymentCompletePage refundType={props.location.refundType} isshow={paymenttranstate.haspaid || mmbHasPaid} mmbHasPaid={mmbHasPaid} onClickHandler={onClickPaymentHandler} transaction={paymenttranstate.paymentinfo} ></PaymentCompletePage>\r\n            </Grid>\r\n\r\n            <Grid container alignItems=\"center\" style={{ minHeight: '10vh', marginTop: 30 }} justify=\"center\" spacing={0} className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? classes.displaynone : ''}>\r\n                <Typography variant=\"h4\" className={classes.AdjustContext}>\r\n                    Please go to find my booking page to Update Booking.\r\n                </Typography>\r\n                <Grid item xs={12} md={12} align=\"center\">\r\n\r\n                    <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                        onClick={() => redirecttofindmybpooking()}>\r\n                        Manage My Booking\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        </Container>\r\n    );\r\n};\r\n\r\nexport default ManageCheckout;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Typography, Grid, Container, Button, Hidden } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    actionShopCartAddEventWithTourHold, actionShopCartSetManageMyBooking, actionShopCartSetMmbAmountToPay, actionShopCartSetEnteredAmountToPay,\r\n    actionShopCartResetError, actionShopCartResetMembership, actionShopCartSetRefundType, actionShopCartResetIDME\r\n} from 'actions';\r\nimport { actionResetBooking, actionUpdateQuantity } from 'actions';\r\nimport { NumberSpinner } from '../../components/InputControls';\r\nimport { genfunction } from '../../helpers';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionGetExtraItem, actionIncreaseQuantity, actionResetExtraItems } from 'actions';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\n\r\nconst { ModifyTicketsHeading, RefundCreditCardButton, RefundGiftCardButton } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    tourheaderbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText,\r\n        height: '40px'\r\n    },\r\n    hideBtn: {\r\n        display: 'none'\r\n    }\r\n}));\r\n\r\nconst ModifyTicketsAddons = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const reducerBooking = useSelector(state => state.reducerBooking);\r\n    const currentDateEvent = useSelector(state => state.reducerExtraItems.extraItem);\r\n    const cartEvents = useSelector(state => state.reducerShopCart.events);\r\n    const bookingTypes = useSelector(state => state.reducerBookingTypes.bookingTypes);\r\n    let bookingID = reducerBooking && reducerBooking.booking[0] ? reducerBooking.booking[0].BookingTypeID : 0;\r\n    const bkngType = bookingTypes && bookingTypes.length > 0 ? bookingTypes.filter(x => x.BookingTypeID == bookingID)[0] : null;\r\n    const extramItemsstate = useSelector(state => state.reducerExtraItems);\r\n    const shopcartreducer = useSelector(state => state.reducerShopCart);\r\n\r\n    const transactionfee = useSelector(state => state.reducerTransactionFee);\r\n    const cashless = useSelector(state => state.reducerShopCart.cashless);\r\n    let cashlesstotal = cashless.map(({ HoldAmount }) => HoldAmount).reduce((sum, i) => sum + i, 0);\r\n\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [isredirectclicked, setisredirectclicked] = useState(false);\r\n    const [open, setOpen] = React.useState(false);\r\n\r\n    const handleClickOpen = () => {\r\n        setOpen(true);\r\n    };\r\n\r\n    const handleClose = () => {\r\n        setOpen(false);\r\n    };\r\n\r\n    const errorcancelhandle = () => {\r\n        actionShopCartResetError(dispatch);\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n\r\n    useEffect(() => {\r\n        if (reducerBooking.booking) {\r\n            if (reducerBooking.booking.length < 1) {\r\n                // props.history.push({\r\n                //     pathname: '/findmybooking'\r\n                // })\r\n            }\r\n        }\r\n    }, []);\r\n\r\n    const changeQuantityHandler = (reference, quantity) => {\r\n\r\n        if (cartEvents !== undefined && cartEvents.length > 0) {\r\n            if (cartEvents[0].TourProducts.filter(x => x.AffectsCapacity).length > 0) {\r\n                actionIncreaseQuantity(dispatch, reference.TourProductID, quantity, true, reference.MinimumTickets, reference.MaximumTickets);\r\n                return;\r\n            }\r\n        }\r\n        actionIncreaseQuantity(dispatch, reference.TourProductID, quantity, false, reference.MinimumTickets, reference.MaximumTickets);\r\n    }\r\n\r\n    const changeQuantityCurrentBooking = (reference, quantity) => {\r\n        if (reducerBooking && reducerBooking.booking[0]) {\r\n            if (quantity < reference.MinimumTickets) {\r\n                seterrorMsg(\"Minimum tickets for this event is \" + reference.MinimumTickets + \".\")\r\n                return;\r\n            }\r\n\r\n            actionUpdateQuantity(dispatch, reference.TourProductID, quantity);\r\n\r\n            return;\r\n        }\r\n    }\r\n\r\n    useEffect(() => {\r\n        let tourevntID = props.location.toureventID ? props.location.toureventID : reducerBooking.booking[0] ? reducerBooking.booking[0].TourEventID : 0;\r\n        let memcstRate = reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('CustomerCostRateID') ? reducerBooking.booking[0].CustomerCostRateID : 0;\r\n        actionGetExtraItem(dispatch, tourevntID, true, memcstRate);\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (extramItemsstate.loading == true) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    })\r\n\r\n    const constredirecttofindmybpooking = () => {\r\n        actionResetBooking(dispatch);\r\n        actionResetExtraItems(dispatch);\r\n        actionShopCartSetManageMyBooking(dispatch, false, true);\r\n        actionShopCartResetMembership(dispatch);\r\n        actionShopCartResetIDME(dispatch);\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n    const addeventstotourholdaction = () => {\r\n\r\n        let filterdata = { ...currentDateEvent };\r\n        filterdata.TourProducts = filterdata.TourProducts.filter(product => product.Quantity > 0);\r\n        let cartdata = [...cartEvents];\r\n\r\n        if (filterdata && filterdata.hasOwnProperty('BookingTypeID')) {\r\n            let usealternamteMerchant = false;\r\n            if (bkngType && bkngType.hasOwnProperty('UseAlternateMerchant')) {\r\n                usealternamteMerchant = bkngType.UseAlternateMerchant;\r\n            }\r\n\r\n            filterdata.UseAlternateMerchant = usealternamteMerchant;\r\n\r\n        }\r\n\r\n\r\n        actionShopCartAddEventWithTourHold(dispatch, filterdata, cartdata);\r\n\r\n        actionShopCartSetManageMyBooking(dispatch, true, true);\r\n    }\r\n\r\n    useEffect(() => {\r\n\r\n        if (isredirectclicked && shopcartreducer.error.length < 1 && shopcartreducer.events && shopcartreducer.events.length > 0) {\r\n            let amountToPay = returnproducts();\r\n\r\n            amountToPay = addTransFeeWithBalance(amountToPay);\r\n\r\n            actionShopCartSetMmbAmountToPay(dispatch, amountToPay);\r\n\r\n            props.history.push({\r\n                pathname: '/managecheckout',\r\n                refundType: ''\r\n            })\r\n        }\r\n        if (isredirectclicked && shopcartreducer.error.length > 0) {\r\n            seterrorMsg(shopcartreducer.error);\r\n            setisredirectclicked(false);\r\n        }\r\n    }, [cartEvents, shopcartreducer.error.length > 0]);\r\n\r\n    const addTransFeeWithBalance = (balanceOwe) => {\r\n\r\n        if (transactionfee.transactionFee && transactionfee.transactionFee.length > 0) {\r\n            if (transactionfee.transactionFee[0].TransactionFeeByDefault) {\r\n                let transFee = genfunction.TransactionFeeForPartialPayment(transactionfee.transactionFee[0], balanceOwe, cashlesstotal)\r\n\r\n                if (transFee > 0) {\r\n                    actionShopCartSetEnteredAmountToPay(dispatch, balanceOwe);\r\n                    return genfunction.Rounded(balanceOwe + transFee);\r\n                }\r\n            }\r\n        }\r\n        return balanceOwe;\r\n    }\r\n\r\n    const constredirecttomanagecheckout = () => {\r\n\r\n        if (ValidateQuanity()) {\r\n            let amounttop = returnproducts();\r\n\r\n            let NewQty = currentDateEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                let newobj = { Quantity: aqty + bqty }\r\n                return newobj;\r\n            }).Quantity;\r\n\r\n            let PreviousQtyChanges = false;\r\n\r\n            if (reducerBooking.booking[0].BookingProducts) {\r\n                PreviousQtyChanges = reducerBooking.booking[0].BookingProducts.filter(x => x.isModify).length > 0 ? true : false;\r\n            }\r\n\r\n            if (amounttop === 0 && NewQty == 0 && !PreviousQtyChanges) {\r\n                seterrorMsg(\"No tickets changes are applied.\")\r\n                return;\r\n            }\r\n\r\n            if (amounttop >= 0) {\r\n\r\n                addeventstotourholdaction();\r\n                setisredirectclicked(true);\r\n            }\r\n            else {\r\n                handleClickOpen();\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    const ValidateQuanity = () => {\r\n        let MinTicket = bkngType.MinimumTickets\r\n        let MaxTicket = bkngType.MaximumTickets;\r\n\r\n        let CartQty = 0;\r\n        let NewQty = 0;\r\n        let TotalTicketCount = 0;\r\n        if (cartEvents && cartEvents.length > 0) {\r\n\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID == currentDateEvent.TourEventID);\r\n            if (cartTourEvent && cartTourEvent.TourProducts.length > 0) {\r\n                CartQty = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n                    let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                    let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                    let newobj = { Quantity: aqty + bqty }\r\n                    return newobj;\r\n                }).Quantity;\r\n            }\r\n        }\r\n\r\n        NewQty = currentDateEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n            let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n            let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n            let newobj = { Quantity: aqty + bqty }\r\n            return newobj;\r\n        }).Quantity;\r\n\r\n        TotalTicketCount = CartQty + NewQty;\r\n\r\n        if (currentDateEvent.SeatsAvailable == 0 || currentDateEvent.BookNowOption != \"Book Now\") {\r\n            seterrorMsg(\"Tickets not longer available, please choose another time\");\r\n            return false;\r\n        }\r\n        else if (NewQty > currentDateEvent.SeatsAvailable) {\r\n            seterrorMsg(\"Maximum of \" + currentDateEvent.SeatsAvailable + \" tickets available\");\r\n            return false;\r\n        }\r\n        else if (TotalTicketCount > MaxTicket) {\r\n            seterrorMsg(\"Maximum of \" + MaxTicket + \" tickets allowed\")\r\n            return false;\r\n        }\r\n        else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    const applyrefund = (type) => {\r\n\r\n        addeventstotourholdaction();\r\n        actionShopCartSetMmbAmountToPay(dispatch, returnproducts());\r\n        actionShopCartSetRefundType(dispatch, type);\r\n\r\n        props.history.push({\r\n            pathname: '/managecheckout',\r\n            refundType: type\r\n        })\r\n    }\r\n\r\n    const CalculateMaxTickets = (TourProductID) => {\r\n        let shopCartConsumed = 0;\r\n\r\n        if (cartEvents && cartEvents.length > 0) {\r\n            let cartTourEvent = cartEvents.find(x => x.TourEventID == currentDateEvent.TourEventID);\r\n            if (cartTourEvent && cartTourEvent.TourProducts.length > 0 && cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).length > 0) {\r\n                shopCartConsumed = cartTourEvent.TourProducts.filter(p => p.AffectsCapacity).reduce((a, b) => {\r\n                    let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                    let bqty = b.Quantity === undefined ? 0 : b.Quantity;\r\n                    let newobj = { Quantity: aqty + bqty }\r\n                    return newobj;\r\n                }).Quantity;\r\n            }\r\n        }\r\n\r\n        let consumedQty = 0;\r\n        if (currentDateEvent.TourProducts.filter(p => p.TourProductID != TourProductID && p.AffectsCapacity).length > 0) {\r\n            consumedQty = currentDateEvent.TourProducts.filter(p => p.TourProductID != TourProductID && p.AffectsCapacity).reduce((a, b) => {\r\n                let aqty = a.Quantity === undefined ? 0 : a.Quantity;\r\n                let bqty = (b === undefined || b.Quantity === undefined) ? 0 : b.Quantity;\r\n                let newobj = { Quantity: aqty + bqty }\r\n                return newobj;\r\n            }).Quantity;\r\n        }\r\n\r\n        return bkngType !== undefined ? bkngType.MaximumTickets - consumedQty - shopCartConsumed : 0;\r\n    }\r\n\r\n    const totalpaid = () => {\r\n        let total = 0;\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].BookingPayments && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            total = reducerBooking.booking[0].BookingPayments.map(({ PaymentAmount }) => PaymentAmount).reduce((sum, i) => sum + i, 0);\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n    const returnproducts = () => {\r\n        let total = 0;\r\n        let actualTotal = 0;\r\n        let newTotal = 0;\r\n        let eventTotal = currentDateEvent.TotalAmount ? currentDateEvent.TotalAmount : 0;\r\n\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].BookingPayments && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            actualTotal = parseFloat(Math.round(reducerBooking.booking[0].BookingProducts.map(({ ProductLinePriceInclTax }) => ProductLinePriceInclTax).reduce((sum, i) => sum + i, 0) * 100) / 100).toFixed(2);\r\n            reducerBooking.booking[0].BookingProducts.map(prod => {\r\n                if (prod.hasOwnProperty('isModify') && prod.isModify) {\r\n                    newTotal += prod.newQuantity * (prod.ProductLinePriceInclTax / prod.Quantity);\r\n                }\r\n                else {\r\n                    newTotal += prod.ProductLinePriceInclTax;\r\n                }\r\n            })\r\n\r\n            total = parseFloat(Math.round((actualTotal - newTotal) * 100) / 100).toFixed(2);\r\n        }\r\n\r\n        return eventTotal - parseFloat(total);\r\n    }\r\n\r\n    const totalpayments = () => {\r\n        let total = 0;\r\n        if (reducerBooking.booking && reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty('BookingPayments') && reducerBooking.booking[0].BookingPayments.length > 0) {\r\n            total = reducerBooking.booking[0].BookingPayments.length;\r\n        }\r\n\r\n        return total;\r\n    }\r\n\r\n\r\n    const eligibletxtReturnClass = () => {\r\n        let eligibleTxt = \"\";\r\n        if (reducerBooking.booking[0]) {\r\n            if (reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].AllowRefundToGiftcardOnly) {\r\n\r\n                if (reducerBooking.booking[0].hasOwnProperty('PaymentToken')) {\r\n                    eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(Math.abs(returnproducts())) : 0) + \" to a gift card or card on file \" + (reducerBooking.booking[0].PaymentDescription !== undefined ? reducerBooking.booking[0].PaymentDescription : '');\r\n                }\r\n                else {\r\n                    eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(Math.abs(returnproducts())) : 0) + \" to a gift card.\";\r\n                }\r\n            }\r\n            else if (reducerBooking.booking[0].AllowRefundToGiftcardOnly && reducerBooking.booking[0].AllowRefunds == false) {\r\n                eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(Math.abs(returnproducts())) : 0) + \" to a gift card.\";\r\n            }\r\n            else if (reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken')) {\r\n                eligibleTxt = \"You are eligible for a refund of \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(Math.abs(returnproducts())) : 0) + \" through card on file \" + (reducerBooking.booking[0].PaymentDescription !== undefined ? reducerBooking.booking[0].PaymentDescription : '');\r\n            }\r\n\r\n            return eligibleTxt;\r\n        }\r\n    }\r\n\r\n    const redirecttofindmybpooking = () => {\r\n\r\n        props.history.push({\r\n            pathname: '/findmybooking'\r\n        })\r\n    }\r\n\r\n    return (\r\n\r\n\r\n        //Desktop and Laptop (smDown)\r\n        //Tablet (xsDown mdUp)\r\n        //Mobile (smUp)\r\n\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n            <Grid container justify=\"center\" spacing={1} className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? '' : classes.hideBtn}>\r\n                <Grid item xs={12} md={7}>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h1\" style={{ padding: \"5px\", fontWeight: \"bold\" }} >\r\n                            {ModifyTicketsHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"h2\" style={{ padding: \"5px\", fontWeight: \"bold\" }} >\r\n                            {ModifyTicketsHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"h3\" style={{ padding: \"5px\", fontWeight: \"bold\" }} >\r\n                            {ModifyTicketsHeading}\r\n                        </Typography>\r\n                    </Hidden>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Current Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Current Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Current Tickets\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography align=\"center\" variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            These are the current tickets in your existing order. You can either remove items here and/or use the section below to add any available tickets to your order.\r\n                        </Typography>\r\n\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography align=\"center\" variant=\"subtitle1\" style={{ padding: \"10px\" }}>\r\n                            These are the current tickets in your existing order. You can either remove items here and/or use the section below to add any available tickets to your order.\r\n                        </Typography>\r\n\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography align=\"center\" variant=\"subtitle2\" style={{ padding: \"10px\" }}>\r\n                            These are the current tickets in your existing order. You can either remove items here and/or use the section below to add any available tickets to your order.\r\n                        </Typography>\r\n\r\n                    </Hidden>\r\n\r\n\r\n                    <Grid item xs={10} md={10} style={{ margin: \"auto\" }}>\r\n                        {reducerBooking.booking[0] && reducerBooking.booking[0].hasOwnProperty(\"BookingProducts\") ?\r\n                            reducerBooking.booking[0].BookingProducts.map((product, i) => {\r\n\r\n                                return product.Quantity ?\r\n\r\n                                    <Grid style={{ padding: \"5px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n\r\n                                        <Grid item xs={5} ms={5} lg={5}>\r\n\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"subtitle1\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={5} ms={5} lg={4} align=\"center\">\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID,\r\n                                                    MaximumTickets: bkngType !== undefined ? bkngType.MaximumTickets : 0,\r\n                                                    MinimumTickets: bkngType !== undefined ? bkngType.MinimumTickets : 0\r\n                                                }}\r\n                                                value={product.hasOwnProperty('newQuantity') ? product.newQuantity : product.Quantity}\r\n                                                minValue={0}\r\n                                                maxValue={product.hasOwnProperty('newQuantity') ? product.newQuantity : product.Quantity}\r\n                                                steps={1}\r\n                                                changeHandler={changeQuantityCurrentBooking}\r\n                                                disabled={product.Price < 0 || product.IsRefundable === false ? true : false}\r\n                                            ></NumberSpinner>\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={2} ms={2} lg={3} >\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"body1\" style={{ color: \"Red\" }}>{product.IsRefundable === false ? \"Not Refundable\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"body2\" style={{ color: \"Red\" }}>{product.IsRefundable === false ? \"Not Refundable\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"body2\" style={{ color: \"Red\" }}>{product.IsRefundable === false ? \"Not Refundable\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                    : null\r\n                            }) : null}\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"15px\" }}>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Tickets Available\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Tickets Available\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Tickets Available\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h6\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Use plus button to add tickets to this reservation.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"subtitle1\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Use plus button to add tickets to this reservation.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"subtitle2\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                            Use plus button to add tickets to this reservation.\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n\r\n                    <Grid item xs={10} md={10} style={{ margin: \"auto\" }}>\r\n                        {currentDateEvent.hasOwnProperty(\"TourProducts\") ?\r\n                            currentDateEvent.TourProducts.map((product, i) => {\r\n\r\n                                return product.AffectsCapacity && product.AvailableOnline && product.PriceMatrix !== undefined && product.PriceMatrix.length > 0\r\n                                    && product.TourProductID !== bkngType.ChaperoneTourProductID ?\r\n\r\n                                    <Grid style={{ padding: \"5px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n                                        <Grid item xs={4} ms={4} lg={4}>\r\n\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"subtitle1\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={5} ms={5} lg={5} align=\"center\">\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID,\r\n                                                    MaximumTickets: bkngType !== undefined ? bkngType.MaximumTickets : 0,\r\n                                                    MinimumTickets: bkngType !== undefined ? bkngType.MinimumTickets : 0\r\n                                                }}\r\n                                                value={product.Quantity === undefined ? 0 : product.Quantity}\r\n                                                minValue={0}\r\n                                                maxValue={CalculateMaxTickets(product.TourProductID)}\r\n                                                steps={1}\r\n                                                changeHandler={changeQuantityHandler}\r\n                                                disabled={currentDateEvent.hasOwnProperty('SeatsAvailable') && currentDateEvent.SeatsAvailable < 1 ? true : false}\r\n                                            ></NumberSpinner>\r\n                                        </Grid>\r\n                                        {<Grid item xs={3} ms={3} lg={3}>\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"body1\" style={{ color: \"Red\" }}>{currentDateEvent.hasOwnProperty('SeatsAvailable') && currentDateEvent.SeatsAvailable < 1 ? \"No available tickets\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"body2\" style={{ color: \"Red\" }}>{currentDateEvent.hasOwnProperty('SeatsAvailable') && currentDateEvent.SeatsAvailable < 1 ? \"No available tickets\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"body2\" style={{ color: \"Red\" }}>{currentDateEvent.hasOwnProperty('SeatsAvailable') && currentDateEvent.SeatsAvailable < 1 ? \"No available tickets\" : \"\"}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>}\r\n                                    </Grid>\r\n                                    : null\r\n                            }) : null}\r\n\r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h6\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                                Use plus and minus buttons to adjust selected add ons.\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"subtitle1\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                                Use plus and minus buttons to adjust selected add ons.\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"subtitle2\" align=\"center\" style={{ padding: \"10px\" }}>\r\n                                Use plus and minus buttons to adjust selected add ons.\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        {currentDateEvent.hasOwnProperty(\"TourProducts\") ?\r\n                            currentDateEvent.TourProducts.map((product, i) => {\r\n\r\n                                return product.AffectsCapacity === false && product.AvailableOnline && product.PriceMatrix !== undefined && product.PriceMatrix.length > 0\r\n                                    && product.TourProductID !== bkngType.ChaperoneTourProductID ?\r\n\r\n                                    <Grid style={{ padding: \"10px\" }} container alignItems=\"center\" item xs={12} ms={12} lg={12} key={product.TourProductID}>\r\n                                        <Grid item xs={4} ms={4} lg={4}>\r\n\r\n                                            <Hidden smDown>\r\n                                                <Typography variant=\"h5\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                <Typography variant=\"h6\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                <Typography variant=\"subtitle1\">{product.TourProductName + ' ' + genfunction.ccyFormat(product.PriceMatrix[0].Price)}</Typography>\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n\r\n                                        <Grid item xs={5} ms={5} lg={5} align=\"center\">\r\n                                            <NumberSpinner\r\n                                                refrence={{\r\n                                                    TourProductID: product.TourProductID,\r\n                                                    MaximumTickets: bkngType !== undefined ? bkngType.MaximumTickets : 0,\r\n                                                    MinimumTickets: bkngType !== undefined ? bkngType.MinimumTickets : 0\r\n                                                }}\r\n                                                value={product.Quantity === undefined ? 0 : product.Quantity}\r\n                                                minValue={0} maxValue={999} steps={1}\r\n                                                changeHandler={changeQuantityHandler}\r\n                                            ></NumberSpinner>\r\n                                        </Grid>\r\n                                    </Grid>\r\n                                    : null\r\n                            }) : null}\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid item xs={12} md={7} style={{ padding: \"20px\" }}>\r\n                    <Hidden smDown>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h2\" style={{ padding: \"5px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h3\" style={{ padding: \"5px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography className={classes.tourheaderbox} align=\"center\" variant=\"h4\" style={{ padding: \"7px\" }}>\r\n                            Booking Summary\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            Current Booking Cost : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Current Booking Cost : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            Current Booking Cost : {reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smDown>\r\n                        <Typography variant=\"h5\" style={{ padding: \"10px\" }}>\r\n                            New Total Cost : {genfunction.ccyFormat(returnproducts())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            New Total Cost : {genfunction.ccyFormat(returnproducts())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Typography variant=\"h6\" style={{ padding: \"10px\" }}>\r\n                            New Total Cost : {genfunction.ccyFormat(returnproducts())}\r\n                        </Typography>\r\n                    </Hidden>\r\n\r\n                    <Grid item xs={12} md={12} align=\"center\" style={{ marginTop: \"30px\" }}>\r\n\r\n                        <Hidden smDown>\r\n                            <Button variant=\"outlined\" size=\"medium\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginTop: 0 }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: 10, marginTop: 0 }}\r\n                                onClick={() => constredirecttomanagecheckout()}>\r\n                                Confirm Changes\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Button variant=\"outlined\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginTop: 10 }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: 10, marginTop: 10 }}\r\n                                onClick={() => constredirecttomanagecheckout()}>\r\n                                Confirm Changes\r\n                            </Button>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Button variant=\"outlined\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginTop: 10 }}\r\n                                onClick={() => constredirecttofindmybpooking()}>\r\n                                Cancel Changes\r\n                            </Button>\r\n\r\n                            <Button variant=\"contained\" size=\"small\" color=\"primary\"\r\n                                style={{ padding: \"12px\", marginLeft: 10, marginTop: 10 }}\r\n                                onClick={() => constredirecttomanagecheckout()}>\r\n                                Confirm Changes\r\n                            </Button>\r\n                        </Hidden>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n\r\n            <Dialog\r\n                open={open}\r\n                onClose={handleClose}\r\n                aria-labelledby=\"alert-dialog-title\"\r\n                aria-describedby=\"alert-dialog-description\"\r\n                disableEscapeKeyDown={true}\r\n                disableBackdropClick={true}\r\n            >\r\n                <DialogTitle id=\"alert-dialog-title\">{\"Refund Transaction\"}</DialogTitle>\r\n                <DialogContent>\r\n                    <DialogContentText id=\"alert-dialog-description\">\r\n\r\n\r\n                        <Hidden smDown>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment: \" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0)}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(returnproducts()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden xsDown mdUp>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment:\" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0)}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(returnproducts()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                        <Hidden smUp>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Your previous payment:\" + (reducerBooking.booking[0] ? genfunction.ccyFormat(totalpaid()) : 0)}\r\n                            </Typography>\r\n                            <Typography variant=\"h4\" style={{ padding: \"10px\" }}>\r\n                                {\"Now we owe you: \" + genfunction.ccyFormat(Math.abs(returnproducts()))}\r\n                            </Typography>\r\n                        </Hidden>\r\n\r\n                    </DialogContentText>\r\n                </DialogContent>\r\n                <DialogActions>\r\n                    <Hidden smDown>\r\n\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"medium\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && reducerBooking.booking[0].AllowRefundToGiftcardOnly === false && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken') ? '' : classes.hideBtn}  >\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"medium\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds || reducerBooking.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                    <Hidden xsDown mdUp>\r\n\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && reducerBooking.booking[0].AllowRefundToGiftcardOnly === false && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken') ? '' : classes.hideBtn}  >\r\n\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds || reducerBooking.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n\r\n                    </Hidden>\r\n\r\n                    <Hidden smUp>\r\n                        <Button onClick={handleClose} variant=\"outlined\" size=\"small\" color=\"primary\">\r\n                            Cancel Changes\r\n                        </Button>\r\n\r\n                        <Button onClick={() => applyrefund('CreditCardRefund')} variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && reducerBooking.booking[0].AllowRefunds && reducerBooking.booking[0].AllowRefundToGiftcardOnly === false && totalpayments() === 1 && reducerBooking.booking[0].hasOwnProperty('PaymentToken') ? '' : classes.hideBtn}  >\r\n\r\n                            {RefundCreditCardButton}\r\n                        </Button>\r\n\r\n                        <Button\r\n                            onClick={() => applyrefund('GiftCardRefund')}\r\n                            variant=\"contained\" size=\"small\" color=\"primary\"\r\n                            className={reducerBooking.booking[0] && (reducerBooking.booking[0].AllowRefunds || reducerBooking.booking[0].AllowRefundToGiftcardOnly) ? '' : classes.hideBtn}  >\r\n                            {RefundGiftCardButton}\r\n                        </Button>\r\n                    </Hidden>\r\n\r\n                </DialogActions>\r\n            </Dialog>\r\n\r\n\r\n\r\n\r\n            <Grid container alignItems=\"center\" style={{ minHeight: '10vh', marginTop: 30 }} justify=\"center\" spacing={0} className={reducerBooking.booking[0] && reducerBooking.booking[0].BookingID ? classes.hideBtn : ''}>\r\n                <Typography variant=\"h4\" className={classes.AdjustContext}>\r\n                    Please go to find my booking page to Update Booking.\r\n                </Typography>\r\n                <Grid item xs={12} md={12} align=\"center\">\r\n\r\n                    <Button variant=\"outlined\" size=\"medium\" color=\"primary\" className={classes.AdjustContext} style={{ padding: \"12px\" }}\r\n                        onClick={() => redirecttofindmybpooking()}>\r\n                        Manage My Booking\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        </Container>\r\n    );\r\n};\r\n\r\nexport default ModifyTicketsAddons;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Card, CardContent, CardActions, Typography, Button, CardHeader } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {},\r\n  card: {\r\n    \"&:hover\": {\r\n      transform: 'scale(1.02)',\r\n      WebkitTransform: 'scale(1.02)',\r\n      boxShadow: \"inset 0 0 0 2px\",\r\n      cursor: 'pointer'\r\n    }\r\n  },\r\n  tourheaderbox: {\r\n    backgroundColor: theme.palette.primary.main,\r\n    color: theme.palette.primary.contrastText\r\n  }\r\n}));\r\n\r\nconst GiftCardAreaCard = props => {\r\n\r\n  const { className, area } = props;\r\n  const classes = useStyles();\r\n  return (\r\n    <div>\r\n      <Card className={classes.card}>\r\n        <CardHeader className={classes.tourheaderbox}\r\n          title={area.AreaName}\r\n          titleTypographyProps={{ color: \"inherit\" }}\r\n        />\r\n        <CardContent>\r\n          <Typography component=\"p\" color=\"textSecondary\">\r\n            <br />\r\n            {area.DisplayText}\r\n          </Typography>\r\n        </CardContent>\r\n        <CardActions>\r\n\r\n          <Button variant=\"contained\" onClick={() => props.callCalender(area)} color=\"primary\">Buy Now</Button>\r\n        </CardActions>\r\n      </Card>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GiftCardAreaCard;\r\n","import Moment from 'moment';\r\nimport React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Container, Grid, Hidden, CardContent, TextField, Typography, Button, MenuItem, Select, CardHeader } from '@material-ui/core';\r\nimport { actionAddToCartGiftCards, actionGetGiftCards, actionUpdateGiftCardDropDown, actionUpdateGiftCrdQuantity, actionUpdateGiftCardCustomAmout } from 'actions';\r\nimport * as underscore from 'underscore';\r\nimport NumberSpinner from 'components/InputControls/NumberSpinner';\r\nimport { genfunction } from '../../../../helpers';\r\nimport ErrorHandling from '../../../../components/ErrorHandling/ErrorHandling';\r\n\r\n\r\nconst { GiftCardsHeading, OrderItemsInCartError, Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    gcImg: {\r\n        minHeight: '80px',\r\n        maxHeight: '250px',\r\n        minWidth: '100px',\r\n        maxWidth: '340px'\r\n    },\r\n    gcImgSmall: {\r\n        minHeight: '60px',\r\n        maxHeight: '110px',\r\n        minWidth: '70px',\r\n        maxWidth: '140px'\r\n    },\r\n    headerText: {\r\n        paddingBottom: 15,\r\n        textAlign: \"center\"\r\n    },\r\n}));\r\n\r\n\r\nconst MainGiftCards = props => {\r\n\r\n    const dispatch = useDispatch()\r\n    const classes = useStyles();\r\n    const [errorMsg, seterrorMsg] = React.useState('');\r\n\r\n    useEffect(() => {\r\n        if (giftcards.giftcards && giftcards.giftcards.length < 1) {\r\n            actionGetGiftCards(dispatch, props.match.params.id);\r\n        }\r\n        else if (giftcards.giftcards && giftcards.giftcards.length > 0 && giftcards.giftcards.find(x => x.DisplayArea === parseInt(props.match.params.id)) === undefined) {\r\n            actionGetGiftCards(dispatch, props.match.params.id);\r\n        }\r\n    }, []);\r\n\r\n\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const error = useSelector(state => state.reducerGiftCards.giftcardsError);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n\r\n    const GetGroupedGiftCards = () => {\r\n        let today = Moment(Moment().format(\"YYYY-MM-DD\"), \"YYYY-MM-DD\");\r\n\r\n        let filteredGCs = underscore.filter(giftcards.giftcards, (item) => {\r\n\r\n            let sellStart = Moment(item.SellStart, \"YYYY-MM-DD\");\r\n            let sellEnd = Moment(item.SellEnd, \"YYYY-MM-DD\");\r\n\r\n            return item.DisplayArea == parseInt(props.match.params.id) && today.isBetween(sellStart, sellEnd, null, '[]');\r\n\r\n        });\r\n\r\n        let group = underscore\r\n            .groupBy(filteredGCs, (giftcard) => { return giftcard.ProductImageURL; });\r\n\r\n        return group;\r\n    }\r\n\r\n    const [state, setState] = React.useState([]);\r\n\r\n    if (giftcards.giftcards && giftcards.giftcards.length > 0 && state.length < 1) {\r\n\r\n        //giftcards.giftcards = giftcards.giftcards.filter(x => x.DisplayArea === parseInt(props.match.params.id));\r\n\r\n        setState([...state, giftcards.giftcards]);\r\n    }\r\n\r\n\r\n    const fieldhandleChange = (event) => {\r\n        if (event.target.name === \"cstAmount\") {\r\n            actionUpdateGiftCardDropDown(dispatch, event.target.name, parseFloat(event.target.id));\r\n        }\r\n        else {\r\n            actionUpdateGiftCardDropDown(dispatch, event.target.name, event.target.value);\r\n        }\r\n    }\r\n\r\n    const SelectedGiftCardValue = (key) => {\r\n        let val = \"None\";\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.ProductImageURL === key && x.isSelected).length > 0) {\r\n                if (giftcards.giftcards.find(x => x.ProductImageURL === key && x.isSelected) !== undefined) {\r\n                    val = giftcards.giftcards.find(x => x.ProductImageURL === key && x.isSelected).Price;\r\n                }\r\n\r\n            }\r\n        }\r\n\r\n        return val;\r\n    }\r\n\r\n    const SelectedGiftCardProdID = (key) => {\r\n        let prodID = 0;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.ProductImageURL === key && x.isSelected).length > 0) {\r\n\r\n                if (giftcards.giftcards.find(x => x.ProductImageURL === key && x.isSelected) !== undefined) {\r\n                    prodID = giftcards.giftcards.find(x => x.ProductImageURL === key && x.isSelected).ProductID;\r\n                }\r\n            }\r\n        }\r\n\r\n        return prodID;\r\n    }\r\n\r\n    const SelectedGiftCardQty = (key) => {\r\n        let quantity = 0;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.filter(x => x.ProductImageURL === key && x.isSelected).length > 0) {\r\n                quantity = giftcards.giftcards.find(x => x.ProductImageURL === key && x.isSelected).Qty;\r\n            }\r\n        }\r\n\r\n        return quantity;\r\n    }\r\n\r\n    const CustomGiftCard = (key) => {\r\n        let cstGiftCard = false;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.find(x => x.ProductImageURL === key && x.MaxPrice !== undefined) !== undefined) {\r\n                cstGiftCard = true;\r\n            }\r\n        }\r\n\r\n        return cstGiftCard;\r\n    }\r\n\r\n    const changeQuantityHandler = (refrence, value) => {\r\n        actionUpdateGiftCrdQuantity(dispatch, refrence.tourProductID, value, false);\r\n    }\r\n\r\n    const replaceEscapeCharacters = (item) => {\r\n        var itemValue = item.split(\"\\\\r\\\\n\").join(\"<br />\");\r\n        itemValue = itemValue.split(\"\\\\\").join(\"\");\r\n        return itemValue;\r\n    }\r\n\r\n    const GiftCardsTotal = () => {\r\n        let total = 0;\r\n        total = giftcards.giftcards ? giftcards.giftcards.filter(x => x.DisplayArea === parseInt(props.match.params.id)).map(({ TotalAmount }) => TotalAmount).reduce((sum, i) => sum + i, 0) : 0;\r\n        return total;\r\n    }\r\n\r\n    const UpdateCustomAmout = (event) => {\r\n\r\n        if (parseFloat(event.target.value) >= 0) {\r\n\r\n            var gc = giftcards.giftcards.find(x => x.ProductID === parseInt(event.target.id));\r\n\r\n            if (gc && parseFloat(event.target.value) > 0) {\r\n                actionUpdateGiftCardCustomAmout(dispatch, parseInt(event.target.id), parseFloat(event.target.value), false);\r\n            }\r\n        }\r\n    }\r\n\r\n    const CustomGiftCardVal = (prodID) => {\r\n\r\n        let val = false;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0) {\r\n            if (giftcards.giftcards.find(x => x.ProductID === prodID) !== undefined) {\r\n                val = giftcards.giftcards.find(x => x.ProductID === prodID).TotalAmount;\r\n            }\r\n        }\r\n        return val;\r\n    }\r\n\r\n    const ValidateCustomGCs = () => {\r\n\r\n        let valid = true;\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.length > 0 && giftcards.giftcards.filter(x => x.CustomAmount !== undefined).length > 0) {\r\n            giftcards.giftcards.filter(x => x.CustomAmount !== undefined).map(gc => {\r\n                if (gc.InvalidAmount) {\r\n                    valid = false;\r\n                }\r\n            });\r\n        }\r\n\r\n        return valid;\r\n    }\r\n\r\n    const AddToCard = () => {\r\n\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            seterrorMsg(OrderItemsInCartError);\r\n            return;\r\n        }\r\n\r\n        if (giftcards.giftcards && giftcards.giftcards.find(x => x.Qty > 0) !== undefined) {\r\n\r\n            if (!ValidateCustomGCs()) {\r\n                seterrorMsg('Please enter valid amount.');\r\n                return;\r\n            }\r\n\r\n            actionAddToCartGiftCards(dispatch, parseInt(props.match.params.id));\r\n\r\n            props.history.push({\r\n                pathname: '/checkout'\r\n            })\r\n        }\r\n        else {\r\n            seterrorMsg('Please select any giftcard');\r\n        }\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg('');\r\n    }\r\n\r\n    return (\r\n        <Container className={classes.root}>\r\n            <ErrorHandling msg={errorMsg && errorMsg.length > 0 ? errorMsg : ''}\r\n                open={errorMsg && errorMsg.length > 0 ? true : false} handleclose={errorcancelhandle} />\r\n            <Typography variant=\"h1\" component=\"h1\" color=\"primary\" className={classes.headerText}>{GiftCardsHeading}</Typography>\r\n            <Grid container justify=\"center\" spacing={1} style={{ marginTop: 20 }}>\r\n                <Grid container item xs={12} md={7}>\r\n\r\n                    {giftcards.giftcards && underscore.map(GetGroupedGiftCards(), (items, key) => {\r\n                        return (\r\n                            <>\r\n                                <Grid item xs={5} style={{ marginTop: 20 }} >\r\n                                    {items.DisplayArea === parseInt(props.match.params.id) && items.length > 1 || !CustomGiftCard(key) ?\r\n                                        <Grid align=\"center\" xs={12}>\r\n                                            <Hidden smDown>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImg} />\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImgSmall} />\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImgSmall} />\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n                                        :\r\n                                        <Grid align=\"center\" xs={12} >\r\n                                            <Hidden smDown>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImg} />\r\n                                            </Hidden>\r\n\r\n                                            <Hidden xsDown mdUp>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImgSmall} />\r\n                                            </Hidden>\r\n\r\n                                            <Hidden smUp>\r\n                                                < img src={genfunction.replaceEscapeCharacters(key)} className={classes.gcImgSmall} />\r\n                                            </Hidden>\r\n\r\n                                        </Grid>\r\n                                    }\r\n                                </Grid>\r\n                                <Grid xs={7} align=\"right\" style={{ marginTop: 20 }} >\r\n\r\n                                    {items.length > 1 ?\r\n                                        <Grid style={{ marginTop: 10 }}><Select\r\n                                            labelId=\"Gift Cards\"\r\n                                            id={key}\r\n                                            name={key}\r\n                                            value={SelectedGiftCardValue(key)}\r\n                                            onChange={fieldhandleChange}\r\n                                            style={{ minWidth: 200 }}\r\n                                        >\r\n                                            <MenuItem value=\"None\">\r\n                                                <em>Select Amount</em>\r\n                                            </MenuItem>\r\n                                            {items.map((item, i) =>\r\n                                                (<MenuItem key={i} id={item.ProductID} prodID={item.ProductID} value={item.Price}>{item.ProductName}</MenuItem>))}\r\n                                        </Select>\r\n                                            <Grid align=\"right\" style={{ marginTop: 10 }} >\r\n                                                <NumberSpinner\r\n                                                    refrence={{ eventId: SelectedGiftCardValue(key), tourProductID: SelectedGiftCardProdID(key) }}\r\n                                                    value={parseInt(SelectedGiftCardQty(key))}\r\n                                                    minValue={0} maxValue={999} steps={1}\r\n                                                    changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}\r\n                                                ></NumberSpinner>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                        :\r\n                                        <>\r\n                                            {items[0].hasOwnProperty(\"MaxPrice\") ?\r\n                                                <Grid style={{ marginTop: 30 }} >\r\n                                                    <Grid style={{\r\n                                                        display: 'flex',\r\n                                                        flex: '1',\r\n                                                        'justify-content': 'flex-end'\r\n                                                    }}>\r\n                                                        <Typography variant='h5' style={{ marginTop: 20, padding: \"0px 10px 0px 0px\" }}> {Currency}</Typography>\r\n\r\n                                                        <TextField\r\n                                                            id={items[0].ProductID}\r\n                                                            name=\"cstAmount\"\r\n                                                            variant=\"outlined\"\r\n                                                            type=\"number\"\r\n                                                            CustomAmount\r\n                                                            value={CustomGiftCardVal(items[0].ProductID)}\r\n                                                            error={items[0].hasOwnProperty('InvalidAmount') ? items[0].InvalidAmount : false}\r\n                                                            onChange={UpdateCustomAmout}\r\n                                                            inputProps={{\r\n                                                                pattern: \"[0-9]*\",\r\n                                                                min: 0, style: { textAlign: 'right' }\r\n                                                            }}\r\n                                                        />\r\n                                                    </Grid>\r\n\r\n                                                    <Typography>(Min {Currency}{items[0].Price}, Max {Currency}{items[0].MaxPrice})</Typography>\r\n                                                </Grid>\r\n                                                :\r\n                                                <Grid style={{ marginTop: 10 }} align=\"right\" >\r\n                                                    <Typography variant=\"subtitle1\" gutterBottom> {items[0].ProductName}</Typography>\r\n                                                    <NumberSpinner\r\n                                                        refrence={{ eventId: items[0].Price, tourProductID: items[0].ProductID }}\r\n                                                        value={parseInt(items[0].Qty)}\r\n                                                        minValue={0} maxValue={999} steps={1}\r\n                                                        changeHandler={(refrence, value) => { changeQuantityHandler(refrence, value) }}\r\n                                                    ></NumberSpinner>\r\n                                                </Grid>\r\n                                            }\r\n                                        </>\r\n                                    }\r\n\r\n                                </Grid>\r\n                            </>\r\n                        )\r\n                    })}\r\n\r\n                    <Grid xs={12} align=\"right\" >\r\n                        <Grid xs={7} align=\"right\" style={{ marginTop: 50 }}>\r\n                            <Typography variant=\"h4\" component=\"h4\" >\r\n                                Total = {genfunction.ccyFormat(GiftCardsTotal())}\r\n                            </Typography>\r\n\r\n                        </Grid>\r\n                    </Grid>\r\n                    <Grid xs={12} align=\"right\" >\r\n                        <Grid xs={7} align=\"right\">\r\n                            <Button style={{ marginTop: 30 }}\r\n                                color=\"primary\" variant=\"contained\"\r\n                                onClick={() => AddToCard()}\r\n                            >Add to cart</Button>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n\r\n        </Container >\r\n    );\r\n};\r\n\r\nexport default MainGiftCards;\r\n","import React, { useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid } from '@material-ui/core';\r\nimport { GiftCardAreaCard } from './components';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport ErrorHandling from '../../components/ErrorHandling/ErrorHandling';\r\nimport { actionGetGiftCardDisplayAreas, actionResetGiftCardDisplayAreas } from 'actions';\r\nimport { actionStartAppLoader, actionEndAppLoader } from '../../actions/actionAppLoader';\r\nimport { actionResetPaymentTransaction } from 'actions';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    padding: theme.spacing(2),\r\n    [theme.breakpoints.up('sm')]: {\r\n      marginTop: theme.spacing(5)\r\n    }\r\n  },\r\n  pagination: {\r\n    marginTop: theme.spacing(3),\r\n    display: 'flex',\r\n    alignItems: 'center',\r\n    justifyContent: 'flex-end'\r\n  }\r\n}));\r\n\r\nconst GiftCardsAreasList = (props) => {\r\n\r\n  const constredirect = (area) => {\r\n\r\n    if (area) {\r\n      props.history.push({\r\n        pathname: 'giftcards/' + area.DisplayAreaNo\r\n      })\r\n    }\r\n  }\r\n\r\n  const dispatch = useDispatch()\r\n\r\n  useEffect(() => {\r\n    actionGetGiftCardDisplayAreas(dispatch);\r\n  }, []);\r\n\r\n\r\n  const classes = useStyles();\r\n  const giftcardAreaNumbers = useSelector(state => state.reducerGiftCardDisplayAreas);\r\n  const error = useSelector(state => state.reducerDisplayAreas.displayAreasError);\r\n  const giftcards = useSelector(state => state.reducerGiftCards);\r\n  const events = useSelector(state => state.reducerShopCart.events);\r\n  const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n  const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n  const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n  const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n  useEffect(() => {\r\n    if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n      giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n      actionResetPaymentTransaction(dispatch);\r\n    }\r\n  }, []);\r\n\r\n  useEffect(() => {\r\n\r\n    if (giftcardAreaNumbers.loading == true) {\r\n      actionStartAppLoader(dispatch);\r\n    }\r\n    else {\r\n      actionEndAppLoader(dispatch);\r\n    }\r\n  })\r\n\r\n  const errorcancelhandle = () => {\r\n    actionResetGiftCardDisplayAreas(dispatch);\r\n  }\r\n\r\n  if (giftcardAreaNumbers.giftcardsdisplayAreas === undefined) {\r\n    return <div>\r\n      <ErrorHandling msg={error} open={error.length > 0 ? true : false}\r\n        handleclose={errorcancelhandle} />\r\n    </div>\r\n  }\r\n\r\n  return (\r\n\r\n    <div className={classes.root}>\r\n\r\n      <div className={classes.content}>\r\n        <Grid\r\n          container\r\n          spacing={2}\r\n          style={{ paddingTop: window.matchMedia(\"(max-width: 500px)\").matches ? 35 : 5 }}\r\n        >\r\n          {giftcardAreaNumbers.giftcardsdisplayAreas.map((area, i) => {\r\n            return area.ShowOnline && area !== undefined ?\r\n              <Grid\r\n                item\r\n                key={area.DisplayAreaNo}\r\n                lg={4}\r\n                md={6}\r\n                xs={12}\r\n              >\r\n                <GiftCardAreaCard area={area} callCalender={constredirect} />\r\n              </Grid>\r\n\r\n              : null\r\n          })}\r\n\r\n        </Grid>\r\n      </div>\r\n    </div>\r\n  );\r\n};\r\n\r\nexport default GiftCardsAreasList;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Grid, Typography, IconButton, useMediaQuery } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers'\r\nimport ReactHtmlParser from 'react-html-parser';\r\nimport { useLocation } from \"react-router-dom\";\r\nimport InfoIcon from '@material-ui/icons/Info'\r\nimport moment from 'moment';\r\n\r\nimport { actionShopcartResetOrderProducts } from 'actions'\r\nimport ErrorHandling from 'components/ErrorHandling/ErrorHandling';\r\n\r\nconst { } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        paddingTop: 10,\r\n        paddingBottom: 10\r\n    },\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    titleText: {\r\n        paddingLeft: 5,\r\n        paddingRight: 5\r\n    },\r\n    subTitleText: {\r\n        paddingLeft: 5,\r\n        paddingRight: 5\r\n    },\r\n    button: {\r\n      width: 130\r\n    }\r\n}));\r\n\r\nconst OrderLocationItem = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const isSmScreen = useMediaQuery(theme => theme.breakpoints.up('sm'));\r\n\r\n    const { Location } = props;\r\n\r\n    const getStoreOpenDays = () => {\r\n        let openDays = \"\";\r\n        if (Location.OpeningTimes) {\r\n            openDays = Location.OpeningTimes[0].Day.substr(0, 3);\r\n            if (Location.OpeningTimes.length > 0) {\r\n                openDays += \" - \" + Location.OpeningTimes[Location.OpeningTimes.length - 1].Day.substr(0, 3);\r\n            }\r\n        }\r\n\r\n        return openDays;\r\n    }\r\n\r\n    const getDayOfWeek = (date) => {\r\n        const dayOfWeek = new Date(date).getDay();\r\n        return isNaN(dayOfWeek) ? null :\r\n            ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][dayOfWeek];\r\n    }\r\n\r\n    const getStoreOpenTimes = () => {\r\n        let openDaysTime = \"\";\r\n        let day = getDayOfWeek(Date.now());\r\n        if (Location.OpeningTimes && Location.OpeningTimes.length > 0) {\r\n            let times = Location.OpeningTimes.find(x => x.Day.toUpperCase() == day.toUpperCase());\r\n            if (times) {\r\n                let storeOpenTime = moment(moment().format(\"DD-MMM-YYYY \") + Location.OpeningTimes[0].Open);\r\n                let storeCloseTime = moment(moment().format(\"DD-MMM-YYYY \") + Location.OpeningTimes[0].Close);\r\n                openDaysTime = \"Open Today : \" + storeOpenTime.format(\"hh:mm a\") + \" - \" + storeCloseTime.format(\"hh:mm a\")\r\n            }\r\n        }\r\n\r\n        return openDaysTime;\r\n    }\r\n\r\n    const isStoreOpenNow = () => {\r\n        let isOpen = false;\r\n        let day = getDayOfWeek(Date.now());\r\n        if (Location.OpeningTimes && Location.OpeningTimes.length > 0) {\r\n            let times = Location.OpeningTimes.find(x => x.Day.toUpperCase() == day.toUpperCase());\r\n            if (times) {\r\n                let storeOpenTime = moment(moment().format(\"DD-MMM-YYYY \") + Location.OpeningTimes[0].Open);\r\n                let storeCloseTime = moment(moment().format(\"DD-MMM-YYYY \") + Location.OpeningTimes[0].Close);\r\n                let now = moment();\r\n                if (now > storeOpenTime && now < storeCloseTime) {\r\n                    isOpen = true;\r\n                }\r\n            }\r\n        }\r\n\r\n        return isOpen;\r\n    }\r\n\r\n    const onClickStoreHandler = () => {\r\n        actionShopcartResetOrderProducts(dispatch);\r\n        props.history.push('/orderlocationtab/' + Location.OrderLocation);\r\n    }\r\n\r\n\r\n    return (\r\n        <Grid className={classes.root} key={Location.OrderLocation} container spacing={1}>\r\n            <Grid container item xs={12} sm={8}>\r\n                <Grid item sm={11} xs={12}>\r\n                    <Typography className={classes.titleText} variant=\"h5\" color=\"textPrimary\" >{Location.OrderLocation}</Typography>\r\n                    <Typography className={classes.subTitleText} variant=\"subtitle1\" color=\"textPrimary\" >{getStoreOpenTimes()}</Typography>\r\n                    {Location.AverageWaitMinutes ?\r\n                        <Typography className={classes.subTitleText} variant=\"subtitle1\" color=\"textPrimary\" >{\"Avg Wait Time : \" + Location.AverageWaitMinutes + \" minutes\"}</Typography> : \"\"}\r\n                </Grid>\r\n            </Grid>\r\n\r\n            <Grid item xs={12} sm={4} align={isSmScreen ? \"right\" : \"left\"}>\r\n                <Button className={classes.button} variant='contained' color='primary'\r\n                    onClick={onClickStoreHandler}\r\n                    disabled={isStoreOpenNow() ? false : true}>\r\n                    {isStoreOpenNow() ? 'Order Now' : \"Not Open\"}\r\n                </Button>\r\n            </Grid>\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default OrderLocationItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nimport {\r\n    actionGetOrderLocationsByDisplayArea, actionShopcartResetOrderProducts,\r\n    actionResetPaymentTransaction\r\n} from 'actions'\r\n\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions/actionAppLoader';\r\nimport ErrorHandling from 'components/ErrorHandling/ErrorHandling';\r\nimport OrderLocationItem from './components/OrderLocationItem'\r\n\r\nconst { } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n}));\r\n\r\nconst OrderLocationScreen = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n\r\n    const payment = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const orderLocationsLoading = useSelector(state => state.reducerOrderLocations.loading);\r\n    const orderLocations = useSelector(state => state.reducerOrderLocations.orderLocations);\r\n\r\n    useEffect(() => {\r\n        if (payment && payment.ReceiptNo && payment.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        let areaNo = 0;\r\n\r\n        if (props.match.path == \"/orderlocation/Area/:id\")\r\n            areaNo = props.match.params.id;\r\n\r\n        actionGetOrderLocationsByDisplayArea(dispatch, areaNo);\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (orderLocationsLoading) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    }, [orderLocationsLoading])\r\n\r\n    useEffect(() => {\r\n        if (orderLocations && orderLocations.length == 1) {\r\n            actionShopcartResetOrderProducts(dispatch);\r\n            props.history.push('/orderlocationtab/' + orderLocations[0].OrderLocation);\r\n        }\r\n    }, [orderLocationsLoading])\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n    return (\r\n        <Grid className={classes.root} container spacing={2} justify=\"center\">\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n            <Grid item xs={12} md={6} lg={5}>\r\n                <img\r\n                    width={\"100%\"}\r\n                    height={\"100%\"}\r\n                    alt=\"Logo\"\r\n                    src={process.env.PUBLIC_URL + \"/images/orderLocationMap.png\"}\r\n                />\r\n            </Grid>\r\n            <Grid item xs={12} md={6} lg={5}>\r\n                {orderLocations.map(location => {\r\n                    return (<OrderLocationItem key={location.OrderLocation} Location={location} {...props} />)\r\n                })}\r\n            </Grid>\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default OrderLocationScreen;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Grid, Typography, FormControl, RadioGroup, FormControlLabel, Radio } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nimport {\r\n    actionGetOrderLocationsByDisplayArea, actionShopcartResetOrderProducts,\r\n    actionResetPaymentTransaction\r\n} from 'actions'\r\n\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions/actionAppLoader';\r\nimport ErrorHandling from 'components/ErrorHandling/ErrorHandling';\r\n\r\nconst { OrderLocationPageTabTitle } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    radioGroup: {\r\n        display: \"flex !important\"\r\n    }\r\n}));\r\n\r\nconst OrderLocationTab = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    let [orderLocation, setOrderLocation] = useState(null);\r\n    let [tabLocation, setTabLocation] = useState(0);\r\n\r\n    const payment = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const orderLocationsLoading = useSelector(state => state.reducerOrderLocations.loading);\r\n    const orderLocations = useSelector(state => state.reducerOrderLocations.orderLocations);\r\n    const orderLocationOrignal = useSelector(state => state.reducerOrderLocations.orderLocation);\r\n\r\n    useEffect(() => {\r\n        if (props.match.path == \"/orderlocationtab/:name\") {\r\n            if (orderLocations == undefined || orderLocations.length == 0)\r\n                actionGetOrderLocationsByDisplayArea(dispatch, 0);\r\n        }\r\n        else {\r\n            props.history.push('/notfound');\r\n        }\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (orderLocations && orderLocations.length > 0) {\r\n            var orderLocation = orderLocations.find(x => x.OrderLocation == props.match.params.name);\r\n\r\n            setOrderLocation(orderLocation)\r\n            if (orderLocationOrignal && orderLocationOrignal.OrderLocation != orderLocation.OrderLocation) {\r\n                actionShopcartResetOrderProducts(dispatch);\r\n            }\r\n\r\n            if (orderLocation && orderLocation.TabLocations && orderLocation.TabLocations.length == 1) {\r\n                props.history.push('/ordermenu/' + orderLocation.TabLocations[0].TabLocationID);\r\n            }\r\n        }\r\n    }, [orderLocations])\r\n\r\n    useEffect(() => {\r\n        if (orderLocationsLoading) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    }, [orderLocationsLoading])\r\n\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const onClickBrowserMenuHandler = () => {\r\n        let tabLocationID = orderLocation.TabLocations.find(x => x.TabLocationName == tabLocation).TabLocationID;\r\n        props.history.push('/ordermenu/' + tabLocationID);\r\n    }\r\n\r\n    useEffect(() => {\r\n        if (payment && payment.ReceiptNo && payment.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    if (orderLocation == undefined)\r\n        return null\r\n    else\r\n        return (\r\n            <Grid className={classes.root} container spacing={2} justifyContent=\"center\">\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Grid item xs={12} align=\"center\">\r\n                    <Typography variant=\"h1\" color=\"textPrimary\" >{orderLocation.OrderLocation}</Typography>\r\n                </Grid>\r\n                <Grid item xs={12} md={6}>\r\n                    <FormControl component=\"fieldset\" fullWidth={true}>\r\n                        <Typography variant=\"h4\" color=\"textPrimary\" >{OrderLocationPageTabTitle}</Typography>\r\n                        <RadioGroup className={classes.radioGroup} aria-label=\"TabLocation\" name=\"TabLocation1\" value={tabLocation}\r\n                            onChange={(event) => { setTabLocation(event.target.value) }}>\r\n                            {orderLocation.TabLocations.map(tl => {\r\n                                return (<FormControlLabel key={tl.TabLocationID} value={tl.TabLocationName} control={<Radio />} label={tl.TabLocationName} />)\r\n                            })}\r\n\r\n                        </RadioGroup>\r\n                    </FormControl>\r\n                </Grid>\r\n                <Grid item xs={12} align=\"center\">\r\n                    <Button className={classes.button} variant='contained' color='primary'\r\n                        onClick={onClickBrowserMenuHandler}\r\n                        disabled={tabLocation == \"\" ? true : false}>\r\n                        Browse Menu\r\n                    </Button>\r\n                </Grid>\r\n            </Grid>\r\n        );\r\n};\r\n\r\nexport default OrderLocationTab;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Grid, Typography } from '@material-ui/core';\r\nimport { genfunction } from 'helpers'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    MenuImage: {\r\n        width: 100,\r\n        height: 100,\r\n        maxWidth: 100,\r\n        maxHeight: 100\r\n    },\r\n    MenuBox: {\r\n        cursor: \"pointer\"\r\n    }\r\n}));\r\n\r\nconst MenuItem = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const { Menu } = props;\r\n\r\n    const onClickMenuHandler = (menuName) => {\r\n        props.history.push('/ordersubmenu/' + menuName);\r\n    }\r\n\r\n    return (\r\n        <Grid container spacing={1} key={Menu.MenuName} item xs={12} className={classes.MenuBox} onClick={() => { onClickMenuHandler(Menu.MenuName); }}>\r\n            <Grid item xs={5}>\r\n                {Menu.MenuImageURL && Menu.MenuImageURL != \"\" ?\r\n                    <img\r\n                        className={classes.MenuImage}\r\n                        width={'100%'}\r\n                        height={'100%'}\r\n                        alt=\"Logo\"\r\n                        src={Menu.MenuImageURL && Menu.MenuImageURL != \"\" ? genfunction.replaceEscapeCharacters(Menu.MenuImageURL) : process.env.PUBLIC_URL + \"/images/foodorder-placeholder.png\"} /> : <div className={classes.MenuImage}></div>}\r\n            </Grid>\r\n            <Grid item xs={7} style={{ alignSelf: \"center\" }}>\r\n                <Typography style={{ display: \"inline\" }} variant=\"subtitle1\">{Menu.MenuName}</Typography>\r\n            </Grid>\r\n            <Grid item xs={12}>\r\n                <hr></hr>\r\n            </Grid>\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default MenuItem;","import React, { useEffect, useState, useRef } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Grid, Typography, Link } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers'\r\n\r\nimport {\r\n    actionGetOrderLocationsByDisplayArea, actionGetOrderMenuByDisplayArea,\r\n    actionSetOrderLocation, actionResetPaymentTransaction\r\n} from 'actions'\r\n\r\nimport { actionStartAppLoader, actionEndAppLoader } from 'actions/actionAppLoader';\r\nimport ErrorHandling from 'components/ErrorHandling/ErrorHandling';\r\nimport MenuItem from './components/MenuItem'\r\n\r\nconst { ShowOrderItemPriceAs } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    MenuImage: {\r\n        width: 100,\r\n        height: 100,\r\n        maxWidth: 100,\r\n        maxHeight: 100\r\n    },\r\n    MenuBox: {\r\n        cursor: \"pointer\"\r\n    }\r\n}));\r\n\r\nconst OrderMenu = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n\r\n    const payment = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const orderLocationsLoading = useSelector(state => state.reducerOrderLocations.loading);\r\n    const orderLocations = useSelector(state => state.reducerOrderLocations.orderLocations);\r\n    const orderLocation = useSelector(state => state.reducerOrderLocations.orderLocation);\r\n    const orderMenuloading = useSelector(state => state.reducerOrderMenu.loading);\r\n    const orderMenu = useSelector(state => state.reducerOrderMenu.orderMenu);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n\r\n    useEffect(() => {\r\n        if (payment && payment.ReceiptNo && payment.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (props.match.path == \"/ordermenu/:id\") {\r\n            if (orderLocations == undefined || orderLocations.length == 0)\r\n                actionGetOrderLocationsByDisplayArea(dispatch, 0);\r\n        }\r\n        else {\r\n            props.history.push('/notfound');\r\n        }\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        window.scrollTo(0, 0)\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (orderLocations && orderLocations.length > 0) {\r\n            var tabLocationID = props.match.params.id;\r\n            let tl = { ...orderLocations.find(x => x.TabLocations.find(x => x.TabLocationID == tabLocationID) != undefined) };\r\n            tl.TabLocations = tl.TabLocations.filter(x => x.TabLocationID == tabLocationID);\r\n            actionSetOrderLocation(dispatch, tl);\r\n            actionGetOrderMenuByDisplayArea(dispatch, tl.DisplayArea);\r\n        }\r\n    }, [orderLocations])\r\n\r\n    useEffect(() => {\r\n        if (orderLocationsLoading || orderMenuloading) {\r\n            actionStartAppLoader(dispatch);\r\n        }\r\n        else if (orderLocationsLoading == false && orderMenuloading == false) {\r\n            actionEndAppLoader(dispatch);\r\n        }\r\n    }, [orderLocationsLoading, orderMenuloading])\r\n\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const onClickCheckoutHandler = () => {\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            props.history.push('/revieworderproducts');\r\n        }\r\n        else {\r\n            seterrorMsg(\"Please select item first\");\r\n        }\r\n    }\r\n\r\n    if (orderLocation == undefined || orderMenu == undefined)\r\n        return null\r\n    else\r\n        return (\r\n            <Grid className={classes.root} container spacing={2} justifyContent=\"center\">\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Grid item xs={12} align=\"center\">\r\n                    <Typography variant=\"h1\" color=\"textPrimary\" >You are ordering from</Typography>\r\n                    <Typography component={\"a\"} variant=\"subtitle1\" color=\"textPrimary\" >{orderLocation.OrderLocation + \" , \"}</Typography>\r\n                    <Link\r\n                        style={{ textDecoration: \"underline\" }}\r\n                        component=\"a\"\r\n                        variant=\"subtitle1\"\r\n                        onClick={() => {\r\n                            props.history.push('/orderlocationtab/' + orderLocation.OrderLocation);\r\n                        }}\r\n                    >\r\n                        {orderLocation.TabLocations[0].TabLocationName}\r\n                    </Link>\r\n                </Grid>\r\n                <Grid item container spacing={1} xs={12} sm={6} md={4} aligh=\"center\">\r\n                    {orderMenu.map(menu => {\r\n                        return (\r\n                            <MenuItem key={menu.MenuName} Menu={menu} {...props} />\r\n                        )\r\n                    })}\r\n                </Grid>\r\n                <Grid container item xs={12} justifyContent=\"center\">\r\n                    <Grid item container spacing={1} xs={12} sm={6} md={4} align=\"center\">\r\n                        <Grid item xs={6} align=\"left\">\r\n                            <Button variant=\"outlined\" color=\"primary\"\r\n                                onClick={() => { props.history.push('/orderlocation'); }}\r\n                            >\r\n                                Start Over\r\n                            </Button>\r\n                        </Grid>\r\n                        <Grid item xs={6} align=\"right\">\r\n                            <Button variant=\"contained\" color=\"primary\" onClick={onClickCheckoutHandler}>\r\n                                Checkout {genfunction.ccyFormat(ShowOrderItemPriceAs.toLowerCase() == \"inctax\" ? genfunction.getOrderProductsTotalPrice(orderProducts).total : genfunction.getOrderProductsTotalPrice(orderProducts).subtotal)}</Button>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n        );\r\n};\r\n\r\nexport default OrderMenu;","import React, { useState } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport {\r\n    Dialog, DialogContent, DialogActions, Button, Grid,\r\n    Typography, Select, MenuItem, Accordion, FormGroup, FormControlLabel,\r\n    AccordionDetails, Checkbox, AccordionSummary, TextField\r\n} from '@material-ui/core';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\n\r\nimport { NumberSpinner } from 'components'\r\nimport { genfunction } from 'helpers'\r\n\r\n\r\nconst { OrderSubMenuPageOrderProductNoteText } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    primarycolor: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    MenuImage: {\r\n        width: 70,\r\n        height: 70,\r\n        maxWidth: 70,\r\n        maxHeight: 70\r\n    },\r\n    button: {\r\n        //borderRadius: 20\r\n    }\r\n}));\r\n\r\nconst OrderProduct = props => {\r\n    const { open, Product, onCancel, onConfirm } = props;\r\n    const classes = useStyles();\r\n    let [product, SetProduct] = useState(JSON.parse(JSON.stringify(Product)));\r\n\r\n    if (product && product.Quantity == undefined) {\r\n        let objProduct = { ...product };\r\n        objProduct.Quantity = 1;\r\n        objProduct.ProductNotes = \"\";\r\n        SetProduct(objProduct);\r\n    }\r\n\r\n    const onChangeSubOptionHandler = (optionProductID, option) => {\r\n        let objProduct = { ...product };\r\n        let o = objProduct.Options.find(o => o.OptionName === option.OptionName);\r\n        if (option.IsRequired == true)\r\n            o.Products = o.Products.map(p => { p.IsSelected = false; return p; })\r\n        if (optionProductID && optionProductID != \"\") {\r\n            let p = o.Products.find(p => p.ProductID == optionProductID);\r\n            p.IsSelected = true;\r\n        }\r\n        SetProduct(objProduct);\r\n    }\r\n\r\n    const onChangeDeleteSubOptionHandler = (optionProductID, option) => {\r\n        let objProduct = { ...product };\r\n        let o = objProduct.Options.find(o => o.OptionName === option.OptionName);\r\n        let p = o.Products.find(p => p.ProductID == optionProductID);\r\n        p.IsSelected = false;\r\n        SetProduct(objProduct);\r\n    }\r\n\r\n    const onClickQuantityChangeHandler = (ref, Quantity) => {\r\n        let objProduct = { ...product };\r\n        objProduct.Quantity = Quantity;\r\n        SetProduct(objProduct);\r\n    }\r\n\r\n    const onChangeProductNoteHanlder = (text) => {\r\n        let objProduct = { ...product };\r\n        objProduct.ProductNotes = text;\r\n        SetProduct(objProduct);\r\n    }\r\n\r\n    const getTotalPrice = () => {\r\n        let optionPrice = 0;\r\n        if (product.Options && product.Options.length > 0) {\r\n            product.Options.forEach(option => {\r\n                if (option.Products && option.Products.length > 0) {\r\n                    option.Products.filter(p => p.IsSelected).forEach(p => {\r\n                        optionPrice += genfunction.getOrderProductPrice(p);\r\n                    });\r\n                }\r\n            });\r\n        }\r\n        return genfunction.getOrderProductPrice(product) + optionPrice;\r\n    }\r\n\r\n    const getOptionProductID = (option) => {\r\n        let p;\r\n        if (option && option.Products)\r\n            p = option.Products.find(x => x.IsSelected == true);\r\n\r\n        return p ? p.ProductID : \"\";\r\n    }\r\n\r\n    return (\r\n        <Dialog\r\n            open={open}\r\n            aria-labelledby=\"alert-dialog-title\"\r\n            aria-describedby=\"alert-dialog-description\"\r\n        >\r\n            <DialogContent>\r\n                <Grid container spacing={1}>\r\n                    <Grid container item xs={12}>\r\n                        <Grid item xs={4}>\r\n                            {product.ProductImageURL && product.ProductImageURL != \"\" ?\r\n                                <img\r\n                                    className={classes.MenuImage}\r\n                                    width={'100%'}\r\n                                    height={'100%'}\r\n                                    alt=\"Logo\"\r\n                                    src={product.ProductImageURL && product.ProductImageURL != \"\" ? genfunction.replaceEscapeCharacters(product.ProductImageURL) : process.env.PUBLIC_URL + \"/images/foodorder-placeholder.png\"}\r\n                                /> : <div className={classes.MenuImage}></div>}\r\n                        </Grid>\r\n                        <Grid item xs={8}>\r\n                            <Typography variant=\"h5\">{genfunction.replaceEscapeCharacters(product.ProductName)}</Typography>\r\n                            <Typography variant=\"subtitle1\">{genfunction.replaceEscapeCharacters(product.ProductDescription)}</Typography>\r\n                        </Grid>\r\n                    </Grid>\r\n\r\n                    {product.Options && product.Options.length > 0 ?\r\n                        product.Options\r\n                            .filter(x => x.IsRequired == true)\r\n                            .map(option => {\r\n                                return (\r\n                                    <Grid key={option.OptionName + \"_options\"} container item>\r\n                                        <Grid container item xs={12}>\r\n                                            <Grid item xs={6}>\r\n                                                <Typography variant=\"h5\">{genfunction.replaceEscapeCharacters(option.OptionName)} <Typography variant=\"caption\">{option.IsRequired ? \"(Required)\" : \"(Optional)\"}</Typography></Typography>\r\n                                            </Grid>\r\n                                            <Grid item xs={6}>\r\n                                                <Select\r\n                                                    fullWidth={true}\r\n                                                    labelId={option.OptionName}\r\n                                                    id={option.OptionName}\r\n                                                    value={getOptionProductID(option)}\r\n                                                    onChange={(event) => { onChangeSubOptionHandler(event.target.value, option) }}\r\n                                                >\r\n                                                    <MenuItem value=\"\">\r\n                                                        <em>None</em>\r\n                                                    </MenuItem>\r\n\r\n                                                    {option.Products && option.Products.length > 0 ?\r\n                                                        option.Products.map(optionproduct => {\r\n                                                            return (\r\n                                                                <MenuItem key={optionproduct.ProductID + optionproduct.ProductName}\r\n                                                                    value={optionproduct.ProductID}>\r\n                                                                    {genfunction.replaceEscapeCharacters(optionproduct.ProductName) + (optionproduct.PriceIncTax > 0 ? (\" \" + genfunction.ccyFormat(genfunction.getOrderProductPrice(optionproduct))) : \"\")}\r\n                                                                </MenuItem>\r\n                                                            )\r\n                                                        })\r\n                                                        : \"\"}\r\n                                                </Select>\r\n                                            </Grid>\r\n                                        </Grid>\r\n                                    </Grid>)\r\n                            })\r\n                        : \"\"}\r\n\r\n                    {product.Options && product.Options.filter(x => x.IsRequired == false).length > 0 ?\r\n                        <Grid item xs={8}>\r\n                            <Typography variant=\"h5\">Optional Items</Typography>\r\n                        </Grid> : \"\"}\r\n\r\n                    {product.Options && product.Options.length > 0 ?\r\n                        product.Options\r\n                            .filter(x => x.IsRequired == false)\r\n                            .map(option => {\r\n                                return (\r\n                                    <Grid key={option.OptionName + \"_options\"} item xs={12}>\r\n                                        <Accordion>\r\n                                            <AccordionSummary\r\n                                                expandIcon={<ExpandMoreIcon />}\r\n                                                aria-controls=\"panel1a-content\"\r\n                                                id=\"panel1a-header\"\r\n                                            >\r\n                                                <Typography variant=\"h5\">{genfunction.replaceEscapeCharacters(option.OptionName)}</Typography>\r\n                                            </AccordionSummary>\r\n                                            <AccordionDetails>\r\n                                                <Grid container spacing={1}>\r\n\r\n                                                    {option.Products && option.Products.length > 0 ?\r\n                                                        option.Products.map(optionproduct => {\r\n                                                            return (\r\n                                                                <Grid item xs={12}>\r\n                                                                    <FormGroup>\r\n                                                                        <FormControlLabel\r\n                                                                            control={<Checkbox\r\n                                                                                // value={getOptionProductID(optionproduct)}\r\n                                                                                value={optionproduct.ProductID}\r\n                                                                                checked={optionproduct.IsSelected}\r\n                                                                                onChange={(event) => { optionproduct.IsSelected ? onChangeDeleteSubOptionHandler(event.target.value, option) : onChangeSubOptionHandler(event.target.value, option) }}\r\n                                                                                name={optionproduct.ProductID} />}\r\n                                                                            label={genfunction.replaceEscapeCharacters(optionproduct.ProductName) + (optionproduct.PriceIncTax > 0 ? (\" \" + genfunction.ccyFormat(genfunction.getOrderProductPrice(optionproduct))) : \"\")}\r\n                                                                        /></FormGroup>\r\n                                                                </Grid>\r\n                                                            )\r\n                                                        })\r\n                                                        : \"\"}\r\n\r\n                                                </Grid>\r\n\r\n\r\n                                            </AccordionDetails>\r\n                                        </Accordion>\r\n                                    </Grid>\r\n                                )\r\n                            })\r\n                        : \"\"}\r\n                    {product.GetProductNotes ?\r\n                        <Grid container item xs={12} spacing={1}>\r\n                            <Grid item xs={12} align=\"left\">\r\n                                <Typography variant=\"h4\">{OrderSubMenuPageOrderProductNoteText}</Typography>\r\n                            </Grid>\r\n                            <Grid item xs={12}>\r\n                                <TextField\r\n                                    value={product.ProductNotes}\r\n                                    rows={4} variant=\"outlined\" fullWidth={true} multiline={true}\r\n                                    onChange={(event) => { onChangeProductNoteHanlder(event.target.value); }}\r\n                                ></TextField>\r\n                            </Grid>\r\n                        </Grid>\r\n                        : \"\"}\r\n\r\n                    <Grid container item xs={12}>\r\n                        <Grid item xs={6} align=\"left\">\r\n                            <Typography variant=\"h4\">Total : {genfunction.ccyFormat(getTotalPrice() * product.Quantity)}</Typography>\r\n                        </Grid>\r\n                        <Grid item xs={6} align=\"right\">\r\n                            <NumberSpinner\r\n                                refrence={{ eventId: 0, tourProductID: 0 }}\r\n                                value={product.Quantity}\r\n                                changeHandler={onClickQuantityChangeHandler}\r\n                                minValue={1} maxValue={50}\r\n                                steps={1}>\r\n                            </NumberSpinner>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n            </DialogContent>\r\n            <DialogActions>\r\n                <Grid container spacing={1}>\r\n                    <Grid item xs={6} align=\"left\">\r\n                        <Button\r\n                            onClick={onCancel}\r\n                            className={classes.button}\r\n                            color=\"primary\" variant='outlined'>\r\n                            Cancel\r\n                        </Button>\r\n                    </Grid>\r\n                    <Grid item xs={6} align=\"right\">\r\n                        <Button\r\n                            className={classes.button}\r\n                            disabled={!genfunction.IsRequiredOptionsSelectedForOrderItem(product)}\r\n                            onClick={() => { onConfirm(product); }}\r\n                            color=\"primary\" variant='contained'>\r\n                            {product.UniqueID ? \"Save\" : \"Add to cart\"}\r\n                        </Button>\r\n                    </Grid>\r\n                </Grid>\r\n            </DialogActions>\r\n        </Dialog >\r\n    );\r\n};\r\n\r\nOrderProduct.propTypes = {\r\n    open: PropTypes.bool.isRequired\r\n};\r\n\r\nexport default OrderProduct;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Grid, Typography, Card, CardHeader, CardContent, IconButton, Badge } from '@material-ui/core';\r\nimport InfoIcon from '@material-ui/icons/Info';\r\nimport { useSelector } from 'react-redux';\r\nimport { genfunction } from 'helpers'\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    headerbox: {\r\n        backgroundColor: theme.palette.primary.main,\r\n        color: theme.palette.primary.contrastText\r\n    },\r\n    MenuImage: {\r\n        width: 70,\r\n        height: 70,\r\n        maxWidth: 70,\r\n        maxHeight: 70\r\n    },\r\n    badge: {\r\n        fontSize: 22\r\n    },\r\n    badgebox: {\r\n        marginBottom: 20,\r\n        width: \"100%\",\r\n    }\r\n}));\r\n\r\nconst SubMenuItem = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const { Department, onClickAddProduct, onClickProductInfo } = props;\r\n\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n\r\n    const getProductQuantity = (ProductID) => {\r\n        let products = orderProducts.filter(x => x.ProductID == ProductID);\r\n        let qty = 0;\r\n        products.forEach(p => {\r\n            qty += p.Quantity;\r\n        });\r\n        return qty;\r\n    }\r\n\r\n    const SubMenuItem = (product, dep) => {\r\n        return <Grid key={product.ProductID + \"_Products\"} container spacing={1} item xs={12}>\r\n            <Grid container item spacing={1} xs={12}>\r\n                <Grid container item xs={5}>\r\n                    <Grid item xs={12} style={{ alignSelf: \"center\" }}>\r\n                        <IconButton onClick={() => { onClickProductInfo(product); }}>\r\n                            <InfoIcon color={\"primary\"} />\r\n                            {product.ProductImageURL && product.ProductImageURL != \"\" ?\r\n                                <img\r\n                                    className={classes.MenuImage}\r\n                                    width={'100%'}\r\n                                    height={'100%'}\r\n                                    alt=\"Logo\"\r\n                                    src={product.ProductImageURL && product.ProductImageURL != \"\" ? genfunction.replaceEscapeCharacters(product.ProductImageURL) : process.env.PUBLIC_URL + \"/images/foodorder-placeholder.png\"} /> : <div className={classes.MenuImage}></div>}\r\n                        </IconButton>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid container item xs={7}>\r\n                    <Grid item xs={8} style={{ alignSelf: \"center\" }}>\r\n                        <Typography variant=\"h5\">{genfunction.replaceEscapeCharacters(product.ProductName)}</Typography>\r\n                        <Typography variant=\"subtitle1\">{genfunction.ccyFormat(genfunction.getOrderProductPrice(product))}</Typography>\r\n                    </Grid>\r\n                    <Grid item xs={4} style={{ alignSelf: \"center\" }} align=\"right\">\r\n                        <Badge className={classes.badgebox} classes={{ badge: classes.badge }} color=\"error\" badgeContent={getProductQuantity(product.ProductID)} variant=\"standard\" />\r\n                        <Button variant='contained' color='primary'\r\n                            onClick={() => onClickAddProduct(dep, product)}\r\n                        >\r\n                            Add\r\n                        </Button>\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n            <Grid item xs={12}>\r\n                <hr></hr>\r\n            </Grid>\r\n        </Grid>;\r\n    }\r\n\r\n\r\n    return (\r\n        <Grid container spacing={1} key={Department.DepartmentName} item xs={12}>\r\n            <Grid item xs={12}>\r\n                <Card>\r\n                    <CardHeader className={classes.headerbox}\r\n                        title={Department.DepartmentName}\r\n                        titleTypographyProps={{ color: \"inherit\" }}\r\n                    />\r\n                    <CardContent>\r\n                        {Department.Products.map(product => {\r\n                            return SubMenuItem(product, Department)\r\n                        })}\r\n                    </CardContent>\r\n                </Card>\r\n            </Grid>\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default SubMenuItem;","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Grid, Typography, IconButton } from '@material-ui/core';\r\nimport ArrowLeftIcon from '@material-ui/icons/ArrowBack';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport { actionAddOrderProduct, actionUpdateOrderProduct } from 'actions/actionShopCart';\r\n\r\nimport { DialogeBox, ErrorHandling } from 'components';\r\nimport { genfunction } from 'helpers'\r\nimport OrderProduct from './components/OrderProduct'\r\nimport SubMenuItem from './components/SubMenuItem'\r\n\r\nconst { ShowOrderItemPriceAs, OrderItemsInCartError2 } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    RightButtonlIcon: {\r\n        '& svg': {\r\n            fontSize: 40\r\n        }\r\n    }\r\n}));\r\n\r\nconst OrderSubMenu = (props) => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [infoProduct, setInfoProduct] = useState(null);\r\n    let [productPopUp, setProductPopUp] = useState({\r\n        isOpen: false,\r\n        Product: null,\r\n        Department: null\r\n    });\r\n\r\n    const orderLocation = useSelector(state => state.reducerOrderLocations.orderLocation);\r\n    const orderMenu = useSelector(state => state.reducerOrderMenu.orderMenu);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const gatickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const giftcards = useSelector(state => state.reducerGiftCards.giftcards);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    useEffect(() => {\r\n        window.scrollTo(0, 0);\r\n        if (props.match.path == \"/ordersubmenu/:name\") {\r\n\r\n        }\r\n        else {\r\n            props.history.push('/notfound');\r\n        }\r\n    }, [])\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const onClickBackButtonHandler = () => {\r\n        props.history.goBack();\r\n    }\r\n\r\n    const onClickProductHandler = (department, product) => {\r\n        setProductPopUp({\r\n            isOpen: true,\r\n            Product: product,\r\n            Department: department\r\n        });\r\n    }\r\n\r\n    const onClickCancelProductHanlder = () => {\r\n        errorcancelhandle();\r\n        setProductPopUp({\r\n            isOpen: false,\r\n            Product: null,\r\n            Department: null\r\n        });\r\n    }\r\n\r\n    const hasSameOptions = (ProductA, ProductB) => {\r\n        if (ProductA.Options && ProductB.Options) {\r\n            return ProductA.Options.every(PAOption => {\r\n                let PBOption = ProductB.Options.find(x => x.OptionName === PAOption.OptionName);\r\n                if (PAOption.Products && PBOption.Products) {\r\n                    let PAProduct = PAOption.Products.filter(x => x.IsSelected);\r\n                    let PBProduct = PBOption.Products.filter(x => x.IsSelected);\r\n                    if (PAProduct.length == PBProduct.length) {\r\n                        return PAProduct.every(AProduct => {\r\n                            if (PBProduct.find(x => x.ProductID === AProduct.ProductID) == undefined) {\r\n                                return false;\r\n                            }\r\n                            else {\r\n                                return true;\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    const isDifferentItemsAlreadyInCart = () => {\r\n        if ((events && events.length > 0) || (gatickets && gatickets.length > 0) || (membershipPackages && membershipPackages.length > 0) || (giftcards && giftcards.length > 0) || (donationProducts && donationProducts.length > 0)) {\r\n            return true;\r\n        }\r\n        else\r\n            return false;\r\n    }\r\n\r\n    const onClickAddToCartProductHanlder = (Product) => {\r\n\r\n        if (isDifferentItemsAlreadyInCart()) {\r\n            seterrorMsg(OrderItemsInCartError2);\r\n        }\r\n        else if (Product.Quantity == 0) {\r\n            seterrorMsg(\"Please select quantity\")\r\n        }\r\n        else if (genfunction.IsRequiredOptionsSelectedForOrderItem(Product) == false) {\r\n            seterrorMsg(\"Please select required option first\");\r\n        }\r\n        else {\r\n            errorcancelhandle();\r\n            let objSelectedProducts = [...orderProducts];\r\n            let objProduct = objSelectedProducts.find(p => p.ProductID === Product.ProductID && p.ProductNotes === Product.ProductNotes && hasSameOptions(p, Product));\r\n            if (objProduct) {\r\n                objProduct.Quantity += Product.Quantity;\r\n                actionUpdateOrderProduct(dispatch, objProduct);\r\n            }\r\n            else {\r\n                objProduct = Object.assign({}, Product);\r\n                objProduct.UniqueID = uuidv4();\r\n                actionAddOrderProduct(dispatch, objProduct);\r\n            }\r\n            setProductPopUp({\r\n                isOpen: false,\r\n                Product: null,\r\n                Department: null\r\n            });\r\n        }\r\n    }\r\n\r\n    const onClickCheckoutHandler = () => {\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            props.history.push('/revieworderproducts');\r\n        }\r\n        else {\r\n            seterrorMsg(\"Please select item first\");\r\n        }\r\n    }\r\n\r\n    if (orderLocation == undefined || orderMenu == undefined)\r\n        return null\r\n    else\r\n        return (\r\n            <Grid className={classes.root} container spacing={2} justifyContent=\"center\">\r\n                <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Grid container item xs={12} justifyContent=\"center\">\r\n                    <Grid item xs={12} sm={9} md={6} lg={4} align=\"left\">\r\n                        <IconButton className={classes.RightButtonlIcon} onClick={onClickBackButtonHandler}>\r\n                            <ArrowLeftIcon color={\"primary\"} />\r\n                            <Typography style={{ paddingLeft: 20 }} variant=\"h1\" color=\"textPrimary\" >{props.match.params.name}</Typography>\r\n                        </IconButton>\r\n                    </Grid>\r\n                </Grid>\r\n                <Grid item container spacing={1} xs={12} sm={9} md={6} lg={4} aligh=\"center\">\r\n                    {orderMenu.find(x => x.MenuName == props.match.params.name && x.Departments && x.Departments.length > 0).Departments.filter(x => x.Products).map(dep => {\r\n                        return <SubMenuItem key={dep.DepartmentName} Department={dep} onClickAddProduct={onClickProductHandler} onClickProductInfo={setInfoProduct}  ></SubMenuItem>\r\n                    })}\r\n                </Grid>\r\n                <Grid container item xs={12} justifyContent=\"center\">\r\n                    <Grid item container spacing={1} xs={12} sm={9} md={6} lg={4} aligh=\"center\">\r\n                        <Grid item xs={6} align=\"left\">\r\n                            <Button variant=\"outlined\" color=\"primary\"\r\n                                onClick={() => { props.history.push('/orderlocation'); }}\r\n                            >\r\n                                Start Over\r\n                            </Button>\r\n                        </Grid>\r\n                        <Grid item xs={6} align=\"right\">\r\n                            <Button variant=\"contained\" color=\"primary\" onClick={onClickCheckoutHandler}>\r\n                                Checkout {genfunction.ccyFormat(ShowOrderItemPriceAs.toLowerCase() == \"inctax\" ? genfunction.getOrderProductsTotalPrice(orderProducts).total : genfunction.getOrderProductsTotalPrice(orderProducts).subtotal)}</Button>\r\n                        </Grid>\r\n                    </Grid>\r\n                </Grid>\r\n                <DialogeBox open={infoProduct ? true : false} title={infoProduct ? genfunction.replaceEscapeCharacters(infoProduct.ProductName) : \"\"}\r\n                    message={infoProduct ? genfunction.replaceEscapeCharacters(infoProduct.ProductDescription) : \"\"}\r\n                    button1text={\"Close\"}\r\n                    button1clickhandler={() => { setInfoProduct(null) }}>\r\n                </DialogeBox>\r\n                {productPopUp && productPopUp.Product ?\r\n                    <OrderProduct open={productPopUp.isOpen} Product={productPopUp.Product}\r\n                        onConfirm={onClickAddToCartProductHanlder}\r\n                        onCancel={onClickCancelProductHanlder}\r\n                    >\r\n                    </OrderProduct>\r\n                    : \"\"}\r\n            </Grid>\r\n        );\r\n};\r\n\r\nexport default OrderSubMenu;","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n    Typography, Grid, IconButton, Button\r\n} from '@material-ui/core';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport EditIcon from '@material-ui/icons/Edit';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nimport { ErrorHandling, DialogeBox } from 'components'\r\nimport { genfunction } from 'helpers'\r\nimport OrderProduct from './components/OrderProduct'\r\n\r\nimport { actionDeleteOrderProduct, actionUpdateOrderProducts } from 'actions/actionShopCart'\r\n\r\nconst { CartDiscardMsg } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    },\r\n    canceButtonlIcon: {\r\n        '& svg': {\r\n            fontSize: 20\r\n        },\r\n        padding: 0,\r\n        paddingLeft: 10\r\n    }\r\n}));\r\n\r\nconst OrderItemsReview = props => {\r\n\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [productPopUp, setProductPopUp] = useState({\r\n        isOpen: false,\r\n        Product: null,\r\n        Department: null\r\n    });\r\n\r\n    const [productDeletePopUp, setProductDeletePopUp] = useState({\r\n        isOpen: false,\r\n        Product: null\r\n    });\r\n\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const orderLocation = useSelector(state => state.reducerOrderLocations.orderLocation);\r\n    const carddiscard = useSelector(state => state.reducerCardDiscardTime);\r\n\r\n    useEffect(() => {\r\n        if ((orderProducts && orderProducts.length == 0)) {\r\n            let tabLocationID = orderLocation.TabLocations[0].TabLocationID;\r\n            props.history.push('/ordermenu/' + tabLocationID);\r\n        }\r\n    }, [orderProducts])\r\n\r\n    const getAllTotal = () => {\r\n\r\n        let amount = {\r\n            subtotal: 0,\r\n            tax: 0,\r\n            total: 0\r\n        }\r\n\r\n        let foodAmount = genfunction.getOrderProductsTotalPrice(orderProducts);\r\n        amount.subtotal += foodAmount.subtotal;\r\n        amount.tax += foodAmount.tax;\r\n        amount.total += foodAmount.total;\r\n\r\n        return amount;\r\n    }\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const getProductOptions = (product) => {\r\n        if (product.Options) {\r\n\r\n            let productWithOptions = product.Options.filter(x => x.Products && x.Products.length > 0 && x.Products.find(y => y.IsSelected == true) != undefined);\r\n            if (productWithOptions && productWithOptions.length > 0) {\r\n                return (\r\n                    productWithOptions.map(option => {\r\n                        return (\r\n                            option.Products.map(opproduct => {\r\n                                return (\r\n                                    opproduct.IsSelected ?\r\n                                        <Typography variant='subtitle2'>\r\n                                            {genfunction.replaceEscapeCharacters(opproduct.ProductName)}\r\n                                        </Typography> : \"\"\r\n                                )\r\n                            }))\r\n                    })\r\n                );\r\n            }\r\n        }\r\n\r\n        return \"\";\r\n    }\r\n\r\n    const onClickMakeChangesHandler = () => {\r\n        let tabLocationID = orderLocation.TabLocations[0].TabLocationID;\r\n        props.history.push('/ordermenu/' + tabLocationID);\r\n    }\r\n\r\n    const onClickFinishHandler = () => {\r\n        props.history.push('/checkout');\r\n    }\r\n\r\n\r\n    const onClickProductHandler = (department, product) => {\r\n        setProductPopUp({\r\n            isOpen: true,\r\n            Product: product,\r\n            Department: department\r\n        });\r\n    }\r\n\r\n    const onClickCancelProductHanlder = () => {\r\n        errorcancelhandle();\r\n        setProductPopUp({\r\n            isOpen: false,\r\n            Product: null,\r\n            Department: null\r\n        });\r\n    }\r\n\r\n    const hasSameOptions = (ProductA, ProductB) => {\r\n        if (ProductA.Options && ProductB.Options) {\r\n            return ProductA.Options.every(PAOption => {\r\n                let PBOption = ProductB.Options.find(x => x.OptionName === PAOption.OptionName);\r\n                if (PAOption.Products && PBOption.Products) {\r\n                    let PAProduct = PAOption.Products.filter(x => x.IsSelected);\r\n                    let PBProduct = PBOption.Products.filter(x => x.IsSelected);\r\n                    if (PAProduct.length == PBProduct.length) {\r\n                        return PAProduct.every(AProduct => {\r\n                            if (PBProduct.find(x => x.ProductID === AProduct.ProductID) == undefined) {\r\n                                return false;\r\n                            }\r\n                            else {\r\n                                return true;\r\n                            }\r\n                        });\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        else {\r\n            return true;\r\n        }\r\n    }\r\n\r\n    const onClickAddToCartProductHanlder = (Product) => {\r\n        if (Product.Quantity == 0) {\r\n            seterrorMsg(\"Please select quantity\")\r\n        }\r\n        else if (genfunction.IsRequiredOptionsSelectedForOrderItem(Product) == false) {\r\n            seterrorMsg(\"Please select required option first\");\r\n        }\r\n        else {\r\n            errorcancelhandle();\r\n            let objSelectedProducts = [...orderProducts];\r\n\r\n            let objProduct = objSelectedProducts.find(p => p.ProductID === Product.ProductID && p.ProductNotes === Product.ProductNotes && hasSameOptions(p, Product));\r\n            if (objProduct) {\r\n                if (objProduct.UniqueID == Product.UniqueID) {\r\n                    objProduct.Quantity = Product.Quantity;\r\n                }\r\n                else {\r\n                    objProduct.Quantity += Product.Quantity;\r\n                    objSelectedProducts = objSelectedProducts.filter(x => x.UniqueID != Product.UniqueID);\r\n                }\r\n            }\r\n            else {\r\n                objProduct = Object.assign({}, Product);\r\n                objProduct.UniqueID = uuidv4();\r\n                objSelectedProducts.push(objProduct);\r\n                objSelectedProducts = objSelectedProducts.filter(x => x.UniqueID != Product.UniqueID);\r\n            }\r\n\r\n            actionUpdateOrderProducts(dispatch, objSelectedProducts);\r\n\r\n            setProductPopUp({\r\n                isOpen: false,\r\n                Product: null,\r\n                Department: null\r\n            });\r\n        }\r\n    }\r\n\r\n    function millisecondsToTime(milli) {\r\n        var seconds = Math.floor((milli / 1000) % 60);\r\n        var minutes = Math.floor((milli / (60 * 1000)) % 60);\r\n        return minutes + \":\" + genfunction.PaddingString(seconds, \"0\", 2);\r\n    }\r\n\r\n    return (\r\n        <Grid container className={classes.root} justifyContent=\"center\">\r\n            <Grid container item spacing={2} xs={12} sm={10} md={8} lg={6}>\r\n                <ErrorHandling color={\"error\"} msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n                <Grid item xs={12} align=\"center\">\r\n                    <Typography variant=\"h1\" color=\"textPrimary\" >Review your Order</Typography>\r\n                    <Typography variant=\"subtitle1\" color=\"textPrimary\" >{orderLocation.OrderLocation + \" , \" + orderLocation.TabLocations[0].TabLocationName}</Typography>\r\n\r\n                    <Typography variant=\"h5\" component=\"h5\" style={{ marginTop: props.MarginTop }}>\r\n                        {CartDiscardMsg} {\" \"} {millisecondsToTime(carddiscard.DiscardTime * 1000)}\r\n                    </Typography>\r\n\r\n                </Grid>\r\n                {/* Food Order */}\r\n                <Grid container item xs={12} spacing={2}>\r\n                    {orderProducts.map(product => {\r\n                        return (\r\n                            <Grid key={product.ProductName + \"_Food_ShopCart\"} container item xs={12}>\r\n                                <Grid item xs={1}>\r\n                                    <IconButton\r\n                                        className={classes.canceButtonlIcon}\r\n                                        onClick={() => { onClickProductHandler(null, product) }}\r\n                                    >\r\n                                        <EditIcon color={\"primary\"} />\r\n                                    </IconButton>\r\n                                </Grid>\r\n                                <Grid item xs={6} align=\"left\">\r\n                                    <Typography variant='h6'>\r\n                                        {genfunction.replaceEscapeCharacters(product.ProductName)}\r\n                                    </Typography>\r\n                                    {getProductOptions(product)}\r\n\r\n                                </Grid>\r\n                                <Grid item xs={2}>\r\n                                    <Typography variant='h6'>\r\n                                        x {product.Quantity}\r\n                                    </Typography>\r\n                                </Grid>\r\n                                <Grid item xs={2} align=\"right\">\r\n                                    <Typography variant='h6'>\r\n                                        {genfunction.ccyFormat(genfunction.getOrderProductsTotalPrice([product]).subtotal)}\r\n                                    </Typography>\r\n                                </Grid>\r\n                                <Grid item xs={1}>\r\n                                    <IconButton\r\n                                        className={classes.canceButtonlIcon}\r\n                                        onClick={() => setProductDeletePopUp({ isOpen: true, Product: product })}\r\n                                    >\r\n                                        <DeleteIcon color={\"error\"} />\r\n                                    </IconButton>\r\n                                </Grid>\r\n                            </Grid>\r\n                        )\r\n                    })}\r\n                </Grid>\r\n\r\n                <Grid container xs={12} item spacing={2}>\r\n\r\n                    <Grid item xs={7}>\r\n                    </Grid>\r\n                    <Grid item xs={2}>\r\n                        <Typography variant='h6'>\r\n                            Subtotal\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={2} align=\"right\">\r\n                        <Typography variant='h6'>\r\n                            {genfunction.ccyFormat(getAllTotal().subtotal)}\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={1}>\r\n                    </Grid>\r\n\r\n                    <Grid item xs={7}>\r\n                    </Grid>\r\n                    <Grid item xs={2}>\r\n                        <Typography variant='h6'>\r\n                            Tax\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={2} align=\"right\">\r\n                        <Typography variant='h6'>\r\n                            {genfunction.ccyFormat(getAllTotal().tax)}\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={1}>\r\n                    </Grid>\r\n\r\n                    <Grid item xs={7}>\r\n                    </Grid>\r\n                    <Grid item xs={2}>\r\n                        <Typography variant='h6'>\r\n                            Total\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={2} align=\"right\">\r\n                        <Typography variant='h5'>\r\n                            {genfunction.ccyFormat(getAllTotal().total)}\r\n                        </Typography>\r\n                    </Grid>\r\n                    <Grid item xs={1}>\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <Grid container item xs={12}>\r\n                    <Grid item xs={6} align=\"center\">\r\n                        <Button className={classes.button} variant=\"outlined\" color=\"primary\"\r\n                            onClick={onClickMakeChangesHandler}\r\n                        >Add More Item</Button>\r\n                    </Grid>\r\n                    <Grid item xs={6} align=\"center\">\r\n                        <Button className={classes.button} variant=\"contained\" color=\"primary\"\r\n                            disabled={orderProducts && orderProducts.length > 0 ? false : true}\r\n                            onClick={onClickFinishHandler}\r\n                        >Finish & Pay</Button>\r\n                    </Grid>\r\n                </Grid>\r\n\r\n                <DialogeBox open={productDeletePopUp.isOpen} title=\"Confirmation\"\r\n                    message=\"You are about to remove the item from cart. are you sure?\"\r\n                    button1text=\"Yes\"\r\n                    button1clickhandler={() => { actionDeleteOrderProduct(dispatch, productDeletePopUp.Product); setProductDeletePopUp({ isOpen: false, Product: null }) }}\r\n                    button2text=\"No\"\r\n                    button2clickhandler={() => setProductDeletePopUp({ isOpen: false, Product: null })}\r\n                ></DialogeBox>\r\n\r\n                {productPopUp && productPopUp.Product ?\r\n                    <OrderProduct open={productPopUp.isOpen} Product={productPopUp.Product}\r\n                        onConfirm={onClickAddToCartProductHanlder}\r\n                        onCancel={onClickCancelProductHanlder}\r\n                    >\r\n                    </OrderProduct>\r\n                    : \"\"}\r\n            </Grid>\r\n        </Grid >\r\n    );\r\n};\r\n\r\nexport default OrderItemsReview;","import React, { useState, useEffect } from 'react';\r\nimport { makeStyles, withStyles } from '@material-ui/styles';\r\nimport { useSelector } from 'react-redux';\r\nimport {\r\n    Typography, TableCell, IconButton, TableRow, Grid, RadioGroup,\r\n    FormControlLabel, Radio, Switch, Button, FormControl, TextField, useTheme, useMediaQuery\r\n} from '@material-ui/core';\r\n\r\nimport ToggleButton from '@material-ui/lab/ToggleButton';\r\nimport ToggleButtonGroup from '@material-ui/lab/ToggleButtonGroup';\r\n\r\nimport InfoIcon from '@material-ui/icons/Info'\r\nimport { genfunction } from 'helpers'\r\nimport { NumberInput, FormattedInputs } from 'components'\r\nimport { Height } from '@material-ui/icons';\r\n\r\nconst { Currency } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    amountBtn: {\r\n        margin: 3\r\n    },\r\n    img: {\r\n        width: \"100%\",\r\n        //Height: 200,\r\n        objectFit: \"cover\",\r\n        objectPosition: \"bottom\"\r\n    }\r\n}));\r\n\r\nconst StyledToggleButtonGroup = withStyles((theme) => ({\r\n    grouped: {\r\n        marginRight: theme.spacing(1),\r\n        marginTop: theme.spacing(1),\r\n        display: \"unset\",\r\n        minWidth: 60,\r\n        border: '1px solid !important',\r\n        '&:not(:first-child)': {\r\n            borderRadius: theme.shape.borderRadius,\r\n        },\r\n        '&:first-child': {\r\n            borderRadius: theme.shape.borderRadius,\r\n        },\r\n    }\r\n\r\n}))(ToggleButtonGroup);\r\n\r\nconst DonationProduct = props => {\r\n    const { Product, onChangeAmount } = props;\r\n    const classes = useStyles();\r\n\r\n    const cartDonationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    let [selectedToogleButton, setSelectedToogleButton] = React.useState(null);\r\n    let [otherAmount, setOtherAmount] = React.useState(null);\r\n    let [validationInfo, setValidationInfo] = React.useState(\"\");\r\n\r\n    let hasImage = Product.ProductImageURL && Product.ProductImageURL != \"\";\r\n\r\n    useEffect(() => {\r\n        if (cartDonationProducts && cartDonationProducts.length > 0) {\r\n            let item = cartDonationProducts.find(x => x.ProductID == Product.ProductID)\r\n            if (item) {\r\n                if (item.DisplayAmount == \"other\")\r\n                    setOtherAmount(item.Amount);\r\n\r\n                setSelectedToogleButton(item.DisplayAmount);\r\n            }\r\n        }\r\n    }, [cartDonationProducts])\r\n\r\n    const onChangeToogleButtonHandler = (event, newValue) => {\r\n        setSelectedToogleButton(newValue);\r\n        if (newValue)\r\n            onChangeAmount(getNewProductObj(Product, newValue.toString(), newValue == \"other\" ? 0 : parseFloat(newValue)))\r\n        else\r\n            onChangeAmount(getNewProductObj(Product, \"\", 0))\r\n\r\n        if (newValue != \"other\")\r\n            setOtherAmount(null);\r\n    };\r\n\r\n    const getNewProductObj = (product, displayAmount, amount) => {\r\n        let prod = {\r\n            ProductID: product.ProductID,\r\n            ProductName: product.ProductName,\r\n            DisplayArea: product.DisplayArea,\r\n            DisplayAmount: displayAmount,\r\n            Amount: amount,\r\n            UseAlternateMerchantOnline: product.UseAlternateMerchantOnline\r\n        }\r\n        return prod;\r\n    }\r\n\r\n    const onValidationChangeOtherAmount = (info) => {\r\n        setValidationInfo(info);\r\n    }\r\n\r\n    const onChangeOtherAmount = (event) => {\r\n        setOtherAmount(event.target.value);\r\n        onChangeAmount(getNewProductObj(Product, \"other\", parseFloat(event.target.value)))\r\n    }\r\n\r\n    const getDisplayAmountButtons = (product) => {\r\n\r\n        return <StyledToggleButtonGroup\r\n            value={selectedToogleButton}\r\n            exclusive\r\n            onChange={onChangeToogleButtonHandler}\r\n            aria-label=\"text ToogleButton\"\r\n            size='small'\r\n            style={{ display: \"unset\" }}\r\n\r\n        >\r\n            {product.DisplayAmounts?.sort((a, b) => a.SortOrder - b.SortOrder).map(amount => {\r\n                return <ToggleButton key={Product.ProductID + \"_\" + amount.Amount} value={amount.Amount.toString()} aria-label=\"left aligned\">\r\n                    {Currency + amount.Amount}\r\n                </ToggleButton>\r\n            })}\r\n            {product.OtherValue && product.OtherValue.length > 0 ?\r\n                <ToggleButton key={Product.ProductID + \"_other\"} value=\"other\" aria-label=\"left aligned\">\r\n                    Other\r\n                </ToggleButton> : \"\"}\r\n            {selectedToogleButton == \"other\" ?\r\n                <FormattedInputs\r\n                    donaValue={otherAmount}\r\n                    minValue={Product.OtherValue[0].MinAmount}\r\n                    maxValue={Product.OtherValue[0].MaxAmount}\r\n                    productName={Product.ProductName}\r\n                    handleOtherPrice={onChangeOtherAmount}\r\n                    Validated={onValidationChangeOtherAmount}\r\n                ></FormattedInputs> : \"\"}\r\n\r\n        </StyledToggleButtonGroup>\r\n    }\r\n\r\n    return (\r\n        <Grid item container spacing={2}>\r\n            <Grid item xs={12}>\r\n                <Typography variant='h4'>{Product.ProductName}</Typography>\r\n            </Grid>\r\n            <Grid container item spacing={2}>\r\n                {hasImage ?\r\n                    <Grid item xs={4}>\r\n                        <img src={genfunction.replaceEscapeCharacters(Product.ProductImageURL)} className={classes.img} />\r\n                    </Grid> : \"\"}\r\n                <Grid item xs={hasImage ? 8 : 12}>\r\n                    <Grid item xs={12}>\r\n                        <Typography variant='subtitle1'>{Product.ProductDescription}</Typography>\r\n                    </Grid>\r\n                    <Grid item xs={12}>\r\n                        {getDisplayAmountButtons(Product)}</Grid>\r\n                    <Grid item xs={12}>\r\n                        {validationInfo != \"\" ?\r\n                            <Typography variant='caption' color='error'>{validationInfo}</Typography> : \"\"}\r\n                    </Grid>\r\n                </Grid>\r\n            </Grid>\r\n\r\n        </Grid>\r\n    );\r\n};\r\n\r\nexport default DonationProduct;","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/styles';\r\nimport { Button, Container } from '@material-ui/core';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Grid, TextField, Typography } from '@material-ui/core';\r\n\r\nimport { genfunction } from 'helpers'\r\nimport {\r\n    actionStartAppLoader, actionEndAppLoader, actionGetProductsByTypeAndDisplayAreas,\r\n    actionShopCartUpdateDonationProduct, actionGetDisplayAreasByIdAndType,\r\n    actionResetPaymentTransaction\r\n} from 'actions';\r\nimport { ErrorHandling, Title } from 'components';\r\nimport DonationProduct from './components/DonationProduct'\r\n\r\nconst { OrderItemsInCartError } = window['runConfig'];\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n    root: {\r\n        padding: theme.spacing(2),\r\n        [theme.breakpoints.up('sm')]: {\r\n            marginTop: theme.spacing(5)\r\n        }\r\n    }\r\n}));\r\n\r\nconst DonationProducts = (props) => {\r\n    const classes = useStyles();\r\n    const dispatch = useDispatch();\r\n    const [errorMsg, seterrorMsg] = useState(\"\");\r\n    const [displayArea, setDisplayArea] = useState(null);\r\n    const [selectedProducts, setSelectedProducts] = useState([]);\r\n    const [viewProducts, setViewProducts] = useState([]);\r\n    const [note, setNote] = useState(\"\");\r\n\r\n    const cartDonationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    const products = useSelector(state => state.reducerProduct.products);\r\n    const loading = useSelector(state => state.reducerProduct.loading);\r\n    const error = useSelector(state => state.reducerProduct.error);\r\n\r\n    const displayAreas = useSelector(state => state.reducerDisplayAreas.displayAreas);\r\n    const displayAreasLoading = useSelector(state => state.reducerDisplayAreas.loading);\r\n    const displayAreasError = useSelector(state => state.reducerDisplayAreas.displayAreasError);\r\n\r\n    const gaTickets = useSelector(state => state.reducerShopCart.GATickets);\r\n    const membershipPackages = useSelector(state => state.reducerShopCart.MembershipPackages);\r\n    const events = useSelector(state => state.reducerShopCart.events);\r\n    const paymenttranstate = useSelector(state => state.reducerPaymentTransaction.Payment);\r\n    const giftcards = useSelector(state => state.reducerGiftCards);\r\n    const orderProducts = useSelector(state => state.reducerShopCart.orderProducts);\r\n    const donationProducts = useSelector(state => state.reducerShopCart.donationProducts);\r\n\r\n    useEffect(() => {\r\n        var areaNo = props.match.params.id;\r\n        if (isDisplayAreaExists(areaNo))\r\n            actionGetProductsByTypeAndDisplayAreas(dispatch, \"donationpage\", areaNo);\r\n    }, [displayAreas])\r\n\r\n    useEffect(() => {\r\n        if (products && products.length > 0) {\r\n            setItemIntoView();\r\n        }\r\n    }, [products])\r\n\r\n    useEffect(() => {\r\n        if (events && events.length == 0 && membershipPackages && membershipPackages.length == 0 && gaTickets && gaTickets.length == 0 &&\r\n            giftcards.giftcards && giftcards.giftcards.length == 0 && donationProducts && donationProducts.length == 0 && paymenttranstate.hasOwnProperty(\"ReceiptNo\") && paymenttranstate.ReceiptNo.toString().length > 0) {\r\n            actionResetPaymentTransaction(dispatch);\r\n        }\r\n    }, []);\r\n\r\n    useEffect(() => {\r\n        if (props.match.path == \"/donation/Area/:id\") {\r\n            var areaNo = props.match.params.id;\r\n            if (isDisplayAreaExists(areaNo) == false) {\r\n                actionGetDisplayAreasByIdAndType(dispatch, areaNo, \"donationpage\");\r\n            }\r\n        }\r\n        else {\r\n            props.history.push('/not-found');\r\n        }\r\n    }, [])\r\n\r\n    useEffect(() => {\r\n        if (loading || displayAreasLoading)\r\n            actionStartAppLoader(dispatch);\r\n        else\r\n            actionEndAppLoader(dispatch);\r\n    }, [loading, displayAreasLoading])\r\n\r\n    useEffect(() => {\r\n        if (displayAreasError && displayAreasError != \"\")\r\n            seterrorMsg(displayAreasError)\r\n        else if (error && error != \"\")\r\n            seterrorMsg(error);\r\n    }, [error, displayAreasError])\r\n\r\n    const errorcancelhandle = () => {\r\n        seterrorMsg(\"\");\r\n    }\r\n\r\n    const isDisplayAreaExists = (areaNo) => {\r\n        let displayArea;\r\n        if (displayAreas)\r\n            displayArea = displayAreas.find(area => area.DisplayAreaNo == areaNo);\r\n\r\n        if (displayArea)\r\n            setDisplayArea(displayArea)\r\n\r\n        return displayArea != undefined;\r\n    }\r\n\r\n    const getTotalAmount = () => {\r\n        let total = 0;\r\n        selectedProducts.forEach(product => {\r\n            total += product.Amount;\r\n        });\r\n        return total;\r\n    }\r\n\r\n    const onChangeDonationProductSelection = (product) => {\r\n        AddProductToList(product);\r\n    }\r\n\r\n    const AddProductToList = (product) => {\r\n        let donationProducts = [...selectedProducts];\r\n        donationProducts = donationProducts.filter(x => x.ProductID != product.ProductID);\r\n        if (IsValidProduct(product))\r\n            donationProducts.push(product);\r\n        setSelectedProducts(donationProducts);\r\n    }\r\n\r\n    const IsValidProduct = (product) => {\r\n        let p = products.find(x => x.ProductID == product.ProductID);\r\n        if (p) {\r\n            if (product.DisplayAmount == \"\")\r\n                return false;\r\n            if (product.DisplayAmount != \"other\")\r\n                return true;\r\n            else if (product.Amount >= p.OtherValue[0].MinAmount && product.Amount <= p.OtherValue[0].MaxAmount)\r\n                return true;\r\n        }\r\n        return false;\r\n    }\r\n\r\n    const onClickContinueButtonHandler = () => {\r\n        if (orderProducts && orderProducts.length > 0) {\r\n            seterrorMsg(OrderItemsInCartError);\r\n            return;\r\n        }\r\n        else if (selectedProducts.length == 0) {\r\n            seterrorMsg(\"Please select item first\");\r\n            return;\r\n        }\r\n\r\n        let newselectedProducts = [...selectedProducts];\r\n        if (note != \"\")\r\n            newselectedProducts.forEach(product => {\r\n                product.ProductNotes = note;\r\n            });\r\n\r\n        actionShopCartUpdateDonationProduct(dispatch, newselectedProducts);\r\n        props.history.push('/checkout');\r\n    }\r\n\r\n    const setItemIntoView = () => {\r\n        let items = [...products];\r\n        cartDonationProducts.forEach(cartItem => {\r\n            let existItem = items.find(x => x.ProductID == cartItem.ProductID)\r\n            if (existItem) {\r\n                existItem.DisplayAmount = cartItem.DisplayAmount;\r\n                existItem.Amount = cartItem.Amount\r\n            }\r\n        });\r\n\r\n        let selectedItem = items.filter(x => x.DisplayAmount).map(item => {\r\n            return getNewProductObj(item)\r\n        })\r\n        setSelectedProducts(selectedItem);\r\n        setViewProducts(items);\r\n    }\r\n\r\n    const getNewProductObj = (product) => {\r\n        let prod = {\r\n            ProductID: product.ProductID,\r\n            ProductName: product.ProductName,\r\n            DisplayArea: product.DisplayArea,\r\n            DisplayAmount: product.DisplayAmount,\r\n            Amount: product.Amount,\r\n            UseAlternateMerchantOnline: product.UseAlternateMerchantOnline\r\n        }\r\n        return prod;\r\n    }\r\n\r\n    return (\r\n        <div className={classes.root} align=\"center\" >\r\n            <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\r\n            {displayArea && viewProducts ?\r\n                <Grid container spacing={3} xs={12} md={8} lg={6}>\r\n                    <Grid item xs={12}>\r\n                        <Title Header={displayArea?.AreaName} SubTitle={displayArea?.DisplayText} />\r\n                    </Grid>\r\n                    <br></br>\r\n                    <Grid container item spacing={3} align=\"left\">\r\n                        {viewProducts.sort((a, b) => a.SortOrder - b.SortOrder).map(product => {\r\n                            return <Grid key={product.ProductID} item xs={12}><DonationProduct Product={product} onChangeAmount={onChangeDonationProductSelection} /></Grid>\r\n                        })}\r\n                    </Grid>\r\n                    <Grid item xs={12} align=\"right\">\r\n                        <Typography variant='h4'>Total : {genfunction.ccyFormat(getTotalAmount())}</Typography>\r\n                    </Grid>\r\n                    <Grid item xs={12}>\r\n                        <TextField value={note} onChange={(event) => { setNote(event.target.value) }}\r\n                            minRows={4} variant=\"outlined\" fullWidth={true} multiline={true} inputProps={{ maxLength: 256 }}></TextField>\r\n                    </Grid>\r\n                    <Grid item xs={12} align=\"right\">\r\n                        <Button color='primary' variant='contained' onClick={onClickContinueButtonHandler}>Continue</Button>\r\n                    </Grid>\r\n                </Grid> : <Typography variant='h4'>{errorMsg}</Typography>}\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default DonationProducts;\r\n","import React, { useEffect, useState } from 'react';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { makeStyles } from '@material-ui/styles';\nimport { Grid } from '@material-ui/core';\nimport { ErrorHandling, DisplayCard } from 'components';\nimport { actionStartAppLoader, actionEndAppLoader, actionGetDisplayAreasByType } from 'actions';\n\nconst useStyles = makeStyles(theme => ({\n  root: {\n    padding: theme.spacing(2),\n    [theme.breakpoints.up('sm')]: {\n      marginTop: theme.spacing(5)\n    }\n  }\n}));\n\nconst DonationAreas = (props) => {\n\n  const dispatch = useDispatch()\n  const classes = useStyles();\n\n  const [errorMsg, seterrorMsg] = useState(\"\");\n\n  const loading = useSelector(state => state.reducerDisplayAreas.loading);\n  const displayAreas = useSelector(state => state.reducerDisplayAreas.displayAreas);\n  const error = useSelector(state => state.reducerDisplayAreas.displayAreasError);\n\n  useEffect(() => {\n    actionGetDisplayAreasByType(dispatch, 'donationpage', null, false);\n  }, [])\n\n  useEffect(() => {\n    if (loading)\n      actionStartAppLoader(dispatch);\n    else\n      actionEndAppLoader(dispatch);\n  }, [loading])\n\n  useEffect(() => {\n    seterrorMsg(error);\n  }, [error])\n\n  const errorcancelhandle = () => {\n    seterrorMsg(\"\");\n  }\n\n  const onClickDonateHandler = (ref) => {\n    props.history.push({\n      pathname: 'donation/Area/' + ref.DisplayAreaNo\n    })\n  }\n\n  return (\n    <Grid container spacing={2} className={classes.root}>\n      <ErrorHandling msg={errorMsg} open={errorMsg != \"\"} handleclose={errorcancelhandle} />\n      <Grid container spacing={2}>\n        {displayAreas?.filter(area => area.ShowOnline).sort((a, b) => a.SortOrder - b.SortOrder).map(area => {\n          return <Grid item xs={12} md={4} key={\"Donation_Area_\" + area.DisplayAreaNo}><DisplayCard Title={area.AreaName} Description={area.DisplayText} ButtonText='Donate' ButtonCallBack={onClickDonateHandler} ButtonCallBackReference={area} /></Grid>\n        })}\n      </Grid>\n    </Grid>\n  );\n};\n\nexport default DonationAreas;","import React from 'react';\nimport { Switch, Redirect } from 'react-router-dom';\n\nimport { RouteWithLayout } from './components';\nimport { Main as MainLayout, Minimal as MinimalLayout } from './layouts';\n\nimport {\n  Calendar as CalendarView,\n  Dashboard as DashboardView,\n  ProductList as ProductListView,\n  MembershipList as MembershipListView,\n  Memberships as MembershipsView,\n  MemberValidation as MembershipsMemberValidateView,\n  GiftCardsAreasList as GiftCardsAreasListView,\n  MainGiftCards as MainGiftCardsView,\n  FindMyBooking as FindMyBookingView,\n  ManageBooking as ManageBookingView,\n  ConfimBookingChanges as ConfimBookingChangesView,\n  ModifyTicketsAddons as ModifyTicketsAddonsView,\n  ManageCheckout as ManageCheckoutView,\n  UserList as UserListView,\n  Typography as TypographyView,\n  Icons as IconsView,\n  Account as AccountView,\n  Settings as SettingsView,\n  NotFound as NotFoundView,\n  Checkout as CheckoutView,\n  GATickets as GATickets,\n  OrderLocationScreen as FoodOrderLocationScreen,\n  OrderLocationTab as OrderLocationTabScreen,\n  OrderMenu as OrderMenuScreen,\n  OrderSubMenu as OrderSubMenuScreen,\n  OrderItemsReview as OrderItemsReviewScreen,\n  DonationAreas as DonationAreasView,\n  DonationProducts as DonationProductsView\n} from './views';\n\nconst Routes = () => {\n  return (\n    <Switch>\n\n      <Redirect\n        exact\n        from=\"/\"\n        to=\"/products\"\n      />\n\n      <RouteWithLayout\n        component={CalendarView}\n        exact\n        layout={MainLayout}\n        path=\"/calendar/:id\"\n      />\n\n      <RouteWithLayout\n        component={CalendarView}\n        exact\n        layout={MainLayout}\n        path=\"/calendar/Area/:id\"\n      />\n\n      <RouteWithLayout\n        component={GATickets}\n        exact\n        layout={MainLayout}\n        path=\"/gatickets/\"\n      />\n\n      <RouteWithLayout\n        component={GATickets}\n        exact\n        layout={MainLayout}\n        path=\"/gatickets/Area/:id\"\n      />\n\n      <RouteWithLayout\n        component={FoodOrderLocationScreen}\n        exact\n        layout={MainLayout}\n        path=\"/orderlocation/\"\n      />\n\n      <RouteWithLayout\n        component={FoodOrderLocationScreen}\n        exact\n        layout={MainLayout}\n        path=\"/orderlocation/Area/:id\"\n      />\n\n      <RouteWithLayout\n        component={OrderLocationTabScreen}\n        exact\n        layout={MainLayout}\n        path=\"/orderlocationtab/:name\"\n      />\n\n      <RouteWithLayout\n        component={OrderMenuScreen}\n        exact\n        layout={MainLayout}\n        path=\"/ordermenu/:id\"\n      />\n\n      <RouteWithLayout\n        component={OrderSubMenuScreen}\n        exact\n        layout={MainLayout}\n        path=\"/ordersubmenu/:name\"\n      />\n\n      <RouteWithLayout\n        component={OrderItemsReviewScreen}\n        exact\n        layout={MainLayout}\n        path=\"/revieworderproducts\"\n      />\n\n      <RouteWithLayout\n        component={DashboardView}\n        exact\n        layout={MainLayout}\n        path=\"/dashboard\"\n      />\n      <RouteWithLayout\n        component={UserListView}\n        exact\n        layout={MainLayout}\n        path=\"/users\"\n      />\n      <RouteWithLayout\n        component={ProductListView}\n        exact\n        layout={MainLayout}\n        path=\"/products\"\n      />\n\n      <RouteWithLayout\n        component={GiftCardsAreasListView}\n        exact\n        layout={MainLayout}\n        path=\"/giftcards\"\n      />\n\n      <RouteWithLayout\n        component={MainGiftCardsView}\n        exact\n        layout={MainLayout}\n        path=\"/giftcards/:id\"\n      />\n\n      <RouteWithLayout\n        component={MembershipsView}\n        exact\n        layout={MainLayout}\n        path=\"/memberships/join/:id\"\n      />\n\n      <RouteWithLayout\n        component={MembershipsView}\n        exact\n        layout={MainLayout}\n        path=\"/memberships/renew/:id\"\n      />\n\n      <RouteWithLayout\n        component={MembershipsMemberValidateView}\n        exact\n        layout={MainLayout}\n        path=\"/memberships/membervalidate\"\n      />\n\n      <RouteWithLayout\n        component={MembershipListView}\n        exact\n        layout={MainLayout}\n        path=\"/memberships\"\n      />\n\n      <RouteWithLayout\n        component={FindMyBookingView}\n        exact\n        layout={MainLayout}\n        path=\"/findmybooking\"\n      />\n\n      <RouteWithLayout\n        component={FindMyBookingView}\n        exact\n        layout={MainLayout}\n        path=\"/findmybooking/:name/:email/:bookingid\"\n      />\n\n      <RouteWithLayout\n        component={FindMyBookingView}\n        exact\n        layout={MainLayout}\n        path=\"/findmybooking?Name:name&email:email&bookingID:bookingid\"\n      />\n\n      <RouteWithLayout\n        component={ManageBookingView}\n        exact\n        layout={MainLayout}\n        path=\"/managebooking\"\n      />\n\n      <RouteWithLayout\n        component={ConfimBookingChangesView}\n        exact\n        layout={MainLayout}\n        path=\"/confimbookingchanges\"\n      />\n\n      <RouteWithLayout\n        component={ModifyTicketsAddonsView}\n        exact\n        layout={MainLayout}\n        path=\"/modifytickets\"\n      />\n\n      <RouteWithLayout\n        component={ManageCheckoutView}\n        exact\n        layout={MainLayout}\n        path=\"/managecheckout\"\n      />\n      <RouteWithLayout\n        component={DonationAreasView}\n        exact\n        layout={MainLayout}\n        path=\"/donationareas\"\n      />\n\n      <RouteWithLayout\n        component={DonationProductsView}\n        exact\n        layout={MainLayout}\n        path=\"/donation/\"\n      />\n\n      <RouteWithLayout\n        component={DonationProductsView}\n        exact\n        layout={MainLayout}\n        path=\"/donation/Area/:id\"\n      />\n\n      <RouteWithLayout\n        component={TypographyView}\n        exact\n        layout={MainLayout}\n        path=\"/typography\"\n      />\n      <RouteWithLayout\n        component={IconsView}\n        exact\n        layout={MainLayout}\n        path=\"/icons\"\n      />\n      <RouteWithLayout\n        component={AccountView}\n        exact\n        layout={MainLayout}\n        path=\"/account\"\n      />\n      <RouteWithLayout\n        component={SettingsView}\n        exact\n        layout={MainLayout}\n        path=\"/settings\"\n      />\n      <RouteWithLayout\n        component={NotFoundView}\n        exact\n        layout={MainLayout}\n        path=\"/not-found\"\n      />\n      <RouteWithLayout\n        component={CheckoutView}\n        exact\n        layout={MainLayout}\n        path=\"/checkout\"\n      />\n      <Redirect to=\"/not-found\" />\n    </Switch>\n  );\n};\n\nexport default Routes;\n","import React from 'react';\nimport { LinearProgress, Backdrop } from '@material-ui/core';\nimport { makeStyles, withStyles } from '@material-ui/core/styles';\nimport palette from '../../theme/palette'\n\nconst useStyles = makeStyles(theme => ({\n    backdrop: {\n        zIndex: theme.zIndex.drawer + 1,\n        color: '#fff',\n        backgroundColor: 'rgba(0, 0, 0, 0.8)'\n    },\n    image: {\n        marginBottom: \"10px\"\n    }\n}));\n\nconst BorderLinearProgress = withStyles({\n    root: {\n        height: 10,\n        width: \"200px\",\n        margin: \"auto\",\n        borderRadius: 20,\n        border: \"1px solid white\",\n        paddingTop: \"10px\",\n        backgroundColor: palette.primary.light\n    },\n    bar: {\n        borderRadius: 20,\n        backgroundColor: palette.primary.main\n    },\n})(LinearProgress);\n\nconst Apploader = props => {\n    const { loading } = props;\n    const classes = useStyles();\n    return (\n        <Backdrop className={classes.backdrop} open={loading}>\n            <div>\n                <img className={classes.image} alt=\"Logo\" src={ process.env.PUBLIC_URL + \"/images/logos/logo-small-white.png\" } />\n                <BorderLinearProgress\n                    variant=\"indeterminate\"\n                    color=\"primary\"\n                />\n            </div>\n        </Backdrop>\n    );\n};\n\nexport default Apploader;\n","import React, { useEffect } from 'react';\nimport { Router } from 'react-router-dom';\nimport { createBrowserHistory } from 'history';\nimport { Chart } from 'react-chartjs-2';\nimport { ThemeProvider } from '@material-ui/styles';\nimport validate from 'validate.js';\nimport { useDispatch, useSelector } from 'react-redux';\nimport { chartjs } from './helpers';\nimport theme from './theme';\nimport 'react-perfect-scrollbar/dist/css/styles.css';\nimport CssBaseline from '@material-ui/core/CssBaseline';\nimport './assets/scss/index.scss';\nimport validators from './common/validators';\nimport Routes from './Routes';\nimport { Apploader } from './components/Apploaders';\nimport { actionGenerateUserSessionID,actionValidateRecaptchaReset,actionResetStopUserToPurchase } from 'actions';\nimport {\n  GoogleReCaptchaProvider,\n} from 'react-google-recaptcha-v3';\n\nconst { ExpiryTimeCacheInMins, RecaptchaV3Client,ResetLimitOfCallsTimer } = window['runConfig'];\n\nconst browserHistory = createBrowserHistory({ basename: '/BlankParkZooTickets' });\n\nChart.helpers.extend(Chart.elements.Rectangle.prototype, {\n  draw: chartjs.draw\n});\n\nvalidate.validators = {\n  ...validate.validators,\n  ...validators\n};\n\nexport default function App() {\n  const dispatch = useDispatch();\n\n  const loading = useSelector(state => state.reducerAppLoader.loading);\n  const sessionID = useSelector(state => state.reducerGlobal.sessionID);\n  const stopUserToPurchase = useSelector(state => state.reducerGlobal.stopUserToPurchase);\n\n\n  useEffect(() => {\n    if (sessionID.length < 1) {\n      actionGenerateUserSessionID(dispatch);\n    }\n  }, []);\n\n\n  useEffect(() => {\n    if (stopUserToPurchase === true) {\n      var ms = ResetLimitOfCallsTimer * 60000;\n\n      setInterval(function () { \n\n        actionResetStopUserToPurchase(dispatch);\n        actionValidateRecaptchaReset(dispatch);\n\n      }, ms);\n      \n    }\n  }, [stopUserToPurchase]);\n\n\n  useEffect(() => {\n    var ms = ExpiryTimeCacheInMins * 60000;\n    setInterval(function () { window.location.reload(); }, ms);\n  });\n\n  return (\n    <div>\n      {RecaptchaV3Client && RecaptchaV3Client != \"\" ?\n        <GoogleReCaptchaProvider\n          reCaptchaKey={RecaptchaV3Client}>\n          <ThemeProvider theme={theme}>\n            <CssBaseline />\n            <Router history={browserHistory}>\n              <Routes />\n            </Router>\n          </ThemeProvider>\n          <Apploader loading={loading}></Apploader>\n        </GoogleReCaptchaProvider>\n        :\n        <>\n          <ThemeProvider theme={theme}>\n            <CssBaseline />\n            <Router history={browserHistory}>\n              <Routes />\n            </Router>\n          </ThemeProvider>\n          <Apploader loading={loading}></Apploader>\n        </>\n      }\n    </div>\n  )\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { applyMiddleware, compose, createStore } from 'redux';\nimport {Provider} from 'react-redux'\nimport createSagaMiddleware from 'redux-saga'\n\nimport rootReducer from './reducers';\nimport { rootSaga } from './saga';\n\nimport * as serviceWorker from './serviceWorker';\nimport App from './App';\n\nconst sagaMiddleware = createSagaMiddleware();\nconst store = createStore(\n  rootReducer,\n  applyMiddleware(sagaMiddleware)\n)\nsagaMiddleware.run(rootSaga);\n\nReactDOM.render(<Provider store={store}><App /></Provider>, document.getElementById('root'));\n\nserviceWorker.unregister();\n"],"sourceRoot":""}