{"version":3,"file":"main.86be4bc36595fda7.js","mappings":"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","names":["environment","production","syncfusionKey","apiBaseUrl","paymentMaxWaitTime","paymentGetCCTStatusInterval","MarketInfoService","http","baseURL","constructor","this","marketIdSubject","BehaviorSubject","marketId$","asObservable","setMarketId","id","next","getMarketId","options","headers","HttpHeaders","getMarketDays","marketId","get","observe","pipe","map","res","body","catchError","handleError","getMarketLogo","getDailyMarketDays","getWeeklyMarketDays","getALLBoothsForLayoutALLRentalTypes","rentalTypesDatesModel","url","post","getMonthlyMarketDays","getParts","getAllBoothsForDailyRentalTypeLayout","partId","selectedMarketDays","getListOfValuesData","getLayoutFonts","getWebRentalSetting","getWebRentalSettingDashboardSetting","getBuildingAreasInLayOut","getImages","getLayoutImages","getMarketDetails","GetEnabledRentalTypesForMarket","getCurrentMarketVendorGeneralSettings","GetAllMarketProducts","Id","RegistrationFee","error","console","Error","errMessage","message","throwError","core","factory","AuthService","isLoggedIn","isLoginAutenticated","localStorage","getItem","UserService","authService","getToken","userData","Token","setItem","clearToken","removeItem","ForgotPassword","email","i0","RentalMenuComponent","route","userService","router","marketInfoService","IsVendorLogin","imageUrl","vendorId","subscriptions","allowRegisterVendor","allowNewVendorBooking","activeRoute","vendorTerm","ngOnInit","params","subscribe","events","event","NavigationEnd","timestamp","Date","getTime","sub","MarketLogoBlobURL","push","VendorRegistration","AllowNewVendorBooking","WebRentalVendorTermText","err","isActiveRoute","includes","changeRentalMenu","pagename","Swal","title","$localize","text","icon","showCancelButton","confirmButtonText","cancelButtonText","then","result","value","navigate","checkVendorLoggedIn","logout","selectors","ctx","HomeComponent","marketName","message1","message2","message3","message4","imageURL1","imageURL2","imageURL3","loaderIcon","Promise","resolve","MarketName","DashboardMessage1","DashboardMessage2","DashboardMessage3","DashboardMessage4","DashboardImageURL1","DashboardImageURL2","DashboardImageURL3","VendorTerm","getFirstVisibleIndex","AllowNewBookings","RentalSettings","RentalTypes","RentalTypesDescription","BoothTerm","EPresetValue","EOperationalReports","EManagementReports","EVendorReports","EEdgeExpressECIType","EOpenEdgeResponseCode","EPaymentModes","EPaymentTransactionType","ECreditCards","EPaymentGateway","EEdgeExpressResultCode","EOpenEdgeSessionStates","MarketInfoAndSettingsFunctionID","MaintainanceFunctionID","SecurityFunctionID","AccountingFunctionID","DashboardFunctionID","OperationsFunctionID","DiscountType","ListOfValues","GeneralService","getCountries","getUSStates","GetVendorTypes","GetSecurityQuestion","getWebrentalMarketRules","VendorService","vendorIdSubject","vendorId$","setVendorId","getVendorId","HttpParams","set","toString","SaveVendor","Vendor","RegisterVendorInfoValidation","GetVendorById","getMarketVendorSettings","getVendorBusinessLicenseSettings","SaveVendorLoginDetail","VendorLoginDetail","mrktId","VendorLoginDetailsValidation","SendRegistrationEmail","GetDiscountPlan","getVendorLoginSecurityQuestion","getVendorLoginInfo","VendorId","UpdateVendor","validatePromoCode","promoCodeDiscountModel","PaymentService","getCCCredentials","getRCMService","request","GetCNPCreditVoid","credential","transId","amount","paymentReturnType","returnReq","Url","QueryPaymentStatusURL","XmlDoc","XWEBID","XWEBTERMINALID","XWEBAUTHKEY","GetPaymentStatus","orderId","openEdgeCardType","cType","replace","toLowerCase","saveVerifoneUnSaved","model","marketId1","GetVerifoneUnSavedDate","verifoneRecordId","GetVerifoneUnSavedCompleteData","replaceXMLEntity","stringValue","trim","length","getCNPService","rqsturl","tempobj","getCNPResponse","credentials","getRCMServiceStatus","sessionId","isCancelRequest","GetTransactionVerifoneOGPayment","TransId","RentalService","SaveDailyRental","rentalData","SaveCombinedMonthlyRentalTransactions","SaveCombinedWeeklyRentalTransactions","SaveWeeklyRentalTransactions","checkRentalExits","rentalDateDetails","getDailyRentals","getDailyOtherRentals","saveMonthlyRental","getOtherRentalItems","rentalDate","getPromoCodeAppliedCountForVendor","PromoCodeId","getWIFIOtherItem","wIFIOtherItemId","getOtherItemsRentalCharges","otherRentalCharges","generateTempRecordNumber","insertDataToTemp","tempData","deleteFromTemp","GetSelectedMonthEndDate","yearMonth","checkAbsenteeVendorForDate","boothNumber","getVendorBalances","getVendorPaymentDetails","accountReceiptId","ComposeEmails","emailData","SendWRPaymentConfirmationEMail","SendWRBookingConfirmationEMail","getRentalSettings","getCustomSettings","getRecordFromTemp","getBoothStatus","boothStatusInput","getProductCategories","getVendorRentalDays","rentalDays","getBoothRentalCombinedMonthlyCharges","boothRentalCharges","getBoothRentalCombinedWeeklyCharges","getBoothRentalWeeklyCharges","getBoothRentalMontlyCharges","getBoothrentalCharges","UpdateVendorResaleInfo","vendorResaleInfo","updateVendorBusinessLicense","vendorBusinesLicInfo","getCombinedMonthlyBookings","getCombinedMonthlyOtherRentals","getMonthlyBookings","getMonthlyOtherRentals","getCombinedWeeklyBookings","getCombinedWeeklyOtherRentals","getWeeklyBookings","getWeeklyOtherRentals","GetVendorProductsById","getBookingFeeById","bookingFeeId","getBookingRenewalFeeById","bookingRenewalFeeId","generatePaymentReceipt","paymentReceiptData","CheckMinimumUnusedCodeCount","RentalType","updateWIFIAccessCodeForRental","wifiData","customCurrencyPipe","currencyPipe","transform","parseFloat","customCurrencyInput","inputValue","target","charCode","which","keyCode","currentCursorPosition","selectionStart","indexOf","pure","SharedDataService","paymentSharedData","dailyRentalSelectedDays","dailyRentalSelectedBooths","rentalType","tempRecordNo","newVendorContactInfo","newVendorLoginDetails","wifiSelectedDay","SuccessTickComponent","FailureCrossComponent","LoaderComponent","PaymentComponent","paymentService","toastr","modalService","vendorService","sanitizer","sharedDataService","paymentGateway","paymentStarted","paymentFailReason","isSaveInCCTResponse","paymentInProgress","isAutoPopulateBillingInfo","paymentTable","currentPayId","hstPayBtnMsg","payModalRef","transactionInitiated","tempCNPRes","paymentProcessing","vendorInfo","showIFrame","facilityCreditCards","selectedDeviceId","cctStatusOrderId","voidOnCancelInitiated","isCancel","EventEmitter","showPage","requestParam","tempCNPPayId","tempCNPAmount","retryTransactionStatusLoader","urlSafe","achUrlSafe","urlSafeAlias","paymentSuccessFul","keyedInTransaction","TransactionType","payStatus","CCAmount","isQDR","PaymentResponse","ClosePaymentPage","paymentCount","tillNowPaid","multiPaymentVoidEmv","openEdgeSub","tenderAmount","changeAmount","voidPayment","ForceCreditReturn","VerifoneId","RefundAmount","MarketId","tempRcmRes","rcmSessionId","rcmResponse","iframe","popUpPayment","openEdgeBillingFields","toasterConfig","closeButton","timeOut","easing","progressBar","positionClass","tapToDismiss","showEasing","hideEasing","showMethod","hideMethod","maxLengthNameOnCard","maxLengthCCBlillingAd","maxLengthCCBlillingZip","initiatedVoidCC","showLoaderMesage","obj","payId","payName","payAmount","payComplete","payNowDisable","payModeId","checkNum","checkDate","bankName","ManualCardNumber","ManualCardExp","ManualCardName","CreditCardType","ManualCardAuthorization","defaultmode","uniqueTransId","payFailed","routingNumber","accountNumber","achManualCardAuthorization","accountType","nameonAccount","getVendorInfo","getCredentials","PaymentGateWay","GatewayDetails","JSON","parse","voidPaymentTransaction","setOpenEdgeMandatory","initiatePaymentRequest","generateIntialCCT","amt","transTypeId","ptId","paymentModeId","payvoid","cardNumber","authCode","voidOrderId","CreditCardNumber","substr","CCTModel","Amount","ResponseCode","ResponseMessage","OrderId","TransactionDateTime","ProcessStatus","Object","assign","isAnyPaymentProcessed","some","ele","callRCM","tempAmount","find","o","RCMURL","undefined","isPaymentCompleted","emvTransactionType","rcmRequest","resultFromRCM","responseData","RcmResponse","RESPONSE","APPROVEDAMOUNT","HOSTRESPONSECODE","RESULT","CARDBRAND","ACCOUNT","EXPMONTH","EXPYEAR","TRANSACTIONID","HOSTRESPONSEDESCRIPTION","ORDERID","processedCC","receiptText","RECEIPTTEXT","entryMethodMatch","match","entryLegendMatch","ACMatch","ATCMatch","AIDMatch","AIDNAMEMatch","TVRMatch","TSIMatch","RespCDMatch","TRNREFNoMatch","VALCODEMatch","tempCCModel","CardType","CARDTYPE","Card","TransactionTypeId","ApprovalCode","APPROVALCODE","PaymentTransactionTypeId","PaymentTransactionType","ReceiptResponse","EntryLegend","EntryMethod","AC","ATC","AID","AIDNAME","TVR","TSI","RespCD","TRNREFNo","VALCODE","gotoPaymentSuccess","RESULTMSG","unsubscribe","warning","setTimeout","openEdgeTransactionStatus","transactionType","initiatingOpenEdgeQueryPaymentRequest","paymentTrnsId","callRetryLogic","jsonResp","RESPONSECODE","STATE","CCModel","MASKEDCARDNUMBER","RESPONSEDESCRIPTION","emit","toFixed","CARDHOLDERNAME","ORIGINALRESPONSEDESCRIPTION","getRCMStatus","reason","saveCCTransactionFailureCase","sessionRes","SessionId","SessionState","t","isEmvVoidInitiated","callOpenEdgeVoid","initiatingVoid","Success","isVoidCompleted","cTypeId","success","cctRes","paymentAmount","DebitOrderId","OpenEdgeTransType","TransactionCardType","paymentTransactionTypeId","response","paymentStatus","transType","cCModel","OfflinePayment","PaymentSuccess","info","TransType","transactinSuccess","cancelRcmRequest","isTransactionSuccess","respose","IsSuccessful","getExpiryMonthValue","expiryMonth","saveInVerifoneUnsaved","callCNP","getHiddenInput","tempId","nativeElement","src","split","pop","hostedpageRequest","processedCNPCC","ORIGINALRESPONSECODE","ORIGINALTRANSACTIONTYPE","PaymentModeId","template","show","class","backdrop","keyboard","objFailure","afterpaymentSuccess","hide","callTransactionComplete","CardNotPresentURL","setCNPvendorInfo","tempOrderId","resultResponse","bypassSecurityTrustResourceUrl","PAYPAGEURL","getOpenEdgeTransactionStatus","count","mandatoryField","Address","substring","firstName","FirstName","middleName","MiddleName","lastName","LastName","address","companyName","CompanyName","city","City","CountryCode","StateCode","onhstPayBtn","val","VendorRegistrationComponent","renderer","formBuilder","generalService","rentalService","customCurrency","showContactInfo","showOnlineAccess","showregisterpayment","btnContact","btnOnlineAccess","btnPayment","IsQDR","verifoneId","countries","VendorForm","maxDate","ProductPriority","VendorProductForm","OnlineAccessForm","countryList","stateList","VendorProductsList","VendorProductsImageList","VendorProductsImageContentList","VendorTypeList","ProductDropDownfields","StateDropDownfields","filterSettings","ignoreCase","filterType","PhoneNumberMask","ZipCodeMask","PhoneEXTMask","SSNMask","VendorGeneralSetting","VId","showStateDropDown","securityQuestions","webRentalSetting","productList","registrationFee","vendorLoginData","validationResponse","DisableRegisterBtn","vendorinfo","paymentData","processPayment","paymentGatewayCredentials","processCreditCardOnline","today","group","Validators","BusAddress","BusCity","BusState","BusTelePhone","BusZipCode","CellPhone","Country","DLExpiryDate","DriverLicenseNumber","ResaleNumber","BusinessLicenseNumber","Email","MarketVendorId","State","VendorSince","VendorType","WorkPhone","TelePhone","ZipCode","SSN","TaxID","VProductId","Priority","ProductId","ProductCategoryId","ProductCategory","ProductName","UserName","Password","control","password","minLength","test","lowerCase","upperCase","specialChar","ConfirmPassword","SecurityQuestion","Answer","registrationPaymentCheck","FormControl","registrationRuleReadCheck","getVendorGeneralSettings","getStates","getSecurityQuestion","getallproducts","getVendorTypes","ngAfterViewInit","setStyle","patchValue","Code","onCountryChange","displayContactInfo","displayOnlineAccess","displayRegisterPayment","IsVendorIdManual","SpecifyVendorID","VendorAddressMandatory","VendAddressMandatory","AllowAbsenteeRefund","BoothStatusRefund","TermForLease","LeaseLabel","DefaultProductEnabled","DefaultProductSelected","Product","ResaleNumberRequired","DaysToSellWithoutResaleNo","DaysSellWithoutResaleNumber","BusinessLicenseNumberReq","BusinessLicenseNumberRequired","DaysToSellWithoutBusinessLicenseNo","DaysSellWithoutBusiLicNumber","AlphaNumericField1Reqd","AlphaNumericField2Reqd","AlphaNumericField1Name","AlphaNumericField2Name","NumericField1Reqd","NumericField2Reqd","NumericField1Name","NumericField2Name","VendorNameFormat","VendorNamingConvention","VendorNameFormatId","VendorNamingConventionId","disable","setValidators","updateValueAndValidity","log","MandatoryFields","mandatoryFields","Number","el","i","ob","IsInActive","CompanyProductId","String","ValidationVendorDetails","TelephoneEXT","BusTelephoneEXT","VendorName","VendorProductImageList","VendorProductImageContentList","VendorProfile","VenTxtPhotoFile","BusinessLicNum","ResaleNum","OnlineAccess","OnlineUserId","OnlinePassword","SecurityQuestionId","SecurityQuestionAnswer","OnlineRegistrationDate","Message","CheckValidations","ChargeVendorRegistration","SaveVendorDetails","SaveVenresponse","GetVerfoneresponse","PaymentOrderId","RentalCharge","SalesTax","SecLevelTax","OtherCharge","PriorBalance","TotalBalanceDue","RentalNotes","CashAmount","CheckAmount","CheckNo","ChangeAmount","CardAmount","DirectDebitAmount","PaymentDone","PaymentDueDate","DiscountAmount","ConvenienceFee","DailyRentalBooth","DailyRentalOtherCharges","OtherItemId","OtherItemName","Description","Quantity","RentalDay","AppliedDiscountModel","SaveDailyRentalResponse","_this","primaryproductchange","args1","product","p","newProduct","parseInt","response1","hasError","ProcessCreditCardOnline","OnVendorRegister","e","preventDefault","Oncancel","VendorLoginComponent","loginForm","loginError","inActive","displayUsernameError","displayPasswordError","confirmMailInput","username","rememberMe","loginUserName","onKeydown","key","validateLogin","checkRememberMe","applyBackground","window","innerWidth","document","gradient","style","backgroundImage","setValue","validateLoginCredentials","valid","EmailLogin","InActive","UserId","sessionStorage","token","html","focusConfirm","showCloseButton","didOpen","popup","querySelector","onkeyup","preConfirm","ngOnDestroy","backgroundColor","RentalLayoutComponent","formbuilder","datePipe","elementRef","diagram","layoutForm","defaultZoomFactor","layoutParts","LayoutData","selectedBoothsFromLayout","CloseLayout","removeBoothCharges","allExistingBuilding","boothShapes","fontName","fontStyle","layoutImages","images","selectedNode","selectedBoothData","allBooths","isDropdownOpen","palettes","connectors","selectedItems","symbolMargin","monthEndDateCache","Map","noboothSelected","snapSettings","constraints","SnapConstraints","tool","BoothNumber","BoothType","blinkingNode","categoryLegend","blinkInterval","selectedPartName","selectedBoothsForRental","tooltip","layoutDiagramFilter","searchBooth","DiagramTools","SelectorConstraints","left","right","top","bottom","clickOutsideDropdown","legendDropDown","dropdownElement","contains","classList","closeCategoryLegend","stopPropagation","toggleDropdown","remove","add","filter","PartId","PartDescription","AddSelectedBoothsToGrid","closeLayoutForm","forEach","date","temp","TempRecordNo","StartDate","EndDate","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","created","args","fitToPage","mode","region","margin","canZoomIn","markSelectedBooths","element","nodeId","getObject","diagramNode","offsetX","offsetY","width","height","shape","type","content","NodeConstraints","BoothDescription","BoothTypeId","weeklyRentalSelectedBooths","weeklyRentalMarketDays","days","selectedDates","startDate","RentStartPeriod","endDate","RentEndPeriod","selectedDayOfWeek","currentDay","getDay","setDate","getDate","monthlyRentalSelectedBooths","monthlyRentalMarketDays","RentalStartDate","RentalEndDate","categoryName","CategoryDescription","color","convertColor","Color","stringify","bindBoothsToLayout","data","boothStatusRecords","item","boothStatus","backColor","Status","ExcludeForWeb","AccountReceiptId","fontColor","tooltipCaption","ProductDescription","ShapeId","Name","fill","strokeColor","BorderColor","strokeWidth","fontSize","FontSize","textWrapping","fontFamily","FontName","annotations","bold","FontStyle","italic","AnnotationConstraints","position","relativeMode","Width","Length","addInfo","allowDrag","name","status","LeftCoordinate","TopCoordinate","rotateAngle","RotateAngle","zoomOptions","zoomFactor","zoomTo","getAllBoothsForLayout","rentalStartDate","rentalDaysLength","rentalStartDateYear","getFullYear","rentalStartDateMonth","getMonth","rentalStartDateYearMonth","RentalYearMonth","MarketDays","forkJoin","boothsList","weeklyRentalStartDate","rentalEndDateYear","weeklyRentalEndDate","rentalEndDateMonth","rentalEndDateYearMonth","marketDays","concat","weeklyRentalFirstDay","FirstDayOfRentalStartWeek","FirstDayOfRentalEndWeek","RentalStartDateYearMonth","RentalEndDateYearMonth","WeeklyCombWeeklyReservationPeriod","MonthlyCombMonthlyReservationPeriod","RentalStartDateWeekDayNumber","AllowVendorVacation","monthlyRentalStartDate","monthlyRentalEndDate","changeLayout","clear","getBuildingForLayout","getImagesForLayout","layoutFonts","BoothShapes","DefaultZoomFactor","colorValue","padStart","nodeMouseOver","innerHTML","boothNo","selectedBooth","nodeClick","properties","mainNodeId","dataFromTemp","boothIndex","findIndex","boothSelectedByOtherUser","BoothNo","rentalDates","rentedBoothDates","endMonth","endMonthDate","endMonthYear","endMonthIndex","getMonthIndex","rentalstartDate","dayOfWeek","selectedDaysOfWeek","combinedMonthlyBookingEndDate","toPromise","MonthEndDateSelected","marketDaysOfTemprecord","marketDay","selectedRentalDates","MarketDay","selectedBoothsForCWRental","currentWeekRentalDates","currentWeekEnd","toDateString","sort","a","b","NoOfMarketDays","StartDateList","currentMonthRentalDates","currentMonthEnd","currentDate","currentYear","currentMonth","currentYearMonth","previousMonth","setMonth","PreviousMonthYearAndMonth","previousMonthEndDate","monthEndDate","getDaysDifference","currentStartMonth","startMonthDate","startMonthYear","startMonthIndex","compareDates","compareCurrentMonthDates","AllRentalDates","selectedBoothsForCMRental","markedNodeId","boothCount","index","splice","getMonthEndingDateFromSetting","rentalYearMonth","_this2","has","date1","date2","start","end","timeDiff","Math","abs","ceil","RentalRenewal","BoothSearch","IsOnline","monthString","monthIndex","month","BuildingId","BuildingBackColor","BuildingBorderColor","BuildingFontSize","BuildingFontNameId","Caption","BuildingFontStyleId","BuildingWidth","BuildingLength","BuildingVerticalDisplay","node","ImagesForLayoutId","ImageId","LayoutImagesId","ImagePath","offset","x","y","ImageWidth","ImageLength","ImageLeftCoordinate","ImageTopCoordinate","source","ImageName","expanded","symbols","layoutZoomInClick","detail","layoutZoomOutClick","flag","searchNodes","nodes","nodeExist","stopBlinking","controls","startBlinking","changeSearchText","setInterval","clearInterval","boothData","BackColor","subscription","$event","DailyrentalOnlineComponent","sunday","monday","isdirty","tuesday","wednesday","thursay","friday","saturday","newVendor","rentalForm","dailyMarketDays","exclusivedates","filteredMarketDays","ResaleOrBusinessHeader","defaultPart","parts","selectedDays","Set","otherItemList","displayOtherChargeByBooth","otherChargeMarketDay","otherItemSearchText","selectedOtherCharges","AllowRentingOtherItems","selectedOtherItems","OtherChargesPeriod","modalAddNewItems","gridOtherRental","gridDailyRental","modalResaleNo","modalDiscountPlans","isFormDirty","isCancelClicked","bookingFormCompleted","rentalBookingData","resaleNoInputRequired","businessLicenseRequired","allAvailableBooths","isboothSelected","defaultPartId","selectedBooths","displayLayout","resaleAndBusiPopupDisable","warnExcessPayment","warnZeroPayment","displaySalesTax","displayCityTax","displayOtherChargeSalesTax","displayOtherChargeCityTax","exemptResale","resaleNo","resaleNoDisplay","businessLicenseDisplay","businessLicenseNumber","businessLicenseExpiryDate","vendorRentalDays","marketDayCountForResale","resaleOptionSelected","DisplayPayDueDate","DisplaySpecificDate","DisplayOptionValue","vendorProducts","defaultProduct","totalRentalCharge","totalOtherRentalCharge","totalSalesTax","totalSecondLeveltax","totalCharge","priorBalance","textWrapSettings","wrapMode","vendorDiscountPlans","disableDiscountAmount","totalDiscountCharge","secondTaxName","marketWeekSunday","marketWeekMonday","marketWeekTuesday","marketWeekWednesday","marketWeekThursday","marketWeekFriday","marketWeekSaturday","marketParts","sortOptions","columns","field","direction","sortOtherItemsOptions","minExpiryDate","getVendorProducts","loadSelectedBooths","vendorBalanceRes","discountPlansRes","Daily","OnlineTransactions","PlanSeqId","PlanId","PlanName","EffectiveFrom","ExpiryDate","DiscountValue","OtherItems","Weekly","Monthly","CombinedWeekly","CombinedMonthly","IsExceedAmount","ExceedAmount","BalanceDue","Notes","QDR","CheckAll","Selected","AutoSelected","DisableDiscount","AppliedDiscount","SalesTaxAmount","SecondLevelTaxAmount","SalesTaxApplied","SecondLevelTaxApplied","SecondLevelTax","getDiscounts","DefaultLayoutPart","getRentalPaymentSettings","openLayoutPopup","refreshAddBooth","getDailyMarkets","openLayout","NewBooth","toggleDaySelection","day","checked","filterDates","dayName","getDayNameFromDate","dateString","toLocaleDateString","weekday","checkboxChanged","srcElement","searchOtherItem","OtherItem","WebRental","OtherItemCharge","OtherItemtotal","othChgBooths","addOtherCharges","WRNewVendorRequest","NewItem","Reference","newItem","otherItemTotal","salesTax","cityTax","CityTax","refresh","modal","display","getBoothsAndItemsForOtherCharges","isDateSelected","isItemSelected","otherItemChecked","setDefaultRentalItem","isNegative","totalValue","finalCharge","masterChargeRecord","otherItemUpdate","select","objNew","scrollTo","validateAndAddSelectedBoothsToGrid","WarnExcessPayment","WarnZeroPayment","DisplayOtherChargesByBooth","RentalTaxable","RentalSecondTaxable","OtherRentalTaxable","OtherRentalSecondTaxable","getColumnByField","visible","SecondTaxName","headerText","secLevelTaxOtherRentHeader","getNextDate","nextDate","noResale","selectedBoothRecord","record","targetDateString","VendorRentalDate","formattedDate","VendorID","addSelectedBoothsToGrid","getDateFromDateTime","updateOtherTotalRent","onCheckNumKeyPress","RentalDate","newbooths","DailyRentalId","Rent","ExemptResale","Resale","LicenseNumber","AddBoothsOnGridOnValidationSucess","addToGrid","closeModalPopup","ExemptResaleNo","ExemptResaleReason","ResaleNo","closeResaleModal","LicenseNameId","LicenseName","deleteSelectedBooth","deleteOtherRentalCharges","oth","disableSavePayment","vendorBalance","discountTotalAmount","totalAmountForDiscount","disc","currentDiscountValue","discountValue","cancelRental","isConfirmed","rentOnlineNextTab","saveRentalWithPayment","bookingReceipt","RentalMethod","ReceiptSettings","PaymentOnly","objSelectedBooth","objSelectedOtherCharge","objDiscountData","OtherCharges","WeeklyrentalOnlineComponent","lines","RentalTaxPercentage","OtherRentalTaxPercentage","RentalSecondTaxPercentage","OtherRentalSecondTaxPercentage","exemptResaleReason","modalWeeklyOtherCharges","gridWeeklyRental","weeklyRentalStartDates","weeklyMarketDays","excludedMarketDays","selectedWeeklyBoothData","isWeeklyboothSelected","weeklyLayoutData","resaleNoOption","ApplyBookingFee","ApplyBookingFeeId","bookingFeeAmount","boothsForOtherCharge","selectedWeeklyBooths","rentalEndDate","otherItemsScreen","otherChargeMarketWeek","updateOtherItem","RentalMonth","MonthlyRentalIds","Recurring","refreshColumns","rentalDatePeriod","OtherItemWeeklyCharge","resFee","reset","RentalStartDays","RentalEndDays","getWeeklyMarkets","selectedWeeklyMarketDays","checkSelectedDates","RentalWeek","uniqueBoothNumbers","WeekOtherRentalId","WeeklyOtherRentalIds","checkMarketDaysSelected","thursday","ExtendRental","excludedDates","exludedDate","apiCalls","of","responses","RentalStartPeriod","RentalEndPeriod","RentalMarketDay","WeeklyRentalId","Reservation","Drop","January","JanRent","February","FebRent","March","MarRent","April","AprRent","May","MayRent","June","JunRent","July","JulRent","August","AugRent","September","SepRent","October","OctRent","November","NovRent","December","DecRent","JanuaryMonthPresent","FebruaryMonthPresent","MarchMonthPresent","AprilMonthPresent","MayMonthPresent","JuneMonthPresent","JulyMonthPresent","AugustMonthPresent","SeptemberMonthPresent","OctoberMonthPresent","NovemberMonthPresent","DecemberMonthPresent","TaxModel","ReturnData","PerDiem","WeeklyRentalOtherCharges","WeeklyRentalBooth","BookingFee","objReturnData","BoothReserved","DoNotRenew","BookingLog","MonthlyrentalOnlineComponent","monthlyMarketDays","selectedMonthlyBooths","MonthlyLayoutData","monthlyRentalStartDates","perDiemRentApplicable","selectedMonthlyBoothData","rentalStartDates","gridMonthlyRental","modalMonthlyOtherCharges","rentalStartMonth","rentalEndMonth","otherChargeMarketMonth","PerDiemRentApplicable","input","OtherItemCombinedMonthlyCharge","RentalMonths","selectedMonthlyMarketDays","checkRentalMonths","startMonth","startYear","PerDiemApplicable","MonthlyRentalId","MktDays","PerDiemRent","PerdiemRent","DisableJanMonth","DisableFebMonth","DisableMarMonth","DisableAprMonth","DisableMayMonth","DisableJunMonth","DisableJulMonth","DisableAugMonth","DisableSepMonth","DisableOctMonth","DisableNovMonth","DisableDecMonth","DiasbleStartDate","extendedBoothIndex","RentalSavedEndDate","DisableStartDate","MonthlyOtherRentalCharges","MonthOtherRentalId","year","YearMonth","extractedYearMonth","MonthlyRentalBooth","otherRentalYear","otherRentalMonth","otherRentalYearMonth","OtherItemMonthlyCharge","CombinedweeklyrentalOnlineComponent","modalAddNewWeeklyBooths","CombinedWeeklyRentalBooth","RentalWeeekStartDate","RentalWeeekEndDate","SelectedRentalDates","isOtherItemChecked","OtherItemCombinedWeeklyCharge","CombinedmonthlyrentalOnlineComponent","CombinedMonthlyBookingEndDate","_this3","resRentalSettings","_this4","resMonthEnd","currentDateYearAndMonth","_this5","nextMonth","nextMonthYearAndMonth","nextMonthEndDate","_this6","vendorBalances","vendorPriorBalance","_this7","true","RentalConfirmationComponent","receiptIframe","modalRef","printReceipt","AccountReceipId","AuthCode","MarketAccountReceiptId","paymentOnly","PaymentAuthorizationNumber","emailRentalReceipts","emailSubject","res1","AccountReceiptID","BaseTemplateID","AttachmentFile","AttachmentFileName","FileType","Subject","WebRentalRequest","NewVendor","emailResponse","goBack","PreviewRentalReceipt","isMobile","navigator","userAgent","base64ToBlob","base64","contentType","byteCharacters","atob","byteArrays","slice","byteNumbers","Array","charCodeAt","byteArray","Uint8Array","Blob","printRentalReceipt","base64String","blob","URL","createObjectURL","saveAs","printJS","printable","onPrintDialogClose","ctx_r109","ctx_r110","ctx_r113","BookingDetailsComponent","RentalTypeText","PromptRenewOther","masterRentChargeforResOtherItems","openConfirmationPage","creditCardAmount","accountReceipId","clickTimeout","rentEndPeriodIndex","applyRenewalFee","paymentAdjustedWithPriorBal","renewalFeeAmount","savePayment","bookingDetailsForm","applyCCCharge","CcfeeinPercentage","AllowPartialPay","actualTotalDue","renewAllBoothsFromGrid","allrentedOtherItems","showDetails","rules","allowCWRentalRenewal","allowCMRentalRenewal","allowOtherItemRenewal","convenienceFee","totalPayment","balanceDue","rentalCharge","otherCharge","discount","additionalCharge","array","initializeRulesArray","valueChanges","emitEvent","calculateBalance","getMarketRulesAndRegulations","rule","isChecked","rulesAndRegualtions","AgreementLinkRequired","AgreementBlobURL","AgreementLinkTextContent","updateArrayDirectly","updatedValue","rulesFormArray","at","rulesArray","ID","Rules","allCheckboxesCheckedValidator","weeklyMarket","getDailyRental","getCombinedMonthlyRental","getCombinedWeeklyRental","getMonthEndDate","inputDate","nextMonthFirstDay","toggleDetails","toggleCMOtherItemsDetails","showOtherItemsDetails","toggleCWBookingDetails","existingBooths","initialStartDate","renewalStartMonth","CurrentRentStartPeriod","CurrentRentEndPeriod","CurrentRent","CurrentSalesTax","CurrentSecondTax","BookingCanExtend","RenewalStartMonth","CMRenewalMonth","RentEndPeriodIndex","rentalStartPeriod","startYearAndMonth","rentalMonthEndDate","dayOfMonth","handleCMEndDateChange","updateRentalRecord","extendCMRental","renewAllBooths","processSelectedBooths","shouldProcessBooth","processBoothRentalDates","updateVendorRentalDays","vendorRentalDaysObj","vendorRentalDaysRes","addVendorRentalDays","checkResaleOrBusinessLicense","extendCMOtherRental","rentalMonthDate","otherItemCharge","renewCMOtherCharges","proceedRenewingOtherCharges","extendCWOtherRental","cuurentWeek","CWRenewalWeek","addDays","rentalWeekDate","rentalStartWeek","addRentalDates","recordExist","calculateEndDate","_this8","handleBusinessLicenseNumber","validateResaleAndBusinessLicense","_this9","_this10","checkBusinessLicenseExpiry","_this11","_this12","nonAvailableBooths","_this13","endDateYearMonth","allRentalDates","currentRentedEndDate","obj1","RentalDates","updateBoothRentDetails","getEndDate","_this14","getPreviousMonthEndDate","previousYear","_this15","filterCurrentMonthDates","sortDates","dates","filterDatesAfterEndDate","currentEndDate","_this16","parseCurrency","updateTotalCharges","_this17","OtherRentalId","CurrentRentalMonth","CurrentOtherItemtotal","CurrentSecLevelTax","totalAmountPaid","weekStartDate","_this18","RentalWeekRecord","RentalWeekDay","renewalStartWeek","CurrentRentalWeek","RenewalStartWeek","renewCWOtherCharges","getDateRange","fetchMarketDays","_this19","CWRentalDateList","_this20","_this21","bindCWReservations","rentalStartDateRecord","rentalEndDateRecord","monthMap","jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec","monthPresence","keys","monthValues","reduce","acc","BlockRenewal","handleCWEndDateChange","_this22","_this23","objCM","subCM","objCombinedWeekly","subCW","voidPaymentResponse","setMinimum","enteredAmount","totalrentalCharge","otherRentalCharge","totalDue","renewalFee","totalAmount","balanceAmount","calculateConvenienceFee","handledblClick","clearTimeout","handleClick","currentValue","currentSelectionLength","selectionEnd","inputElement","setSelectionRange","hasDollarSign","caretPosition","dollarSignIndex","setCurrencyFormat","numberOnly","ApplyCcporcessingFeePercentage","enable","AllowRenewalsCw","AllowRenewalsCm","AllowRenewingOtherItems","MasterChargeForOtherChargeRenewal","extendCWRental","extendRentalRecord","extendRentalStartPeriod","RentAmount","JanRentAmount","FebRentAmount","MarRentAmount","AprRentAmount","MayRentAmount","JunRentAmount","JulRentAmount","AugRentAmount","SepRentAmount","OctRentAmount","NovRentAmount","DecRentAmount","extendedRentalEndDates","_this24","proceedExtendingRental","_this25","_this26","calculateRentalDates","processVendorRentalDays","getSelectedDayOfWeek","_this27","checkResaleAndBusinessLicense","_this28","showModal","promptExpiredBusinessLicense","renewCWAllBooths","promptBusinessLicense","_this29","_this30","_this31","nonAvailableBoothsString","join","updateCMOtherItemRecord","updateCWOtherItemRecord","updateCWRentalRecord","proceedRenewingCWOtherCharges","getActualAmountFromInp","proceedPayment","resaleOptionValidation","ctx_r93","ctx_r94","ctx_r97","BookingDetailsWeeklyMonthlyComponent","MonthlyBookingEndDate","allowWeeklyRentalRenewal","allowMonthlyRentalRenewal","getWeeklyRental","toggleOtherItemsDetails","toggleWeeklyBookingDetails","bindMonthlyRentalData","MonthlyRenewalMonth","handleMonthlyEndDateChange","updateMonthlytherItemRecord","extendMonthlyOtherRental","renewMonthlyOtherCharges","objM","AllowRenewalsMonthly","extendMonthlyRental","WeekDay","handleWeeklyEndDateChange","renewWeeklyAllBooths","renewWeeklyOtherCharges","proceedRenewingWeeklyOtherCharges","updateWeeklyRentalRecord","extendWeeklyRental","extendWeeklyOtherRental","updateWeeklyOtherItemRecord","RentOnlineComponent","showrentOnline","showLoginInfo","showBookings","showReviewRegistration","pageName","currentPassword","btnRentOnline","ContactInfo","btnLoginInfo","btnBookings","btnRegistration","AllowBookingsCw","AllowBookingsWeekly","AllowBookingsCm","AllowBookingsMonthly","AllowBookingsDaily","AllowRenewalsWeekly","defaultRentalTypeSelected","enabledRentalTypes","securityQuestion","showCellPhoneError","showWorkPhoneError","vendorMarketID","anyRentalTypeEnabledForBooking","selected","vendorName","bookingPage","bookingPageRentalType","emailIdsPattern","rentalTypes","contactInfoForm","state","country","postalCode","workPhone","cellPhone","noWhitespaceValidator","onlineLoginForm","onlineUserName","onlinePassword","confirmPassword","securityAnswer","bookingRentalTypes","passwordFieldType","togglePasswordVisibility","bookingpage","rentaltype","MyBookings","getStatesAndCountries","refreshBookingDetails","whitespace","restrictSpace","eve","onKeyUp","phoneControl","invalid","touched","resCountries","resStates","resSecurityQuestion","getVendorInfobyId","saveVendorLoginDetail","checkValidations","validateContactForm","markAsPristine","rentOnline","contactInfo","defaultBookingType","DefaultRentalType","LoginInfo","ReviewRegistration","setDirtyFlag","cancelContactModification","dirty","MarketMapComponent","marketMap","selectedWeekdays","additionalMarketDate","excludedMarketDate","selectedDailyRentalMarketDays","monthlyCMResvPeriod","weeklyCWResvPeriod","changeMarketMap","checkRentalWeeks","rentalTypeChange","viewLayout","weeklyRentalStartDateYear","weeklyRentalStartDateMonth","weeklyRentalEndDateYear","weeklRentalEndDateMonth","weeklyRentalStartDateYearMonth","weeklyRentalEndDateYearMonth","selectedRentalTypes","MaxBookingWeeks","MaxBookingMonths","scrollSettings","horizontalOffset","verticalOffset","NewsService","getActiveNews","NewsComponent","newsService","news","selectedNews","filteredNews","isMoreNews","label","NewsData","getNewsData","openModal","newsData","loadMoreNews","ContactUsService","SubmitContactUs","ContactUs","ContactUsComponent","contactUsService","fb","contactUsForm","firstNum","secondNum","generateCaptcha","phone","subject","comments","captchaResult","onSubmit","validateCaptcha","contactUsFormValue","Phone","submitContactUsForm","resetForm","floor","random","firstNumElement","getElementById","secondNumElement","textContent","validateCaptchaResult","isNaN","ctx_r32","ctx_r33","ctx_r36","VendorPaymentsComponent","operationRentalService","location","displayContract","totalRentalCharges","promoCodeAppliedDiscount","paymentForm","calculateChangeAmount","DisablePayment","displayAmountPaid","thermalPrinting","disablePayBtnAfterSubmit","promoCodeDiscountAmount","wifiOtherItemModel","bookingFeeOtherItemModel","businessLicenseInfo","cancelClick","enablePromoCode","enableWifiCodeChangesUfm","printWIFIAccessCodeInReceipts","WIFIOtherItemRentalChargeId","facilityOtherItemRentalChargeId","otherChargesAutomaticApplicablePeriod","applyOtherChargesAutomatically","paymentDetails","facilityCharge","discounts","additionalCharges","disabled","secondTax","enableWifiCodeChanges","promoCode","getRentalAndCustomSettings","resCustomSettings","PrintWIFIAccessCodeInReceipts","EnableWrpromocode","EnableWifiCodeChangesUfm","getWIFIOtherChargeItem","getFacilityOtherChargeItem","calculateFacilityCharges","calculateTotalBookingFeeAmount","bookingFee","automaticOtherCharge","distinctRentDates","from","toISOString","distinctStartDates","relatedItem","rentalWeekStart","currentWeekStart","uniqueRentDatesArray","distinctRentalYearMonth","totalFacilityCharge","ApplyOtherChargesAutomatically","AutomaticApplicableOtherChargeId","OtherChargesAutomaticApplicablePeriod","applyBookingFee","applyBookingFeeId","applyPromoCodeDiscount","PromoCode","bookingDay","promocodeDiscount","promoCodeUsedCount","AppliedCount","UsageLimit","WebRentalApplicable","IsPublicVendor","numberOnlyForCash","inputChar","fromCharCode","resTokenGen","BusinessLicenseNoRequired","saveBookingDetails","FacilityCharge","checkMinimum","RentalTypeId","objMonthly","subMonthly","objCombinedMonthly","WeekStartDate","objWeekly","subW","ClearPay","cashAmount","checkAmount","directDebitAmount","checkNo","creditCardTypes","cancel","AuthGuard","canActivate","paramMap","NewVendorRentonlineComponent","showPaymentPage","howtoRentSpaceDocURL","rulesAndRegulations","vendorAddressMandatory","openPaymentDetails","resaleNumberRequired","businessLicenseNoRequired","initialFormValues","BusinessLicenseExpiryDate","paymentCancelClick","HowtoRentSpaceDocURL","RulesAndRegulationsAttachmentPDFUrl","paymentInfo","openPaymentPage","routes","path","component","AppRoutingModule","RouterModule","AppComponent","TokenInterceptor","intercept","clone","setHeaders","Authorization","httpRequest","Pragma","Expires","handle","LinkifyPipe","hyperlink","startsWith","AppModule","bootstrap","provide","HTTP_INTERCEPTORS","useClass","multi","DatePipe","CurrencyPipe","BsModalService","imports","GridAllModule","HttpClientModule","BrowserAnimationsModule","CommonModule","FormsModule","ReactiveFormsModule","BrowserModule","DatePickerModule","DiagramModule","DropDownListModule","MaskedTextBoxModule","ToastrModule","preventDuplicates","ModalModule","ComboBoxModule","AppConfig","InjectionToken","requestOrigin","origin","enableProdMode","bootstrapApp","req","XMLHttpRequest","addEventListener","appConfig","currentTarget","registerLicense","__NgCli_bootstrap_1","useValue","bootstrapModule","serviceWorker","register","catch","open","send"],"sourceRoot":"webpack:///","sources":["./src/environments/environment.prod.ts","./src/app/services/MarketInfoService.service.ts","./src/app/services/auth.service.ts","./src/app/services/User.service.ts","./src/app/rental-menu/rental-menu.component.html","./src/app/rental-menu/rental-menu.component.ts","./src/app/rental-menu/home/home.component.html","./src/app/rental-menu/home/home.component.ts","./src/app/Shared/enum.ts","./src/app/services/General.service.ts","./src/app/services/Vendor.service.ts","./src/app/services/paymentService.service.ts","./src/app/services/Rental.service.ts","./src/app/Shared/customCurrency.pipe.ts","./src/app/Shared/SharedData.service.ts","./src/app/Shared/success-tick/success-tick.component.ts","./src/app/Shared/success-tick/success-tick.component.html","./src/app/Shared/failure-cross/failure-cross.component.ts","./src/app/Shared/failure-cross/failure-cross.component.html","./src/app/Shared/loader/loader.component.ts","./src/app/Shared/loader/loader.component.html","./src/app/Shared/payment/payment.component.html","./src/app/Shared/payment/payment.component.ts","./src/app/rental-menu/vendor-registration/vendor-registration.component.html","./src/app/rental-menu/vendor-registration/vendor-registration.component.ts","./src/app/rental-menu/vendor-login/vendor-login.component.html","./src/app/rental-menu/vendor-login/vendor-login.component.ts","./src/app/rental-menu/vendor-login/rent-online/rentallayout-online/rentallayout-online.component.html","./src/app/rental-menu/vendor-login/rent-online/rentallayout-online/rentallayout-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/dailyrental-online/dailyrental-online.component.html","./src/app/rental-menu/vendor-login/rent-online/dailyrental-online/dailyrental-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/weeklyrental-online/weeklyrental-online.component.html","./src/app/rental-menu/vendor-login/rent-online/weeklyrental-online/weeklyrental-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/monthlyrental-online/monthlyrental-online.component.html","./src/app/rental-menu/vendor-login/rent-online/monthlyrental-online/monthlyrental-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/combinedweeklyrental-online/combinedweeklyrental-online.component.html","./src/app/rental-menu/vendor-login/rent-online/combinedweeklyrental-online/combinedweeklyrental-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/combinedmonthlyrental-online/combinedmonthlyrental-online.component.html","./src/app/rental-menu/vendor-login/rent-online/combinedmonthlyrental-online/combinedmonthlyrental-online.component.ts","./src/app/rental-menu/vendor-login/rent-online/rental-confirmation/rental-confirmation.component.html","./src/app/rental-menu/vendor-login/rent-online/rental-confirmation/rental-confirmation.component.ts","./src/app/rental-menu/vendor-login/rent-online/booking-details/booking-details.component.html","./src/app/rental-menu/vendor-login/rent-online/booking-details/booking-details.component.ts","./src/app/rental-menu/vendor-login/rent-online/booking-details-weekly-monthly/booking-details-weekly-monthly.component.html","./src/app/rental-menu/vendor-login/rent-online/booking-details-weekly-monthly/booking-details-weekly-monthly.component.ts","./src/app/rental-menu/vendor-login/rent-online/rent-online.component.html","./src/app/rental-menu/vendor-login/rent-online/rent-online.component.ts","./src/app/rental-menu/market-map/market-map.component.html","./src/app/rental-menu/market-map/market-map.component.ts","./src/app/services/News.service.ts","./src/app/rental-menu/news/news.component.html","./src/app/rental-menu/news/news.component.ts","./src/app/services/ContactUs.service.ts","./src/app/rental-menu/contact-us/contact-us.component.html","./src/app/rental-menu/contact-us/contact-us.component.ts","./src/app/Shared/vendor-Payment-details/vendor-payments.component.html","./src/app/Shared/vendor-Payment-details/vendor-payments.component.ts","./src/app/auth/auth.guard.ts","./src/app/rental-menu/vendor-login/rent-online/new-vendor-rentonline/new-vendor-rentonline.component.html","./src/app/rental-menu/vendor-login/rent-online/new-vendor-rentonline/new-vendor-rentonline.component.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/Shared/token.interceptor.ts","./src/app/Shared/LinkifyPipe.pipe.ts","./src/app/app.module.ts","./src/app/Shared/app-config.inject.ts","./src/main.ts"],"sourcesContent":["export const environment = {\r\n  production: \"{production}\",\r\n  syncfusionKey: \"{syncfusionKey}\",\r\n  apiBaseUrl: \"{apiBaseUrl}\",\r\n  paymentMaxWaitTime: 2,\r\n  paymentGetCCTStatusInterval: 10\r\n};\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject,Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\n\r\nexport class MarketInfoService {\r\n  private baseURL: string;\r\n  constructor(private http: HttpClient) {\r\n    this.baseURL = environment.apiBaseUrl;\r\n  }\r\n\r\n  private marketIdSubject = new BehaviorSubject<any | null>(null);\r\n  marketId$ = this.marketIdSubject.asObservable();\r\n\r\n  setMarketId(id: any) {\r\n    this.marketIdSubject.next(id);\r\n  }\r\n\r\n  getMarketId() {\r\n    return this.marketIdSubject.asObservable();\r\n  }\r\n\r\n  public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n  getMarketDays(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetMarketDays?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketDays = res.body as any;\r\n          return marketDays;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getMarketLogo(marketId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/MarketInfo/GetMarketLogo?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketLogo= res.body as any[];\r\n          return marketLogo;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n\r\n  getDailyMarketDays(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetDailyMarketDays?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketdays = res.body as any;\r\n          return marketdays;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getWeeklyMarketDays(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetWeeklyMarketDays?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketdays = res.body as any;\r\n          return marketdays;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getALLBoothsForLayoutALLRentalTypes(marketId, rentalTypesDatesModel): Observable<any> {\r\n    const url = `${this.baseURL}/MarketInfo/GetALLBoothsForLayoutALLRentalTypes?marketId=` + marketId\r\n    return this.http.post<any>(url, rentalTypesDatesModel, this.options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getMonthlyMarketDays(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetMonthlyMarketDays?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketdays = res.body as any;\r\n          return marketdays;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getParts(marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n        `${this.baseURL}/MarketInfo/GetParts?marketId=` + marketId,\r\n        { observe: 'response' })\r\n        .pipe(\r\n          map(res => {\r\n            const parts = res.body as any;\r\n            return parts;\r\n          }),\r\n          catchError(this.handleError)\r\n        );\r\n   }\r\n\r\n   getAllBoothsForDailyRentalTypeLayout(marketId,partId, selectedMarketDays): Observable<any> {\r\n    const url = `${this.baseURL}/MarketInfo/GetAllBoothsForDailyRentalTypeLayout?partId=${partId}&marketId=${marketId}`\r\n    return this.http.post<any>(url, selectedMarketDays, this.options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getListOfValuesData(): Observable<any> {    \r\n    return this.http.get<any>(\r\n        `${this.baseURL}/MarketInfo/GetListOfValuesData`,\r\n        { observe: 'response' })\r\n        .pipe(\r\n          map(res => {\r\n            const result = res.body as any;\r\n            return result;\r\n          }),\r\n          catchError(this.handleError)\r\n        );\r\n   }\r\n\r\n   getLayoutFonts(marketId){\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetLayoutFonts?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n   }\r\n\r\n   getWebRentalSetting(marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n        `${this.baseURL}/MarketInfo/GetWebRentalSetting?marketId=` + marketId,\r\n        { observe: 'response' })\r\n        .pipe(\r\n          map(res => {\r\n            const parts = res.body as any;\r\n            return parts;\r\n          }),\r\n          catchError(this.handleError)\r\n        );\r\n   }\r\n\r\n   getWebRentalSettingDashboardSetting(marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n        `${this.baseURL}/MarketInfo/GetWebRentalSettingDashboardSetting?marketId=` + marketId,\r\n        { observe: 'response' })\r\n        .pipe(\r\n          map(res => {\r\n            return res.body as any;\r\n          }),\r\n          catchError(this.handleError)\r\n        );\r\n   }\r\n\r\n   getBuildingAreasInLayOut(partId,marketId){\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetBuildingAreasInLayOut?partId=${partId}&marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n   }\r\n\r\n   getImages(){\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetImagesForLayout`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n   }\r\n\r\n  getLayoutImages(partId, marketId) {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetLayoutImages?partId=${partId}&marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getMarketDetails(marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetMarketDetails?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketDetails = res.body as any;\r\n          return marketDetails;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  GetEnabledRentalTypesForMarket(marketId: number): Observable<any> {\r\n    return this.http.get(`${this.baseURL}/MarketInfo/GetEnabledRentalTypesForMarket?marketId=${marketId}`)\r\n      .pipe(\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getCurrentMarketVendorGeneralSettings(marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/General/getCurrentMarketVendorGeneralSettings?marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const generalSettings = res.body as any;\r\n          return generalSettings;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  GetAllMarketProducts(Id): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Vendor/GetAllMarketProducts?marketId=${Id}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  RegistrationFee(Id): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/MarketInfo/GetRegistrationFee?marketId=${Id}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  private handleError(error: HttpErrorResponse) {\r\n    console.error('server error:', error);\r\n    if (error.error instanceof Error) {\r\n      const errMessage = error.error.message;\r\n      // this.appinsights.logEvent(errMessage);\r\n      return throwError(errMessage);\r\n    }\r\n    return throwError(error || 'Node.js server error');\r\n  }\r\n} ","import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n   providedIn: 'root',\r\n})\r\n\r\nexport class AuthService {\r\n    public isLoggedIn;\r\n\r\n    isLoginAutenticated(){\r\n        const token=localStorage.getItem('token');\r\n        if (token) {\r\n            return true;\r\n        }\r\n        else{\r\n            return false;\r\n        }\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\n\r\nexport class UserService {\r\n  private baseURL: string;\r\n  constructor(private http: HttpClient,\r\n    private authService: AuthService\r\n  ) {\r\n    this.baseURL = environment.apiBaseUrl;\r\n  }\r\n\r\n  public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n  getToken(userData): Observable<any> {\r\n    const url = `${this.baseURL}/user`;\r\n    return this.http.post<any>(url, userData, this.options)\r\n      .pipe(\r\n        map(res => {\r\n          if (res.Token) {\r\n            this.authService.isLoggedIn = true;\r\n            localStorage.setItem('token', res.Token);\r\n            return res;\r\n          }\r\n          else {\r\n            this.authService.isLoggedIn = false;\r\n          }\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  clearToken(): void {\r\n    localStorage.removeItem('token');\r\n    this.authService.isLoggedIn = false;\r\n  }\r\n\r\n  ForgotPassword(marketId, email): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/user/VendorWRLoginForgotPassword?marketId=${marketId}`\r\n    return this.http.post<any>(url, { email }, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  private handleError(error: HttpErrorResponse) {\r\n    console.error('server error:', error);\r\n    if (error.error instanceof Error) {\r\n      const errMessage = error.error.message;\r\n      // this.appinsights.logEvent(errMessage);\r\n      return throwError(errMessage);\r\n    }\r\n    return throwError(error || 'Node.js server error');\r\n  }\r\n} ","<div class=\"desktopMenu\">\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-center pt-2\">\r\n            <img [src]=\"imageUrl\" style=\"width: 40%;\" class=\"img-fluid\">\r\n        </div>\r\n    </div>\r\n    <ng-container>\r\n        <div class=\"row\" routerLinkActive=\"active\" [class.active]=\"isActiveRoute('/home')\">\r\n            <div (click)=\"changeRentalMenu('home')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/dashboard.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">Dashboard</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/registration')\"routerLinkActive=\"active\" *ngIf=\"allowRegisterVendor\">\r\n            <div (click)=\"changeRentalMenu('registration')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/registration.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">{{vendorTerm}} Registration</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/newven-online')\" routerLinkActive=\"active\" *ngIf=\"allowNewVendorBooking\">\r\n            <div (click)=\"changeRentalMenu('newven-online')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/registration.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">New {{vendorTerm}}</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/login')\" routerLinkActive=\"active\">\r\n            <div (click)=\"changeRentalMenu('login')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/login.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">{{vendorTerm}} Login</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/map')\" routerLinkActive=\"active\">\r\n            <div (click)=\"changeRentalMenu('map')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/map.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">Market Map</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>\r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/news')\" routerLinkActive=\"active\">\r\n            <div (click)=\"changeRentalMenu('news')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/news.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">News</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>    \r\n    <ng-container>\r\n        <div class=\"row\" [class.active]=\"isActiveRoute('/contact')\" routerLinkActive=\"active\">\r\n            <div (click)=\"changeRentalMenu('contact')\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/contact.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">Contact Us</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>    \r\n    <ng-container *ngIf=\"checkVendorLoggedIn()\">\r\n        <div class=\"row\" routerLinkActive=\"active\">\r\n            <div (click)=\"logout()\" class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                <img src=\"../assets/images/login.svg\" class=\"img-fluid\">\r\n                &nbsp;&nbsp;<label class=\"d-inline\">{{vendorTerm}} Logout</label>\r\n            </div>\r\n        </div>\r\n    </ng-container>   \r\n</div>\r\n<div class=\"mobileMenu\">\r\n    <div class=\"pos-f-t\">\r\n        <nav class=\"navbar navbar-dark bgRespMenu\">\r\n            <div class=\"row\">\r\n                <div class=\"col-6 text-left\">\r\n                    <img [src]=\"imageUrl\" class=\"img-fluid w-75\">\r\n                </div>\r\n                <div class=\"col-6 text-right\">\r\n                    <button class=\"navbar-toggler text-right\" type=\"button\" data-toggle=\"collapse\" data-target=\"#navbarToggleExternalContent\" aria-controls=\"navbarToggleExternalContent\" aria-expanded=\"false\" aria-label=\"Toggle navigation\">\r\n                        <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGlkPSJMYXllcl8xIiBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCAyNCAyNCIgaGVpZ2h0PSI1MTIiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjUxMiI+PGc+PHBhdGggZD0ibTMuNSA3LjVoMTdjLjgyODYxMzMgMCAxLjUtLjY3MTM4NjcgMS41LTEuNXMtLjY3MTM4NjctMS41LTEuNS0xLjVoLTE3Yy0uODI4NjEzMyAwLTEuNS42NzEzODY3LTEuNSAxLjVzLjY3MTM4NjcgMS41IDEuNSAxLjV6IiBmaWxsPSIjMTA2ZWJlIi8+PHBhdGggZD0ibTIwLjUgMTAuNWgtMTdjLS44Mjg2MTMzIDAtMS41LjY3MTM4NjctMS41IDEuNXMuNjcxMzg2NyAxLjUgMS41IDEuNWgxN2MuODI4NjEzMyAwIDEuNS0uNjcxMzg2NyAxLjUtMS41cy0uNjcxMzg2Ny0xLjUtMS41LTEuNXoiIGZpbGw9IiMxMDZlYmUiLz48cGF0aCBkPSJtMjAuNSAxNi41aC0xN2MtLjgyODYxMzMgMC0xLjUuNjcxMzg2Ny0xLjUgMS41cy42NzEzODY3IDEuNSAxLjUgMS41aDE3Yy44Mjg2MTMzIDAgMS41LS42NzEzODY3IDEuNS0xLjVzLS42NzEzODY3LTEuNS0xLjUtMS41eiIgZmlsbD0iIzEwNmViZSIvPjwvZz48L3N2Zz4=\" class=\"img-fluid imgToggler\"/>\r\n                      </button>\r\n                </div>\r\n            </div>\r\n        </nav>\r\n        <div class=\"collapse\" id=\"navbarToggleExternalContent\">\r\n            <div class=\"bgRespMenu py-2 px-4\">\r\n                <a [routerLink]=\"['/home', marketId]\" routerLinkActive=\"active\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi44MiIgaGVpZ2h0PSIxNi42NDIiIHZpZXdCb3g9IjAgMCAxNi44MiAxNi42NDIiPgogIDxwYXRoIGlkPSJob21lIiBkPSJNMTM4LjQxOCw4OC4xODNoLTMuNTU2YTEuODQzLDEuODQzLDAsMCwxLTEuODQxLTEuODQxVjg0LjM1NmEuMDEuMDEsMCwwLDAtLjAxLS4wMDloLTIuMzI0YS4wMS4wMSwwLDAsMC0uMDEuMDA5djEuOTg2YTEuODQzLDEuODQzLDAsMCwxLTEuODQxLDEuODQxaC0zLjU1NmExLjg0MywxLjg0MywwLDAsMS0xLjg0MS0xLjg0MVY3OS45YTIuMzQ2LDIuMzQ2LDAsMCwxLC42OTItMS42N2w1Ljk2Ni01Ljk2YTIuNDgzLDIuNDgzLDAsMCwxLDMuNTA2LDBsNS45NjQsNS45NmEyLjM0NiwyLjM0NiwwLDAsMSwuNjkyLDEuNjd2Ni40NDZhMS44NDMsMS44NDMsMCwwLDEtMS44NDEsMS44NDFabS03LjczMS00LjczM2gyLjMyNWEuOTA3LjkwNywwLDAsMSwuOTA2LjkwNnYxLjk4NmEuOTQ2Ljk0NiwwLDAsMCwuOTQ1Ljk0NWgzLjU1NmEuOTQ2Ljk0NiwwLDAsMCwuOTQ1LS45NDVWNzkuOWExLjQ1NSwxLjQ1NSwwLDAsMC0uNDI5LTEuMDM2TDEzMi45Nyw3Mi45YTEuNTg2LDEuNTg2LDAsMCwwLTIuMjM5LDBsLTUuOTYzLDUuOTZhMS40NTUsMS40NTUsMCwwLDAtLjQyOSwxLjAzNnY2LjQ0NmEuOTQ2Ljk0NiwwLDAsMCwuOTQ1Ljk0NWgzLjU1NmEuOTQ2Ljk0NiwwLDAsMCwuOTQ1LS45NDVWODQuMzU2QS45MDcuOTA3LDAsMCwxLDEzMC42ODcsODMuNDVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTIzLjQ0IC03MS41NDEpIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"menu\">Dashboard</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/registration', marketId]\" routerLinkActive=\"active\" *ngIf=\"allowRegisterVendor\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOS4yMjUiIGhlaWdodD0iMTguOTgyIiB2aWV3Qm94PSIwIDAgMTkuMjI1IDE4Ljk4MiI+CiAgPGcgaWQ9Ik1hbGVfQ2FzaGllciIgZGF0YS1uYW1lPSJNYWxlIENhc2hpZXIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC00LjEzOCAtNC40OSkiPgogICAgPHBhdGggaWQ9IlBhdGhfMjUxNCIgZGF0YS1uYW1lPSJQYXRoIDI1MTQiIGQ9Ik0yMi40OSwxNi41MzdjLS43MzQtLjk2NS0zLjY0My0xLjk2Ni00LjQ0Ny0yLjIyOS0uMDExLS4xMzYtLjAyMS0uMjctLjAzNi0uNDEtLjAyNi0uMjQtLjA2MS0uNDgxLS4xLS43MjJhMy42OTQsMy42OTQsMCwwLDAsMS4wMTMtMS44MjksMS44NCwxLjg0LDAsMCwwLC40ODctLjU1MSwxLjU1NywxLjU1NywwLDAsMCwuMDcyLTEuNDY4LDQuODE5LDQuODE5LDAsMCwwLC4xMDktMS41MzYsNC44NzYsNC44NzYsMCwwLDAtLjI3OC0xLjIyNSwxLjQwNiwxLjQwNiwwLDAsMCwuMTczLS4yMjksMi4wNzIsMi4wNzIsMCwwLDAsLjI2NS0uNzExLjQ0Ni40NDYsMCwwLDAtLjUtLjUxLDIuNjU5LDIuNjU5LDAsMCwxLS41NDIuMDI0LDIuODQyLDIuODQyLDAsMCwxLS45NTUtLjI4MSw0Ljk1OCw0Ljk1OCwwLDAsMC0zLjc1NiwwLDMuNzg5LDMuNzg5LDAsMCwwLTEuOTc0LDIuNTA4LDQsNCwwLDAsMCwwLDIuMTA4LDEuNywxLjcsMCwwLDAsLjcsMS45MDgsMy45MDcsMy45MDcsMCwwLDAsLjc3OCwxLjU3NGMuMDUxLjA2My4xMTIuMTM1LjE3OS4yMTEtLjAzNy4yNDItLjA3My40ODctLjEuNzMtLjAxNS4xNDQtLjAyNS4yODItLjAzNy40MjItLjg1OC4yNzItMy42NCwxLjIwNy00LjM2MiwyLjEzYTMuNzYxLDMuNzYxLDAsMCwwLS41NDIsMS40MDVoLS42OFYxNS43Mkg5LjIzN0EuNzU5Ljc1OSwwLDAsMCwxMCwxNC45NjJWMTIuOWEuNzU5Ljc1OSwwLDAsMC0uNzU4LS43NTlINC45YS43NTkuNzU5LDAsMCwwLS43NTguNzU5djIuMDY3YS43NTkuNzU5LDAsMCwwLC43NTguNzU4SDYuMDMzdjIuMTM1SDQuNDgzYS4zNDUuMzQ1LDAsMCwwLS4zNDUuMzQ1djQuOTI3YS4zNDUuMzQ1LDAsMCwwLC4zNDUuMzQ1aDE3Ljg4YS4zNDUuMzQ1LDAsMCwwLC4zNDUtLjM0NVYyMWEuMzQ1LjM0NSwwLDAsMC0uMzQ1LS4zNDVIMjAuODg5VjE4LjgyOWEuMzQ0LjM0NCwwLDAsMC0uMS0uMjQzdi0yLjQzYTMuNjU1LDMuNjU1LDAsMCwxLDEuMTUzLjgsMTEuMjUyLDExLjI1MiwwLDAsMSwuNzMzLDMuODUxLjM0NS4zNDUsMCwwLDAsLjM0NC4zMjVoLjAyYS4zNDUuMzQ1LDAsMCwwLC4zMjQtLjM2NEMyMy4zNDMsMjAuNDI0LDIzLjE1LDE3LjQwNSwyMi40OSwxNi41MzdabS04LjY1MiwxLjk0N0wxMy40NzcsMThhLjM0NS4zNDUsMCwwLDAtLjI3Ny0uMTRoLS4yMzVWMTUuMjQ0Yy4yOTItLjEuNTYtLjE5My43NzktLjI2Mi4zODYuNDg3LDEuMywxLjUyNywyLjA1MSwxLjUzMWgwYy43NTgsMCwxLjY5Mi0xLjA0MywyLjA4Ni0xLjUyOS4yLjA2Ny40NDUuMTUxLjcwOS4yNDd2My4yNTVabS0yLjM3OC0uNjI4VjE1LjgzMWMuMjY3LS4xMTcuNTQzLS4yMjguODE1LS4zMzN2Mi4zNTdabS0uMjU4LjY5aDEuODI0bDEuNTU3LDIuMTA4SDExLjJabTYuMTItNC41NzRjLjAyLjE4OC4wMzUuMzcuMDQ3LjU1MS0uNDYyLjU3Mi0xLjIsMS4zLTEuNTcsMS4zaDBjLS4zNzQsMC0xLjEyNi0uNzY5LTEuNTczLTEuMzQ0LjAxMi0uMTY2LjAyNS0uMzMzLjA0NC0uNTA2LjAxLS4wOTMuMDI2LS4xODYuMDM4LS4yOC4wNS4wMzEuMDk0LjA2NC4xNDguMDkyYTIuNTU5LDIuNTU5LDAsMCwwLDEuMTgyLjI3NiwzLjY2NSwzLjY2NSwwLDAsMCwxLjU3MS0uMzgxYy4wMjQtLjAxMi4wNDUtLjAyNi4wNjgtLjAzOUMxNy4yOTEsMTMuNzUsMTcuMzEsMTMuODYxLDE3LjMyMiwxMy45NzFabS00LjYyOS02LjQyYTMuMDcyLDMuMDcyLDAsMCwxLDEuNi0yLjA2OCw0LjM0MSw0LjM0MSwwLDAsMSwzLjE4OS4wMDksMy41MTQsMy41MTQsMCwwLDAsMS4xNTYuMzMzLDIuMTY3LDIuMTY3LDAsMCwwLC4zMzEuMDA4LDEuMzc2LDEuMzc2LDAsMCwxLS4wNzYuMTQ3Ljc0Ljc0LDAsMCwxLS4xNTYuMTgxLjQ0MS40NDEsMCwwLDAtLjEyNy41QTQuMjA2LDQuMjA2LDAsMCwxLDE4LjksNy44NTVhNC4xMjIsNC4xMjIsMCwwLDEtLjA0MiwxLjA4NiwyLjcxNiwyLjcxNiwwLDAsMS0uMi0uNDI1LDIuNiwyLjYsMCwwLDEtLjE2OS0uODc4LjQzOC40MzgsMCwwLDAtLjE3OS0uMzQ4LjQ1MS40NTEsMCwwLDAtLjI2OC0uMDg3LjQ1OC40NTgsMCwwLDAtLjEyNy4wMTgsNy43NDQsNy43NDQsMCwwLDEtMi4wOTUuMzEsNy43Myw3LjczLDAsMCwxLTIuMjA4LS4zLjQ0OS40NDksMCwwLDAtLjM4OS4wNjguNDM5LjQzOSwwLDAsMC0uMTgxLjM0MSwyLjM1NSwyLjM1NSwwLDAsMS0uMTgxLjgyNiwyLjQ5NCwyLjQ5NCwwLDAsMS0uMjQ3LjQ1MkEzLjI3LDMuMjcsMCwwLDEsMTIuNjkzLDcuNTUxWm0uNjc2LDMuNTQ4LS4wMzEtLjE2MS0uMTQ1LS4wNzdhMS4wNTksMS4wNTksMCwwLDEtLjUtLjU5MiwxLDEsMCwwLDEtLjA0Mi0uNC40NDYuNDQ2LDAsMCwwLC4xNTUtLjFoMEEzLjIzOSwzLjIzOSwwLDAsMCwxMy41LDguNzM2YTMuMDQ4LDMuMDQ4LDAsMCwwLC4yMDgtLjc2Miw4LjM0LDguMzQsMCwwLDAsMi4xMjIuMjQ3LDguNDU5LDguNDU5LDAsMCwwLDEuOTkyLS4yNTksMy4zMDUsMy4zMDUsMCwwLDAsLjE5My44QTMuNDgsMy40OCwwLDAsMCwxOC42MzQsOS44YS40NDcuNDQ3LDAsMCwwLC4zMS4xNTMuOTA1LjkwNSwwLDAsMS0uMTMzLjUsMS4xNzcsMS4xNzcsMCwwLDEtLjM4OC40bC0uMTI4LjA4My0uMDI1LjE1YTIuODEzLDIuODEzLDAsMCwxLTEuMzgxLDEuOTc5LDIuNTUxLDIuNTUxLDAsMCwxLTIuMTE5LjEsMi4zNSwyLjM1LDAsMCwxLS43NDUtLjY2MSwzLjIwNSwzLjIwNSwwLDAsMS0uNjU3LTEuNDA5Wk05LjcyOCwxNi44NzVhMy4zNTgsMy4zNTgsMCwwLDEsMS4wNDEtLjcydjEuN0g5LjM1M0EyLjgwOCwyLjgwOCwwLDAsMSw5LjcyOCwxNi44NzVaTTQuOSwxNS4wM2EuMDY4LjA2OCwwLDAsMS0uMDY4LS4wNjhWMTIuOWEuMDY5LjA2OSwwLDAsMSwuMDY4LS4wNjlIOS4yMzdhLjA2OS4wNjksMCwwLDEsLjA2OC4wNjl2Mi4wNjdhLjA2OC4wNjgsMCwwLDEtLjA2OC4wNjhINy45NjN2LS4yMzdhLjk2NS45NjUsMCwxLDAtMS45Mywwdi4yMzdabTEuODI2LS4yMzdhLjI3NS4yNzUsMCwxLDEsLjU1LDB2My4wNjJoLS41NVpNNC44MjgsMTguNTQ2aDUuNjg0djIuMTA4SDQuODI4Wm0xNy4xOSw0LjIzN0g0LjgyOFYyMS4zNDNoMTcuMTlabS02LjU3OC0yLjEyOS0xLjA5My0xLjQ3OUgyMC4ydjEuNDc5Wk0yMC4xLDE4LjQ4NGgtLjgxNVYxNS40OTFjLjI3LjEwNi41NDYuMjIuODE1LjMzOVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMCkiIGZpbGw9IiM0NDQiLz4KICA8L2c+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">{{vendorTerm}} Registration</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/newven-online', marketId, vendorId]\" routerLinkActive=\"active\" *ngIf=\"!allowRegisterVendor\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"../assets/images/registration.svg\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">New {{vendorTerm}}</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/login', marketId]\" routerLinkActive=\"active\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi40MzMiIGhlaWdodD0iMTYuNDMzIiB2aWV3Qm94PSIwIDAgMTYuNDMzIDE2LjQzMyI+CiAgPGcgaWQ9ImxvZ2luIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMiAtMTk1KSI+CiAgICA8cGF0aCBpZD0iUGF0aF8yNTE1IiBkYXRhLW5hbWU9IlBhdGggMjUxNSIgZD0iTTUuNzkyLDIwMC42ODhWMTk2LjlhLjYzMi42MzIsMCwwLDEsLjYzMi0uNjMySDE2LjUzN2EuNjMyLjYzMiwwLDAsMSwuNjMyLjYzMnYxMi42NDFhLjYzMi42MzIsMCwwLDEtLjYzMi42MzJINi40MjRhLjYzMi42MzIsMCwwLDEtLjYzMi0uNjMydi0zLjc5MmEuNjMyLjYzMiwwLDEsMC0xLjI2NCwwdjMuNzkyYTEuOSwxLjksMCwwLDAsMS45LDEuOUgxNi41MzdhMS45LDEuOSwwLDAsMCwxLjktMS45VjE5Ni45YTEuOSwxLjksMCwwLDAtMS45LTEuOUg2LjQyNGExLjksMS45LDAsMCwwLTEuOSwxLjl2My43OTJhLjYzMi42MzIsMCwxLDAsMS4yNjQsMFptMi45LDEuOUgyLjYzMmEuNjMyLjYzMiwwLDAsMCwwLDEuMjY0SDguNjkxTDcuMjQyLDIwNS4zYS42MzIuNjMyLDAsMCwwLC44OTQuODk0bDIuNTI4LTIuNTI4YS42MzEuNjMxLDAsMCwwLDAtLjg5NGwtMi41MjgtMi41MjhhLjYzMi42MzIsMCwxLDAtLjg5NC44OTRaIiBmaWxsPSIjNDQ0IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KICA8L2c+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">{{vendorTerm}} Login</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/map', marketId]\" routerLinkActive=\"active\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxOS4wODkiIGhlaWdodD0iMTkuMDg5IiB2aWV3Qm94PSIwIDAgMTkuMDg5IDE5LjA4OSI+CiAgPGcgaWQ9Ikdyb3VwXzExMjk3IiBkYXRhLW5hbWU9Ikdyb3VwIDExMjk3IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDY3IDEyNTEuNzM2KSI+CiAgICA8ZyBpZD0iR3JvdXBfMTEyOTMiIGRhdGEtbmFtZT0iR3JvdXAgMTEyOTMiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ3My45NzUgLTEyNDguMjU4KSI+CiAgICAgIDxnIGlkPSJHcm91cF8xMTI1MyIgZGF0YS1uYW1lPSJHcm91cCAxMTI1MyI+CiAgICAgICAgPHBhdGggaWQ9IlBhdGhfMjUxNiIgZGF0YS1uYW1lPSJQYXRoIDI1MTYiIGQ9Ik0xODkuNjUzLDkzLjNhMi41NDIsMi41NDIsMCwwLDAtMS40NTUuNDU1LjI4Mi4yODIsMCwwLDAtLjA3Mi4zOTEuMjc4LjI3OCwwLDAsMCwuMzg4LjA3MiwxLjk4OSwxLjk4OSwwLDAsMSwxLjEzOS0uMzU2LDIuMDIxLDIuMDIxLDAsMSwxLTEuNzg2LDEuMDkzLjI4Mi4yODIsMCwwLDAtLjExOS0uMzc5LjI3OC4yNzgsMCwwLDAtLjM3Ni4xMiwyLjYxMiwyLjYxMiwwLDAsMC0uMjg5LDEuMTkzLDIuNTcsMi41NywwLDEsMCwyLjU2OS0yLjU4OVoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0xODcuMDg0IC05My4yOTcpIiBmaWxsPSIjNDQ0Ii8+CiAgICAgIDwvZz4KICAgIDwvZz4KICAgIDxnIGlkPSJHcm91cF8xMTI5NCIgZGF0YS1uYW1lPSJHcm91cCAxMTI5NCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDY3IC0xMjUxLjczNikiPgogICAgICA8ZyBpZD0iR3JvdXBfMTEyNTUiIGRhdGEtbmFtZT0iR3JvdXAgMTEyNTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDApIj4KICAgICAgICA8cGF0aCBpZD0iUGF0aF8yNTE3IiBkYXRhLW5hbWU9IlBhdGggMjUxNyIgZD0iTTE5LjA2OCwxOC43bC0yLjc1Mi02LjY2MWEuMjc5LjI3OSwwLDAsMC0uMjU3LS4xNzNIMTMuMzE3QTE0LjIxOSwxNC4yMTksMCwwLDAsMTQuNjQxLDkuN2E4LjMzNSw4LjMzNSwwLDAsMCwuOTI2LTMuNjM3LDYuMDIyLDYuMDIyLDAsMSwwLTEyLjA0NCwwQTguMzM1LDguMzM1LDAsMCwwLDQuNDQ5LDkuN2ExNC4yMTEsMTQuMjExLDAsMCwwLDEuMzI0LDIuMTYySDMuMDMxYS4yNzkuMjc5LDAsMCwwLS4yNTcuMTczTC45LDE2LjU3OGEuMjgyLjI4MiwwLDAsMCwuMTUuMzY3LjI3Ny4yNzcsMCwwLDAsLjM2NC0uMTUxbC4yNjgtLjY0OGgxLjlMMi42LDE4LjUyOEguN2wuMjg1LS42OWEuMjgyLjI4MiwwLDAsMC0uMTUtLjM2Ny4yNzguMjc4LDAsMCwwLS4zNjUuMTUxTC4wMjIsMTguN2EuMjgzLjI4MywwLDAsMCwuMDI1LjI2NC4yNzguMjc4LDAsMCwwLC4yMzIuMTI1SDE4LjgxMWEuMjc4LjI3OCwwLDAsMCwuMjMyLS4xMjVBLjI4My4yODMsMCwwLDAsMTkuMDY4LDE4LjdaTTQuMDgxLDYuMDY3YTUuNDY1LDUuNDY1LDAsMSwxLDEwLjkyOSwwYzAsMS4yNzMtLjQzOSwzLjMwNy0yLjQ3LDUuOWwtLjAwNi4wMDdxLS4xNTYuMi0uMzI0LjRBMjEuNDUxLDIxLjQ1MSwwLDAsMSw5LjU0NSwxNS4wNWEyMS40MTcsMjEuNDE3LDAsMCwxLTIuNjU4LTIuNjY2cS0uMTcyLS4yMDgtLjMzMS0uNDFsLS4wMDUtLjAwN0M0LjUyLDkuMzc1LDQuMDgxLDcuMzQxLDQuMDgxLDYuMDY3Wm0tLjg2NCw2LjM2MWgxLjlMNC40MjMsMTQuMWgtMS45Wm0xLjYzLDYuMUw2LjU5LDE0LjMwOWw0Ljk1OSw0LjIxOVptNy41NjYsMGgwbC01Ljc1NS00LjlhLjI3OC4yNzgsMCwwLDAtLjQzNy4xMDdMNC4yNDMsMTguNTI4SDMuMmwxLjA1NS0yLjU1NGEuMjgzLjI4MywwLDAsMC0uMDI1LS4yNjRBLjI3OC4yNzgsMCwwLDAsNCwxNS41ODVIMS45MTNsLjM4LS45MTlINC42MDlhLjI3OS4yNzksMCwwLDAsLjI1Ny0uMTczbC44NTMtMi4wNjVINi4ycS4xMjYuMTU4LjI1Ny4zMTdhMjEuMDM1LDIxLjAzNSwwLDAsMCwyLjkxNSwyLjg4OS4yNzcuMjc3LDAsMCwwLC4zNDEsMGMuMDMzLS4wMjYuNDc2LS4zNzMsMS4xMDYtLjk2OGgzLjE1N2EuMjgxLjI4MSwwLDAsMCwwLS41NjJIMTEuNGMuMzg3LS4zOTIuODA5LS44NDgsMS4yMzQtMS4zNTlxLjEzMS0uMTU4LjI1Ny0uMzE3aDIuOTg2bC42OTIsMS42NzZIMTUuMDk1YS4yODEuMjgxLDAsMCwwLDAsLjU2MmgxLjdsLjM4LjkxOUgxMS40MzNhLjI3OS4yNzksMCwwLDAtLjI2MS4xODMuMjgyLjI4MiwwLDAsMCwuMDc4LjMxbDIuOCwyLjQ1SDEyLjQxNFptMi40ODksMEwxMi4xOCwxNi4xNDdoNS4yM2wuOTg0LDIuMzgxWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTAuMDAxIDApIiBmaWxsPSIjNDQ0Ii8+CiAgICAgIDwvZz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">Market Map</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/news', marketId]\" routerLinkActive=\"active\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyBpZD0iWE1MSURfMzIzXyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0iMTcuMDAyIiBoZWlnaHQ9IjE3LjAwMiIgdmlld0JveD0iMCAwIDE3LjAwMiAxNy4wMDIiPgogIDxnIGlkPSJYTUxJRF8xMjkxXyI+CiAgICA8cGF0aCBpZD0iWE1MSURfMTM1MV8iIGQ9Ik0xNi42NywwSDMuMjU0YS4zMzIuMzMyLDAsMCwwLS4zMzIuMzMyVjEuNzkzSDEuNzkzYS4zMzIuMzMyLDAsMCwwLS4zMzIuMzMyVjMuOTE4SC4zMzJBLjMzMi4zMzIsMCwwLDAsMCw0LjI1VjE1LjIwOUExLjgsMS44LDAsMCwwLDEuNzkzLDE3SDE1LjIwOUExLjgsMS44LDAsMCwwLDE3LDE1LjIwOVYuMzMyQS4zMzIuMzMyLDAsMCwwLDE2LjY3LDBabS0uMzMyLDE1LjIwOWExLjEzLDEuMTMsMCwwLDEtMS4xMjksMS4xMjlIMy4xODVhMS43ODUsMS43ODUsMCwwLDAsLjQtMS4xMjlWMTAuNzI2YS4zMzIuMzMyLDAsMSwwLS42NjQsMHY0LjQ4M2ExLjEyOSwxLjEyOSwwLDAsMS0yLjI1OCwwVjQuNTgzaC44VjE0Ljg3N2EuMzMyLjMzMiwwLDAsMCwuNjY0LDBWMi40NTdoLjh2NS4yOGEuMzMyLjMzMiwwLDAsMCwuNjY0LDBWLjY2NEgxNi4zMzhaIiBmaWxsPSIjNDQ0Ii8+CiAgICA8cGF0aCBpZD0iWE1MSURfMTM3Nl8iIGQ9Ik0xMzYuMzMyLDY5LjA1NUgxNDYuNTZhLjMzMi4zMzIsMCwwLDAsLjMzMi0uMzMyVjY2LjMzMkEuMzMyLjMzMiwwLDAsMCwxNDYuNTYsNjZIMTM2LjMzMmEuMzMyLjMzMiwwLDAsMC0uMzMyLjMzMnYyLjM5MUEuMzMyLjMzMiwwLDAsMCwxMzYuMzMyLDY5LjA1NVptLjMzMi0yLjM5MWg5LjU2NHYxLjcyN2gtOS41NjRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMxLjQ4NCAtNjMuODA4KSIgZmlsbD0iIzQ0NCIvPgogICAgPHBhdGggaWQ9IlhNTElEXzE0NTlfIiBkPSJNMTM2LjMzMiwxOTMuMDRoNS4xMTRhLjMzMi4zMzIsMCwwLDAsLjMzMi0uMzMydi02LjM3NmEuMzMyLjMzMiwwLDAsMC0uMzMyLS4zMzJoLTUuMTE0YS4zMzIuMzMyLDAsMCwwLS4zMzIuMzMydjYuMzc2QS4zMzIuMzMyLDAsMCwwLDEzNi4zMzIsMTkzLjA0Wm0uMzMyLTYuMzc2aDQuNDV2NS43MTJoLTQuNDVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTMxLjQ4NCAtMTc5LjgyNCkiIGZpbGw9IiM0NDQiLz4KICAgIDxwYXRoIGlkPSJYTUxJRF8xNDYwXyIgZD0iTTM0MS44NTIsMTg2aC0zLjUyYS4zMzIuMzMyLDAsMSwwLDAsLjY2NGgzLjUyYS4zMzIuMzMyLDAsMSwwLDAtLjY2NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMjYuNzc2IC0xNzkuODI0KSIgZmlsbD0iIzQ0NCIvPgogICAgPHBhdGggaWQ9IlhNTElEXzE0NzZfIiBkPSJNMzQxLjg1MiwyMzRoLTMuNTJhLjMzMi4zMzIsMCwxLDAsMCwuNjY0aDMuNTJhLjMzMi4zMzIsMCwxLDAsMC0uNjY0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyNi43NzYgLTIyNi4yMykiIGZpbGw9IiM0NDQiLz4KICAgIDxwYXRoIGlkPSJYTUxJRF8xNTMzXyIgZD0iTTM0MS44NTIsMjgyaC0zLjUyYS4zMzIuMzMyLDAsMSwwLDAsLjY2NGgzLjUyYS4zMzIuMzMyLDAsMSwwLDAtLjY2NFoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0zMjYuNzc2IC0yNzIuNjM2KSIgZmlsbD0iIzQ0NCIvPgogICAgPHBhdGggaWQ9IlhNTElEXzE1MzVfIiBkPSJNMzQxLjg1MiwzMzBoLTMuNTJhLjMzMi4zMzIsMCwxLDAsMCwuNjY0aDMuNTJhLjMzMi4zMzIsMCwxLDAsMC0uNjY0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTMyNi43NzYgLTMxOS4wNDIpIiBmaWxsPSIjNDQ0Ii8+CiAgICA8cGF0aCBpZD0iWE1MSURfMTU0NV8iIGQ9Ik0zNDEuODUyLDM3OGgtMy41MmEuMzMyLjMzMiwwLDEsMCwwLC42NjRoMy41MmEuMzMyLjMzMiwwLDEsMCwwLS42NjRaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMzI2Ljc3NiAtMzY1LjQ0OCkiIGZpbGw9IiM0NDQiLz4KICAgIDxwYXRoIGlkPSJYTUxJRF8xNTUwXyIgZD0iTTEzNi4zMzIsNDI2LjY2NEgxNDYuNTZhLjMzMi4zMzIsMCwxLDAsMC0uNjY0SDEzNi4zMzJhLjMzMi4zMzIsMCwwLDAsMCwuNjY0WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTEzMS40ODQgLTQxMS44NTQpIiBmaWxsPSIjNDQ0Ii8+CiAgICA8cGF0aCBpZD0iWE1MSURfMTU3Ml8iIGQ9Ik04OC44MzIsMjY4YS4zMzIuMzMyLDAsMSwwLC4yMzUuMUEuMzM0LjMzNCwwLDAsMCw4OC44MzIsMjY4WiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTg1LjU2MSAtMjU5LjEwMSkiIGZpbGw9IiM0NDQiLz4KICA8L2c+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">News</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/contact', marketId]\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left\">\r\n                            <div class=\"bgActive pl-4 py-3\" routerLinkActive=\"active\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNy45NjkiIGhlaWdodD0iMTQuODQ0IiB2aWV3Qm94PSIwIDAgMTcuOTY5IDE0Ljg0NCI+CiAgPHBhdGggaWQ9ImN1c3RvbWVyLXNlcnZpY2UiIGQ9Ik0xNi45ODYsNjIuNjUxYTQuNTU5LDQuNTU5LDAsMSwwLTMuMzQtMS40NTdsLS40NzEsMS43NTlhLjU0My41NDMsMCwwLDAsLjguNjExTDE1LjgxNiw2Mi41YTQuNTUsNC41NSwwLDAsMCwxLjE3MS4xNTJabS0xLjUxMi0xLjIxLS45MDkuNTI1LjIxMy0uNzkzYS41NDMuNTQzLDAsMCwwLS4xNTUtLjUzOCwzLjQ2NywzLjQ2NywwLDEsMSwxLjI5MS43Ni41NDMuNTQzLDAsMCwwLS40NC4wNDZabTEwLjQ5LTIuOTZjLjAwNi0uMjIyLjAxMi0uNDUyLDAtLjY5MmEyLjU4NCwyLjU4NCwwLDAsMC0yLjYtMi40NzQsNi45NTYsNi45NTYsMCwwLDAtMTIuNzU2LDAsMi41ODQsMi41ODQsMCwwLDAtMi42LDIuNDczYy0uMDExLjI0LDAsLjQ3LDAsLjY5M3MuMDEzLjQ3OCwwLC43NTFhMi41ODgsMi41ODgsMCwwLDAsMi40NywyLjY5NGwuMTIxLDBhMi41NSwyLjU1LDAsMCwwLC45OTMtLjIuNTQyLjU0MiwwLDAsMCwuMjk0LS43LjI5MS4yOTEsMCwwLDAtLjAzLS4wNzMsNS44NzEsNS44NzEsMCwxLDEsNi4yMSwyLjkxMSwxLjUwNiwxLjUwNiwwLDEsMCwuMDQ4LDEuMDk0LDYuOTY5LDYuOTY5LDAsMCwwLDQuNzEyLTMuMDg4LDIuNTQ0LDIuNTQ0LDAsMCwwLC41NDIuMDU5bC4xMiwwYTIuNTg1LDIuNTg1LDAsMCwwLDIuNDcyLTIuNjk1Yy0uMDEyLS4yNzItLjAwNi0uNTE1LDAtLjc1Wk0xMC41MjksNjAuODQxQTEuNSwxLjUsMCwwLDEsOS4xLDU5LjI4Yy4wMTQtLjMxMS4wMDYtLjU4NSwwLS44MjctLjAwNi0uMjEzLS4wMTEtLjQxNCwwLS42MTZhMS41LDEuNSwwLDAsMSwxLjEzMy0xLjM4OSw2Ljk2OSw2Ljk2OSwwLDAsMCwuMyw0LjIzNGgwcS4wMzIuMDgxLjA2Ni4xNjFabTYuMTYzLDQuMDUyYS40Mi40MiwwLDEsMSwuNDItLjQyaDBBLjQyLjQyLDAsMCwxLDE2LjY5Miw2NC44OTNabTguMTg2LTUuNjEzYTEuNSwxLjUsMCwwLDEtMS40MzQsMS41NjJsLS4wNjIsMGEuMDA5LjAwOSwwLDAsMCwwLS4wMDYsNi45NjYsNi45NjYsMCwwLDAsLjM2NS00LjM4OSwxLjUsMS41LDAsMCwxLDEuMTMzLDEuMzljLjAwOS4yLDAsLjQsMCwuNjE2QzI0Ljg3MSw1OC42OTUsMjQuODY0LDU4Ljk2OSwyNC44NzcsNTkuMjc5Wk0xNS43MTcsNTguMDRhLjUyNS41MjUsMCwwLDEsMCwuMDUzLjUzMS41MzEsMCwwLDEsMCwuMDU0YzAsLjAxNywwLC4wMzUtLjAwOC4wNTNhLjUxNi41MTYsMCwwLDEtLjAxMy4wNTIuNDgzLjQ4MywwLDAsMS0uMDE4LjA1Yy0uMDA3LjAxNi0uMDE0LjAzMy0uMDIzLjA0OHMtLjAxNy4wMzEtLjAyNy4wNDZhLjQ2Ni40NjYsMCwwLDEtLjAzMi4wNDNjLS4wMTEuMDE0LS4wMjQuMDI3LS4wMzYuMDRhLjUzLjUzLDAsMCwxLS4wNC4wMzZsLS4wNDMuMDMyYy0uMDE1LjAwOS0uMDMuMDE5LS4wNDYuMDI3YS40NzguNDc4LDAsMCwxLS4wNDguMDIybC0uMDUuMDE4LS4wNTIuMDEzLS4wNTMuMDA4YS41NjguNTY4LDAsMCwxLS4xMDcsMGwtLjA1My0uMDA4LS4wNTItLjAxMy0uMDUtLjAxOGEuNDc3LjQ3NywwLDAsMS0uMDQ4LS4wMjJjLS4wMTYtLjAwOC0uMDMxLS4wMTgtLjA0Ni0uMDI3bC0uMDQzLS4wMzJhLjUyOS41MjksMCwwLDEtLjA0LS4wMzZjLS4wMTItLjAxMy0uMDI1LS4wMjYtLjAzNi0uMDRhLjQ2NS40NjUsMCwwLDEtLjAzMi0uMDQzcS0uMDE0LS4wMjItLjAyNy0uMDQ2Yy0uMDA4LS4wMTYtLjAxNi0uMDMyLS4wMjMtLjA0OHMtLjAxMy0uMDMzLS4wMTgtLjA1YS41NTUuNTU1LDAsMCwxLS4wMjEtLjEuNTMyLjUzMiwwLDAsMSwwLS4wNTRjMC0uMDE4LDAtLjAzNSwwLS4wNTNhLjUxOS41MTksMCwwLDEsLjAwOC0uMDUzLjUwOS41MDksMCwwLDEsLjAxMy0uMDUxLjQ4NC40ODQsMCwwLDEsLjAxOC0uMDVjLjAwNy0uMDE2LjAxNC0uMDMzLjAyMy0uMDQ4YS41NjUuNTY1LDAsMCwxLC4wNTktLjA4OWMuMDExLS4wMTQuMDI0LS4wMjcuMDM2LS4wMzlhLjUzMy41MzMsMCwwLDEsLjA0LS4wMzZjLjAxNC0uMDExLjAyOC0uMDIyLjA0My0uMDMyYS41My41MywwLDAsMSwuMDQ2LS4wMjdsLjA0OC0uMDIzLjA1LS4wMTguMDUyLS4wMTNhLjUzMy41MzMsMCwwLDEsLjIxMiwwbC4wNTIuMDEzLjA1LjAxOGEuNDgxLjQ4MSwwLDAsMSwuMDQ4LjAyMy41My41MywwLDAsMSwuMDQ2LjAyN2MuMDE0LjAxLjAyOS4wMjEuMDQzLjAzMmEuNTMzLjUzMywwLDAsMSwuMDQuMDM2Yy4wMTIuMDEyLjAyNS4wMjYuMDM2LjAzOWEuNTY1LjU2NSwwLDAsMSwuMDU5LjA4OWMuMDA4LjAxNi4wMTYuMDMyLjAyMy4wNDhzLjAxMy4wMzMuMDE4LjA1LjAwOS4wMzQuMDEzLjA1MWEuNS41LDAsMCwxLC4wMDguMDUzWm0uNzI3LjA1M2EuNTQzLjU0MywwLDAsMSwuNTQzLS41NDNoMGEuNTQzLjU0MywwLDEsMS0uNTQ0LjU0M1ptMS44MTQuMDUzYS41MzMuNTMzLDAsMCwxLDAtLjA1NC41MjUuNTI1LDAsMCwxLDAtLjA1M2MwLS4wMTgsMC0uMDM2LjAwOC0uMDUzYS41MS41MSwwLDAsMSwuMDEzLS4wNTEuNDgzLjQ4MywwLDAsMSwuMDE4LS4wNWMuMDA3LS4wMTYuMDE0LS4wMzMuMDIyLS4wNDhhLjYuNiwwLDAsMSwuMDU5LS4wODljLjAxMS0uMDE0LjAyNC0uMDI3LjAzNi0uMDM5YS41MzEuNTMxLDAsMCwxLC4wNC0uMDM2LjQ2OC40NjgsMCwwLDEsLjA0My0uMDMybC4wNDYtLjAyNy4wNDgtLjAyM2EuNTE1LjUxNSwwLDAsMSwuMDUtLjAxOGwuMDUyLS4wMTNhLjUzMi41MzIsMCwwLDEsLjE1OS0uMDA4bC4wNTMuMDA4YS40ODMuNDgzLDAsMCwxLC4wNTEuMDEzbC4wNS4wMThhLjQ4Mi40ODIsMCwwLDEsLjA0OC4wMjMuNTI3LjUyNywwLDAsMSwuMDQ2LjAyN2MuMDE0LjAxLjAyOS4wMjEuMDQzLjAzMmEuNDY0LjQ2NCwwLDAsMSwuMDM5LjAzNmMuMDEzLjAxMi4wMjUuMDI2LjAzNi4wMzlzLjAyMi4wMjguMDMyLjA0M2EuNTIuNTIsMCwwLDEsLjAyNy4wNDZjLjAwOC4wMTYuMDE2LjAzMi4wMjMuMDQ4YS40ODIuNDgyLDAsMCwxLC4wMTguMDUuNDI4LjQyOCwwLDAsMSwuMDEzLjA1MS40MzMuNDMzLDAsMCwxLC4wMDguMDUzLjUyNC41MjQsMCwwLDEsMCwuMDUzLjUzMS41MzEsMCwwLDEsMCwuMDU0LjQzOS40MzksMCwwLDEtLjAwOC4wNTMuNDMzLjQzMywwLDAsMS0uMDEzLjA1Mi41MTYuNTE2LDAsMCwxLS4wMTguMDVjLS4wMDcuMDE2LS4wMTQuMDMzLS4wMjMuMDQ4cy0uMDE3LjAzMS0uMDI3LjA0Ni0uMDIxLjAyOS0uMDMyLjA0My0uMDI0LjAyNy0uMDM2LjA0YS40NjQuNDY0LDAsMCwxLS4wMzkuMDM2Yy0uMDE0LjAxMS0uMDI4LjAyMi0uMDQzLjAzMmEuNTMxLjUzMSwwLDAsMS0uMDQ2LjAyOC40NzguNDc4LDAsMCwxLS4wNDguMDIyLjQ5LjQ5LDAsMCwxLS4wNS4wMThsLS4wNTEuMDEzYS41MjQuNTI0LDAsMCwxLS4xMDYuMDExbC0uMDU0LDAtLjA1My0uMDA4LS4wNTItLjAxMy0uMDUtLjAxOGEuNDg1LjQ4NSwwLDAsMS0uMDQ4LS4wMjJjLS4wMTYtLjAwOC0uMDMxLS4wMTgtLjA0Ni0uMDI4YS40NjUuNDY1LDAsMCwxLS4wNDMtLjAzMi41MzMuNTMzLDAsMCwxLS4wNC0uMDM2Yy0uMDEyLS4wMTMtLjAyNS0uMDI2LS4wMzYtLjA0YS40NjQuNDY0LDAsMCwxLS4wMzItLjA0M2MtLjAxLS4wMTUtLjAxOS0uMDMtLjAyOC0uMDQ2QS40ODQuNDg0LDAsMCwxLDE4LjMsNTguM2EuNTE3LjUxNywwLDAsMS0uMDE4LS4wNWMtLjAwNS0uMDE3LS4wMDktLjAzNC0uMDEzLS4wNTJhLjUyNi41MjYsMCwwLDEtLjAwOC0uMDUzWiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLTguMDAyIC01MS4xMzYpIiBmaWxsPSIjNDQ0Ii8+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">Contact Us</label>\r\n                        </div>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n                <a [routerLink]=\"['/login', marketId]\" routerLinkActive=\"active\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left pl-4 bgActive py-3\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNi40MzMiIGhlaWdodD0iMTYuNDMzIiB2aWV3Qm94PSIwIDAgMTYuNDMzIDE2LjQzMyI+CiAgPGcgaWQ9ImxvZ2luIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMiAtMTk1KSI+CiAgICA8cGF0aCBpZD0iUGF0aF8yNTE1IiBkYXRhLW5hbWU9IlBhdGggMjUxNSIgZD0iTTUuNzkyLDIwMC42ODhWMTk2LjlhLjYzMi42MzIsMCwwLDEsLjYzMi0uNjMySDE2LjUzN2EuNjMyLjYzMiwwLDAsMSwuNjMyLjYzMnYxMi42NDFhLjYzMi42MzIsMCwwLDEtLjYzMi42MzJINi40MjRhLjYzMi42MzIsMCwwLDEtLjYzMi0uNjMydi0zLjc5MmEuNjMyLjYzMiwwLDEsMC0xLjI2NCwwdjMuNzkyYTEuOSwxLjksMCwwLDAsMS45LDEuOUgxNi41MzdhMS45LDEuOSwwLDAsMCwxLjktMS45VjE5Ni45YTEuOSwxLjksMCwwLDAtMS45LTEuOUg2LjQyNGExLjksMS45LDAsMCwwLTEuOSwxLjl2My43OTJhLjYzMi42MzIsMCwxLDAsMS4yNjQsMFptMi45LDEuOUgyLjYzMmEuNjMyLjYzMiwwLDAsMCwwLDEuMjY0SDguNjkxTDcuMjQyLDIwNS4zYS42MzIuNjMyLDAsMCwwLC44OTQuODk0bDIuNTI4LTIuNTI4YS42MzEuNjMxLDAsMCwwLDAtLjg5NGwtMi41MjgtMi41MjhhLjYzMi42MzIsMCwxLDAtLjg5NC44OTRaIiBmaWxsPSIjNDQ0IiBmaWxsLXJ1bGU9ImV2ZW5vZGQiLz4KICA8L2c+Cjwvc3ZnPgo=\"\r\n                                class=\"img-fluid\">\r\n                            &nbsp;&nbsp;<label class=\"d-inline menu\">{{vendorTerm}} Logout</label>\r\n                        </div>\r\n                    </div>\r\n                </a>\r\n            </div>\r\n          </div>\r\n      </div>\r\n</div>\r\n","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ChangeDetectorRef } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Params, Router } from '@angular/router';\r\nimport { MarketInfoService } from '../services/MarketInfoService.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { UserService } from '../services/User.service';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n  selector: 'app-rental-menu',\r\n  templateUrl: './rental-menu.component.html',\r\n  styleUrls: ['./rental-menu.component.scss']\r\n})\r\nexport class RentalMenuComponent implements OnInit{\r\n  @Input() IsVendorLogin;\r\n  marketId;\r\n  imageUrl= \"\";\r\n  vendorId=0;\r\n  private subscriptions: Subscription[] = [];\r\n  allowRegisterVendor = false;\r\n  allowNewVendorBooking = false;\r\n  activeRoute: string = '';\r\n  vendorTerm = \"Vendor\";\r\n \r\n  constructor(\r\n    private route: ActivatedRoute,\r\n    private userService:UserService,\r\n    private router:Router,\r\n    private marketInfoService:MarketInfoService,) {}\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n    });\r\n    this.getWebRentalSetting();\r\n    this.getMarketLogo();  \r\n    this.router.events.subscribe((event) => {\r\n      if (event instanceof NavigationEnd) {\r\n        this.activeRoute = this.router.url;\r\n      }\r\n    }); \r\n  }  \r\n\r\n  getMarketLogo() {\r\n    const timestamp = new Date().getTime();\r\n    const sub = this.marketInfoService.getMarketLogo(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.imageUrl = res.MarketLogoBlobURL + `?timestamp=${timestamp}`;\r\n      }\r\n      else {\r\n        this.imageUrl = '../../../assets/images/NoImage.jpg'\r\n      }\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWebRentalSetting(){\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.allowRegisterVendor =res.VendorRegistration;\r\n        this.allowNewVendorBooking = res.AllowNewVendorBooking;\r\n        this.vendorTerm = res.WebRentalVendorTermText;       \r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  isActiveRoute(route: string): boolean {\r\n    return this.router.url.includes(route);\r\n  }\r\n\r\n  changeRentalMenu(pagename) {\r\n    var token = localStorage.getItem('token');\r\n    if (token && this.router.url.includes(\"rent-online\")) {\r\n      if(pagename == \"login\"){\r\n        return false;\r\n      }\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Navigating to other page will log you out from the application. Are you sure you want to logout?`,\r\n        icon: 'warning',\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          this.userService.clearToken();\r\n          if (pagename == \"newven-online\") {\r\n            this.router.navigate(['/' + pagename, this.marketId, this.vendorId]);\r\n          } else\r\n            this.router.navigate(['/' + pagename, this.marketId]);\r\n        }\r\n        else {\r\n          return false;\r\n        }\r\n      })\r\n    }\r\n    else {\r\n      if (pagename == \"newven-online\") {\r\n        this.router.navigate(['/' + pagename, this.marketId, this.vendorId]);\r\n      } else\r\n        this.router.navigate(['/' + pagename, this.marketId]);\r\n    }\r\n  }\r\n\r\n  checkVendorLoggedIn() {\r\n    var token = localStorage.getItem('token');\r\n    if (token && this.router.url.includes(\"rent-online\"))\r\n      return true;\r\n    else\r\n      return false;\r\n  }\r\n\r\n  logout() {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to logout?`,\r\n      icon: 'warning',\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        this.userService.clearToken();\r\n        var url = '/login/' + this.marketId;\r\n        this.router.navigate([url]);\r\n      } else {\r\n        return;\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div class=\"container-fluid\">\r\n    <div class=\"row\">\r\n        <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n            <app-rental-menu></app-rental-menu>\r\n        </div>\r\n        <div class=\"col-lg-10 col-xl-10 bgMainSection text-left\">\r\n            <div class=\"row\">\r\n                <div class=\"col-5 py-2 bgHead\">\r\n                    <div class=\"container mainContainer\">\r\n                        <label class=\"txtHead\">Dashboard</label>\r\n                    </div>\r\n                </div>\r\n                <div class=\"col-7 text-right py-2 bgHead\">\r\n                    <div class=\"container mainContainer\">\r\n                        <label class=\"txtHead\">{{marketName}}</label>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"container mainContainer\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-1 col-xl-1 mt-2\">\r\n                        <img src=\"./assets/images/availableBooths.png\" class=\"img-fluid\">\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mt-2\">\r\n                        <p class=\"mt-2 message\" style=\"white-space: pre-wrap;\" [innerHTML]=\"message1\">\r\n                        </p> <br />\r\n                        <p class=\"mt-2 message\" style=\"white-space: pre-wrap;\" [innerHTML]=\"message2\">\r\n                        </p> <br />\r\n                        <p class=\"mt-2 message\" style=\"white-space: pre-wrap;\" [innerHTML]=\"message3\">\r\n                        </p> <br />\r\n                        <p class=\"mt-2 message\" style=\"white-space: pre-wrap;\" [innerHTML]=\"message4\">\r\n                        </p> <br />\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-6 col-xl-6 mt-4\">\r\n                        <div id=\"carouselExampleIndicators\" class=\"carousel slide\" data-ride=\"carousel\">\r\n                            <ol class=\"carousel-indicators\">\r\n                              <li data-target=\"#carouselExampleIndicators\" *ngIf=\"imageURL1\" data-slide-to=\"0\" [class.active]=\"getFirstVisibleIndex() === 0\"></li>\r\n                              <li data-target=\"#carouselExampleIndicators\" *ngIf=\"imageURL2\" data-slide-to=\"1\" [class.active]=\"getFirstVisibleIndex() === 1\"></li>\r\n                              <li data-target=\"#carouselExampleIndicators\" *ngIf=\"imageURL3\" data-slide-to=\"2\" [class.active]=\"getFirstVisibleIndex() === 2\"></li>\r\n                            </ol>\r\n                            <div class=\"carousel-inner\" style=\"background: black;\">\r\n                              <div class=\"carousel-item\" *ngIf=\"imageURL1\" [class.active]=\"getFirstVisibleIndex() === 0\">\r\n                                <img [src]=\"imageURL1\" class=\"img-fluid imgCarousel\" style=\"width: 100%;\">\r\n                              </div>\r\n                              <div class=\"carousel-item\" *ngIf=\"imageURL2\" [class.active]=\"getFirstVisibleIndex() === 1\">\r\n                                <img [src]=\"imageURL2\" class=\"img-fluid imgCarousel\" style=\"width: 100%;\">\r\n                              </div>\r\n                              <div class=\"carousel-item\"  *ngIf=\"imageURL3\" [class.active]=\"getFirstVisibleIndex() === 2\">\r\n                                <img [src]=\"imageURL3\" class=\"img-fluid imgCarousel\" style=\"width: 100%;\">\r\n                              </div>\r\n                            </div>\r\n                            <a class=\"carousel-control-prev\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"prev\">\r\n                              <span class=\"carousel-control-prev-icon\" aria-hidden=\"true\"></span>\r\n                              <span class=\"sr-only\">Previous</span>\r\n                            </a>\r\n                            <a class=\"carousel-control-next\" href=\"#carouselExampleIndicators\" role=\"button\" data-slide=\"next\">\r\n                              <span class=\"carousel-control-next-icon\" aria-hidden=\"true\"></span>\r\n                              <span class=\"sr-only\">Next</span>\r\n                            </a>\r\n                          </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-1 col-xl-1 mt-3 mb-3\">\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mt-3 mb-3\">\r\n                        <button [routerLink]=\"['/map', marketId]\" class=\"btn btn-primary\">View Market Map</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\n\r\n@Component({\r\n  selector: 'app-home',\r\n  templateUrl: './home.component.html',\r\n  styleUrls: ['./home.component.scss']\r\n})\r\n\r\nexport class HomeComponent implements OnInit{\r\n  marketId;\r\n  marketName = \"\";\r\n  message1 = \"\";\r\n  message2 = \"\";\r\n  message3 = \"\";\r\n  message4 = \"\";\r\n  imageURL1 = \"\";\r\n  imageURL2 = \"\";\r\n  imageURL3 = \"\";\r\n  vendorTerm = \"Vendor\";\r\n  private subscriptions: Subscription[] = [];\r\n  public loaderIcon: Promise<boolean>;  \r\n  constructor(\r\n    private route: ActivatedRoute,\r\n    private marketInfoService: MarketInfoService) {}\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.getMarketDetails();\r\n      this.getWebRentalSettingDashboardSetting();\r\n    });\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWebRentalSettingDashboardSetting(){\r\n    this.subscriptions.push(this.marketInfoService.getWebRentalSettingDashboardSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n      const timestamp = new Date().getTime();\r\n       this.message1 = res.DashboardMessage1;\r\n       this.message2 = res.DashboardMessage2;\r\n       this.message3 = res.DashboardMessage3;\r\n       this.message4 = res.DashboardMessage4;\r\n       this.imageURL1 = res.DashboardImageURL1 ? res.DashboardImageURL1 + `?timestamp=${timestamp}` : \"\";\r\n       this.imageURL2 = res.DashboardImageURL2 ? res.DashboardImageURL2 + `?timestamp=${timestamp}` : \"\";\r\n       this.imageURL3 = res.DashboardImageURL3 ? res.DashboardImageURL3 + `?timestamp=${timestamp}` : \"\";\r\n       this.vendorTerm = res.VendorTerm;\r\n      }\r\n    }, err => {\r\n    }));\r\n  }\r\n\r\n  getFirstVisibleIndex(): number {\r\n    if (this.imageURL1) {\r\n      return 0;\r\n    } else if (this.imageURL2) {\r\n      return 1;\r\n    } else if (this.imageURL3) {\r\n      return 2;\r\n    }\r\n    return -1; // No images available\r\n  }\r\n}\r\n","export enum AllowNewBookings {\r\n    'All Vendors' = 1,\r\n    'New Vendors' = 2,\r\n    'Existing Vendors' = 3\r\n}\r\n\r\nexport enum RentalSettings {\r\n    'MaxBookingMonths' = 24,\r\n    'MaxBookingWeeks' = 52,\r\n    'MaxBookingDaily' = 120,\r\n    'SelectedDay' = 9\r\n}\r\n\r\nexport enum RentalTypes {\r\n    'Daily' = 1,\r\n    'Monthly' = 2,\r\n    'Weekly' = 3,\r\n    'CombinedMonthly' = 4,\r\n    'CombinedWeekly' = 5,\r\n    'QuickDaily' = 6,\r\n    'Event' = 7\r\n}\r\n\r\nexport enum RentalTypesDescription {\r\n    'Daily' = 'Daily',\r\n    'Monthly' = 'Monthly',\r\n    'Weekly' = 'Weekly',\r\n    'CombinedMonthly' = 'Combined Monthly',\r\n    'CombinedWeekly' = 'Combined Weekly',\r\n    'QuickDaily' = 'Quick Daily',\r\n    'Event' = 'Event'\r\n}\r\n\r\nexport enum BoothTerm {\r\n    'Space' = 0,\r\n    'Booth' = 1\r\n}\r\n\r\nexport enum EPresetValue {\r\n    \"Daily\" = 1,\r\n    \"WeekToDate\" = 2,\r\n    \"MonthToDate\" = 3,\r\n    \"YearToDate\" = 4,\r\n    \"Custom\" = 5,\r\n}\r\n\r\nexport enum EOperationalReports {\r\n    \"OutstandingBalanceReport\" = 38,\r\n    \"BoothPriceListing\" = 51,\r\n    \"OtherItemPriceListing\" = 39,\r\n    \"TransactionJournal\" = 43,\r\n    \"AvailableBooths\" = 42,\r\n    \"VendorReservedBooths\" = 40,\r\n    \"VendorBalancesReport\" = 41,\r\n    \"FinancialAudit\" = 44,\r\n    \"YTDPaymentsReport\" = 84,\r\n    \"RevenueByBooths\" = 85,\r\n    \"VendorBoothsReport\"=83,\r\n    \"ProformaJournal\"=100\r\n}\r\n\r\nexport enum EManagementReports {\r\n\r\n    \"ManagementSummaryReport\" = 52,\r\n    \"FutureRentals\" = 50\r\n}\r\n\r\nexport enum EVendorReports {\r\n\r\n    \"VendorCheckIn\" = 46,\r\n    \"VendorDepositBalance\" = 47,\r\n    \"AbsenteeVendors\" = 45,\r\n    \"VendorBookingReport\" = 48,\r\n    \"VendorDiscountPlan\" = 104\r\n}\r\n\r\nexport enum EEdgeExpressECIType {\r\n    \"Moto\" = 1,\r\n    \"Recurring\" = 2\r\n}\r\n\r\nexport enum EOpenEdgeResponseCode {\r\n    \"Approval\" = \"000\",\r\n    \"ZeroDollarAuthApproval\" = \"032\",\r\n    \"ImproperFieldData\" = 811,\r\n    \"TransactionDoesNotExist\" = 814,\r\n    \"TransactionAlreadyVoided\" = 815\r\n}\r\n\r\nexport enum EPaymentModes {\r\n    \"Cash\" = 1,\r\n    \"Check\" = 2,\r\n    \"CreditCard\" = 3,\r\n    \"DirectDebitEFT\" = 4,\r\n    \"HostedPage\" = 5,\r\n    \"ACH\" = 6,\r\n    \"Gift_Card\" = 7,\r\n    \"ManualAuthorization\" = 8,\r\n    \"CardOnfile\" = 9,\r\n    \"ACHOnFile\" = 10,\r\n    \"ACHManualAuthorization\" = 11\r\n}\r\n\r\nexport enum EPaymentTransactionType {\r\n    \"Processed\" = 357,\r\n    \"Declined\" = 358,\r\n    \"Reversal_Refund\" = 359\r\n}\r\n\r\nexport enum ECreditCards {\r\n    \"American_Express\" = \"1\",\r\n    \"Visa\" = \"2\",\r\n    \"Master_Card\" = \"3\",\r\n    \"Discover\" = \"4\",\r\n    \"Diners\" = \"5\",\r\n    \"JCB\" = \"6\"\r\n}\r\n\r\nexport enum EPaymentGateway {\r\n    \"OpenEdgeExpress\" = 209,\r\n}\r\n\r\nexport enum EEdgeExpressResultCode {\r\n    \"Success\" = 0,\r\n    \"Canceled\" = 3,\r\n    \"Fail\" = 4,\r\n    \"NoDeviceConfigured\" = 5,\r\n    \"DeviceNotConfigured\" = 6,\r\n    \"DeviceInitError\" = 7,\r\n    \"Declined\" = 12,\r\n    \"Error_Reading_Chip\" = 15\r\n}\r\n\r\nexport enum EOpenEdgeSessionStates {\r\n    \"NotFound\" = 0,\r\n    \"Initializing\" = 1,\r\n    \"Processing\" = 2,\r\n    \"Finalizing\" = 3,\r\n    \"Canceling\" = 4,\r\n    \"Completed\" = 5,\r\n    \"PromptingForCard\" = 6,\r\n    \"PromptingForCardRemoval\" = 7,\r\n    \"ChipErrorPromptingForCardRemoval\" = 8\r\n\r\n}\r\n\r\nexport enum MarketInfoAndSettingsFunctionID {\r\n    \"MarketInfo\" = 1,\r\n    \"Setup\" = 2,\r\n    \"VendorSettings\" = 3,\r\n    \"PrinterSettings\" = 4,\r\n    \"LayoutParts\" = 14,\r\n    \"BoothTypes\" = 15,\r\n    \"Layout\" = 16,\r\n    \"RevenueCategory\" = 17,\r\n    \"ProductCategory\" = 18,\r\n    \"Product\" = 19,\r\n    \"OtherCharges\" = 20,\r\n    \"OnlinePaymentSettings\" = 45,\r\n    \"EmailSettings\" = 46,\r\n    \"MarketCreditCards\" = 50,\r\n    \"DiscountPlan\" = 55,\r\n    \"CustomModificationSetting\" = 56,\r\n    \"OnlineWebRentalSettings\" = 57,\r\n    \"News\"=59\r\n}\r\n\r\nexport enum MaintainanceFunctionID {\r\n    \"ProductCategory\" = 5,\r\n    \"Product\" = 6,\r\n    \"RevenueCategory\" = 7,\r\n    \"OtherCharges\" = 8,\r\n    \"VendorTypes\" = 9,\r\n    \"EmailTemplates\" = 10\r\n}\r\n\r\nexport enum SecurityFunctionID {\r\n    \"UserGroup\" = 11,\r\n    \"User\" = 12\r\n}\r\n\r\nexport enum AccountingFunctionID {\r\n    \"CreditCards\" = 13\r\n}\r\n\r\nexport enum DashboardFunctionID {\r\n    \"Dashboard\" = 21\r\n}\r\n\r\nexport enum OperationsFunctionID {\r\n    \"Vendor\" = 22,\r\n    \"AutomaticRentRenewal\" = 23,\r\n    \"QuickDailyRental\" = 24,\r\n    \"VoidTransactions\" = 25,\r\n    \"BoothHistory\" = 26,\r\n    \"CheckIn\" = 27,\r\n    \"MakeAvailable\" = 28,\r\n    \"DepositSlip\" = 29,\r\n    \"ViewLayout\" = 47,\r\n    \"DeleteRental\" = 48,\r\n    \"MarkAbsentee\" = 49,\r\n    \"ProformaInvoice\" = 54\r\n}\r\n\r\nexport enum DiscountType {\r\n    \"FixedAmount\" = \"Fixed Amount\",\r\n    \"Percentage\" = \"Percentage\"\r\n}\r\n\r\nexport enum ListOfValues {\r\n    \"Vendor\" = \"Vendor\",\r\n    \"Customer\" = \"Customer\",\r\n    \"Seller\" = \"Seller\"\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\nimport { ICountry, IStates } from '../Shared/models/GeneralModel';\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\n\r\nexport class GeneralService {\r\n    private baseURL: string;\r\n    constructor(private http: HttpClient,\r\n    ) {\r\n        this.baseURL = environment.apiBaseUrl;\r\n    }\r\n\r\n    public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n    getCountries(): Observable<ICountry[]> {\r\n        return this.http.get<ICountry[]>(\r\n            `${this.baseURL}/General/GetCountries`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const Countries = res.body as ICountry[];\r\n                    return Countries;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getUSStates(): Observable<IStates[]> {\r\n        return this.http.get<IStates[]>(\r\n            `${this.baseURL}/General/GetUSStates`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const states = res.body as IStates[];\r\n                    return states;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetVendorTypes(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/admin/VendorType/GetVendorTypes/${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res.body as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n    GetSecurityQuestion(): Observable<any> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/General/GetVendorLoginSecurityQuestion`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getWebrentalMarketRules(marketId): Observable<any> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/General/GetWebrentalMarketRules?marketId=${marketId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res.body as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    private handleError(error: HttpErrorResponse) {\r\n        console.error('server error:', error);\r\n        if (error.error instanceof Error) {\r\n            const errMessage = error.error.message;\r\n            return throwError(errMessage);\r\n        }\r\n        return throwError(error || 'Node.js server error');\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\nimport { IVendorInfo } from '../Shared/models/VendorModel';\r\nimport { MarketInfoService } from './MarketInfoService.service';\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\n\r\nexport class VendorService {\r\n    private baseURL: string;\r\n    constructor(private http: HttpClient,private marketInfoService: MarketInfoService\r\n    ) {\r\n        this.baseURL = environment.apiBaseUrl;\r\n    }\r\n\r\n    private vendorIdSubject = new BehaviorSubject<number | 0>(0);\r\n    vendorId$ = this.vendorIdSubject.asObservable();\r\n\r\n    setVendorId(id: number) {\r\n        this.vendorIdSubject.next(id);\r\n    }\r\n\r\n    \r\n    getVendorId() {\r\n        return this.vendorIdSubject.asObservable();\r\n    }\r\n\r\n    public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n    GetVendorTypes(marketId): Observable<any> {\r\n        const params = new HttpParams().set('marketId', marketId.toString());\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/General/GetVendorTypes`,\r\n            { observe: 'response', params, headers: this.options.headers })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res.body as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    SaveVendor(Vendor: IVendorInfo): Observable<any> {\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/AddVendor`;\r\n        return this.http.post<any>(url, Vendor, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any[];\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    RegisterVendorInfoValidation(Vendor: IVendorInfo): Observable<any> {\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/RegisterVendorInfoValidation`;\r\n        return this.http.post<any>(url, Vendor, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any[];\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetVendorById(vendorId: number,marketId): Observable<any> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/Vendor/GetVendorInfoById?vendorId=${vendorId}&marketId=${marketId}`,\r\n   \r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getMarketVendorSettings(id: number,marketId): Observable<boolean> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/Vendor/GetMarketVendorSetting?vendorId=${id}&marketId=${marketId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const rentalSettings = res as any;\r\n                    return rentalSettings;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getVendorBusinessLicenseSettings(vendorId, marketId): Observable<boolean> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/Vendor/GetVendorBusinessLicenseSettings?vendorId=${vendorId}&marketId=${marketId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    return res.body as any;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    SaveVendorLoginDetail(VendorLoginDetail: any): Observable<any> {\r\n        var marketId = null;\r\n        this.marketInfoService.getMarketId().subscribe(mrktId => {\r\n            marketId = mrktId;\r\n        });\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/SaveVendorLoginDetails/${marketId}`;\r\n        return this.http.post<any>(url, VendorLoginDetail, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any[];\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    VendorLoginDetailsValidation(VendorLoginDetail: any): Observable<any> {\r\n        var marketId = null;\r\n        this.marketInfoService.getMarketId().subscribe(mrktId => {\r\n            marketId = mrktId;\r\n        });\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/VendorLoginDetailsValidation/${marketId}`;\r\n        return this.http.post<any>(url, VendorLoginDetail, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any[];\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    SendRegistrationEmail(vendorId: number): Observable<any> {\r\n        var marketId = null;\r\n        this.marketInfoService.getMarketId().subscribe(mrktId => {\r\n            marketId = mrktId;\r\n        });\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/Vendor/SendRegistrationEmail?vendorId=${vendorId}&marketId=${marketId}`,\r\n\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetDiscountPlan(vendorId,marketId): Observable<any> {\r\n        return this.http.get<any>(\r\n            `${this.baseURL}/Vendor/GetDiscountPlan?vendorId=${vendorId}&marketId=${marketId}`,\r\n\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res.body as any;\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    private handleError(error: HttpErrorResponse) {\r\n        console.error('server error:', error);\r\n        if (error.error instanceof Error) {\r\n            const errMessage = error.error.message;\r\n            return throwError(errMessage);\r\n        }\r\n        return throwError(error || 'Node.js server error');\r\n    }    \r\n   \r\n    getCountries(): Observable<any[]> {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/General/GetCountries`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const Countries = res.body as any[];\r\n                    return Countries;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n   \r\n    getUSStates(): Observable<any[]> {\r\n        return this.http.get<any[]>(\r\n          `${this.baseURL}/General/GetUSStates`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const states = res.body as any[];\r\n                    return states;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n   \r\n    getVendorLoginSecurityQuestion(): Observable<any[]> {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/General/GetVendorLoginSecurityQuestion`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const states = res.body as any[];\r\n                    return states;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getVendorLoginInfo(VendorId: number, marketId): Observable<any> {\r\n        return this.http.get<any>(\r\n          `${this.baseURL}/Vendor/GetVendorLoginInfoBT?vendorId=${VendorId}&marketId=${marketId}`,\r\n          { observe: 'response' })\r\n          .pipe(\r\n            map(res => {\r\n              const result = res.body as any;\r\n              return result;\r\n            }),\r\n            catchError(this.handleError)\r\n          );\r\n      }\r\n   \r\n    UpdateVendor(Vendor): Observable<any> {\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/UpdateVendorInfoForWebRental`;\r\n        return this.http.post<any>(url, Vendor, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any[];\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    validatePromoCode(promoCodeDiscountModel): Observable<any> {\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        const url = `${this.baseURL}/Vendor/GetPromoCodeDiscount`;\r\n        return this.http.post<any>(url, promoCodeDiscountModel, options)\r\n            .pipe(\r\n                map(res => {\r\n                    const response = res as any;\r\n                    return response;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { ECreditCards } from '../Shared/enum';\r\nimport { MarketInfoService } from './MarketInfoService.service';\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\n\r\nexport class PaymentService {\r\n    private baseURL: string;\r\n    constructor(private http: HttpClient,private marketInfoService: MarketInfoService) {\r\n        this.baseURL = environment.apiBaseUrl;\r\n    }\r\n\r\n    public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    getCCCredentials(marketId) {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/General/GetCreditCardSettingForMarket/${marketId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    return res.body as any;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getRCMService(url, request): Observable<any> {\r\n        //const options = { headers: new HttpHeaders({ 'Content-Type': 'application/xml' ,  responseType: 'text/xml'}) };\r\n        return this.http.get<any>(\r\n            `${url}${request}`)\r\n            .pipe(\r\n                map(res => {\r\n                    const responseRCM = res as any;\r\n                    return responseRCM;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetCNPCreditVoid(credential, transId, amount,paymentReturnType): Observable<any> {\r\n        const returnReq = {\r\n            Url: credential.QueryPaymentStatusURL,\r\n            XmlDoc: \"<REQUEST>\" +\r\n                \"<XWEBID>\" + credential.XWEBID + \"</XWEBID>\" +\r\n                \"<XWEBTERMINALID>\" + credential.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n                \"<XWEBAUTHKEY>\" + credential.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n                \"<TRANSACTIONTYPE>\" + paymentReturnType +\"</TRANSACTIONTYPE>\" +\r\n                \"<AMOUNT>\" + amount + \"</AMOUNT>\" +\r\n                \"<TRANSACTIONID>\" + transId + \"</TRANSACTIONID>\" +\r\n                \"<RECEIPTFORMAT>TEXT</RECEIPTFORMAT>\" +\r\n                \"</REQUEST>\"\r\n        }\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        return this.http.post<any>(\r\n            `${this.baseURL}/Payment/GetCNPResponseURL`, returnReq, options)\r\n            .pipe(\r\n                map(res => {\r\n                    return res;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetPaymentStatus(credential, transId, orderId): Observable<any> {\r\n        const returnReq = {\r\n            Url: credential.QueryPaymentStatusURL,\r\n            XmlDoc: \"<REQUEST>\" +\r\n                \"<XWEBID>\" + credential.XWEBID + \"</XWEBID>\" +\r\n                \"<XWEBTERMINALID>\" + credential.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n                \"<XWEBAUTHKEY>\" + credential.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n                \"<TRANSACTIONTYPE>QUERYPAYMENT</TRANSACTIONTYPE>\" +\r\n                \"<ORDERID>\" + orderId + \"</ORDERID>\" +\r\n                \"</REQUEST>\"\r\n        }\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        return this.http.post<any>(\r\n            `${this.baseURL}/Payment/GetCNPResponseURL`, returnReq, options)\r\n            .pipe(\r\n                map(res => {\r\n                    return res;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    openEdgeCardType(cType) {\r\n        if (cType) {\r\n          cType = cType.replace(/\\s/g, '');\r\n          if (cType.toLowerCase() == 'americanexpress') {\r\n            return ECreditCards.American_Express;\r\n          } else if (cType.toLowerCase() == 'visa') {\r\n            return ECreditCards.Visa;\r\n          } else if (cType.toLowerCase() == 'mastercard') {\r\n            return ECreditCards.Master_Card;\r\n          } else if (cType.toLowerCase() == 'discover') {\r\n            return ECreditCards.Discover;\r\n          } else if (cType.toLowerCase() == 'diners') {\r\n            return ECreditCards.Diners;\r\n          } else if (cType.toLowerCase() == 'jcb') {\r\n            return ECreditCards.JCB;\r\n          } else {\r\n            return ECreditCards.Visa;\r\n          }\r\n        } else {\r\n          return ECreditCards.Visa;\r\n        }\r\n      }\r\n\r\n    saveVerifoneUnSaved(model): Observable<any> { // For creating Dummy record on initally CC Transaction and get OrderID, Then after CCT\r\n        var marketId =null;\r\n        this.marketInfoService.getMarketId().subscribe(marketId1 => {\r\n            marketId = marketId1;\r\n        });\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        let url = `${this.baseURL}/Payment/SaveVerifoneUnSaved?marketId=${marketId}`;\r\n        return this.http.post<any>(url, model, options)\r\n            .pipe(\r\n                map(res => {\r\n                    return res;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetVerifoneUnSavedDate(verifoneRecordId): Observable<string> {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/Payment/GetVerifoneUnSavedDate?VerifoneRecordId=${verifoneRecordId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    return res.body as any;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetVerifoneUnSavedCompleteData(verifoneRecordId): Observable<string> {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/Payment/GetVerifoneUnSavedCompleteData?VerifoneRecordId=${verifoneRecordId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    return res.body as any;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n\r\n    replaceXMLEntity(stringValue) {\r\n        if(stringValue && stringValue.trim().length) {\r\n            if(stringValue.includes(\"&\")) {\r\n                stringValue = stringValue.replace(/[&,]/g, \"&amp;\");\r\n            }\r\n            if(stringValue.includes(\"<\")) {\r\n                stringValue = stringValue.replace(\"<\", \"&lt;\")\r\n            }\r\n            if(stringValue.includes(\">\")) {\r\n                stringValue = stringValue.replace(\">\", \"&gt;\")\r\n            }\r\n            if(stringValue.includes('\"')) {\r\n                stringValue = stringValue.replace('\"', \"&quot;\")\r\n            }\r\n            if(stringValue.includes(\"'\")) {\r\n                stringValue = stringValue.replace(\"'\", \"&apos;\")\r\n            }\r\n        }\r\n        return stringValue;\r\n    }\r\n\r\n    \r\n    getCNPService(rqsturl, request): Observable<any> {\r\n        const tempobj = {\r\n            Url: rqsturl,\r\n            XmlDoc: request\r\n        };\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        return this.http.post<any>(\r\n            `${this.baseURL}/Payment/GetCNPResponseURL`, tempobj, options)\r\n            .pipe(\r\n                map(res => {\r\n                    return res;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getCNPResponse(credentials, orderId): Observable<any> {\r\n        const tempobj = {\r\n            Url: credentials.QueryPaymentStatusURL,\r\n            XmlDoc: \"<REQUEST>\" +\r\n                \"<XWEBID>\" + credentials.XWEBID + \"</XWEBID>\" +\r\n                \"<XWEBTERMINALID>\" + credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n                \"<XWEBAUTHKEY>\" + credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n                \"<TRANSACTIONTYPE>QUERYPAYMENT</TRANSACTIONTYPE> <ORDERID>\" + orderId + \"</ORDERID>\" +\r\n                \"<RECEIPTFORMAT>TEXT</RECEIPTFORMAT>\" +\r\n                \"</REQUEST> \"\r\n        };\r\n        const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n        return this.http.post<any>(\r\n            `${this.baseURL}/Payment/GetCNPResponseURL`, tempobj, options)\r\n            .pipe(\r\n                map(res => {\r\n                    return res;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    getRCMServiceStatus(sessionId, orderId, isCancelRequest): Observable<any> {\r\n        let url = '';\r\n        if (isCancelRequest) {\r\n            url = 'https://localsystem.paygateway.com:21113/RcmService.svc/Update?updateParameters=%2FCancelTransaction%20%2FSessionId%3A' + `${sessionId}`;\r\n        } else {\r\n            url = 'https://localsystem.paygateway.com:21113/RcmService.svc/status?SessionId=' + `${orderId}`;\r\n        }\r\n\r\n        return this.http.get<any>(\r\n            `${url}`)\r\n            .pipe(\r\n                map(res => {\r\n                    const responseRCM = res as any;\r\n                    return responseRCM;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    GetTransactionVerifoneOGPayment(TransId): Observable<string> {\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/AccountReceipt/GetTransactionVerifoneOGPayment?transId=${TransId}`,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    return res.body as any;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n    private handleError(error: HttpErrorResponse) {\r\n        console.error('server error:', error);\r\n        if (error.error instanceof Error) {\r\n            const errMessage = error.error.message;\r\n            // this.appinsights.logEvent(errMessage);\r\n            return throwError(errMessage);\r\n        }\r\n        return throwError(error || 'Node.js server error');\r\n    }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\nimport { MarketInfoService } from './MarketInfoService.service';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\n\r\nexport class RentalService {\r\n  private baseURL: string;\r\n  constructor(private http: HttpClient, private marketInfoService: MarketInfoService\r\n  ) {\r\n    this.baseURL = environment.apiBaseUrl;\r\n  }\r\n\r\n  public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n  SaveDailyRental(rentalData): Observable<any> {\r\n    var marketId = null;\r\n    this.marketInfoService.getMarketId().subscribe(marketId1 => {\r\n      marketId = marketId1;\r\n    });\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/SaveDailyRentalTransactions?marketId=${marketId}`\r\n    return this.http.post<any>(url, rentalData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  SaveCombinedMonthlyRentalTransactions(rentalData): Observable<any> {\r\n    var marketId = null;\r\n    this.marketInfoService.getMarketId().subscribe(marketId1 => {\r\n      marketId = marketId1;\r\n    });\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/SaveCombinedMonthlyRentalTransactions?marketId=${marketId}`\r\n    return this.http.post<any>(url, rentalData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  SaveCombinedWeeklyRentalTransactions(rentalData): Observable<any> {\r\n    var marketId = null;\r\n    this.marketInfoService.getMarketId().subscribe(marketId1 => {\r\n      marketId = marketId1;\r\n    });\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/SaveCombinedWeeklyRentalTransactions?marketId=${marketId}`\r\n    return this.http.post<any>(url, rentalData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  SaveWeeklyRentalTransactions(rentalData): Observable<any> {\r\n    var marketId = null;\r\n    this.marketInfoService.getMarketId().subscribe(marketId1 => {\r\n      marketId = marketId1;\r\n    });\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/SaveWeeklyRentalTransactions?marketId=${marketId}`\r\n    return this.http.post<any>(url, rentalData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  checkRentalExits(marketId,rentalDateDetails): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/CheckRentalExits?marketId=${marketId}`;\r\n    return this.http.post<any>(url, rentalDateDetails, options)\r\n    .pipe(\r\n      map(res => {\r\n        const response = res as any;\r\n        return response;\r\n      }),\r\n      catchError(this.handleError)\r\n    );\r\n  }\r\n\r\n  getDailyRentals(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetDailyRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n\r\n  getDailyOtherRentals(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetDailyOtherRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  saveMonthlyRental(marketId,rentalData): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/SaveMonthlyRentalTransactions?marketId=${marketId}`\r\n    return this.http.post<any>(url, rentalData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getOtherRentalItems(marketId,rentalDate = ''): Observable<any[]> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetOtherRentalItems?marketId=${marketId}&rentalDate=${rentalDate}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getPromoCodeAppliedCountForVendor(marketId,VendorId,PromoCodeId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetPromoCodeAppliedCountForVendor?marketId=${marketId}&VendorId=${VendorId}&PromoCodeId=${PromoCodeId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getWIFIOtherItem(marketId,wIFIOtherItemId): Observable<any[]> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetWIFIOtherItem?marketId=${marketId}&WIFIOtherItemId=${wIFIOtherItemId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getOtherItemsRentalCharges(otherRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetOtherItemsRentalCharges`;\r\n    return this.http.post<any>(url, otherRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  generateTempRecordNumber(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GenerateTempRecordNumber?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  insertDataToTemp(tempData): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/InsertDataToTemp`;\r\n    return this.http.post<any>(url, tempData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  deleteFromTemp(tempData): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/DeleteFromTemp`;\r\n    return this.http.post<any>(url, tempData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  GetSelectedMonthEndDate(yearMonth,marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetSelectedMonthEndDate?marketId=${marketId}&yearMonth=${yearMonth}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const monthEndDate = res.body as any;\r\n          return monthEndDate;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  checkAbsenteeVendorForDate(marketId, boothNumber, selectedMarketDays): Observable<any> {\r\n    const url = `${this.baseURL}/Rental/CheckAbsenteeVendorForDate?marketId=${marketId}&BoothNumber=${boothNumber}`\r\n    return this.http.post<any>(url, selectedMarketDays, this.options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getVendorBalances(vendorId, marketId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetVendorBalances?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getVendorPaymentDetails(vendorId, marketId,accountReceiptId): Observable<boolean> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetVendorPaymentDetails?vendorId=${vendorId}&marketId=${marketId}&accountReceiptId=${accountReceiptId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  ComposeEmails(marketId,emailData): Observable<any[]> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/ComposeEmails?marketId=${marketId}`;\r\n    return this.http.post<any>(url, emailData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  SendWRPaymentConfirmationEMail(marketId,emailData): Observable<any[]> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Vendor/SendWRPaymentConfirmationEMail?marketId=${marketId}`;\r\n    return this.http.post<any>(url, emailData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  SendWRBookingConfirmationEMail(marketId,emailData): Observable<any[]> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Vendor/SendWRBookingConfirmationEMail?marketId=${marketId}`;\r\n    return this.http.post<any>(url, emailData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getRentalSettings(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetRentalSettings?marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getCustomSettings(marketId): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetCustomSettings?marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getRecordFromTemp(): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetRecordFromTemp`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBoothStatus(boothStatusInput): Observable<any> {\r\n    const url = `${this.baseURL}/Rental/GetBoothStatus`;\r\n    return this.http.post<any>(url, boothStatusInput, this.options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getProductCategories(marketId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetProductCategories?marketId=` + marketId,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getVendorRentalDays(rentalDays): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetVendorRentalDays`;\r\n    return this.http.post<any>(url, rentalDays, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBoothRentalCombinedMonthlyCharges(marketId,boothRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/getBoothRentalCombinedMonthlyCharges?marketId=${marketId}`;\r\n    return this.http.post<any>(url, boothRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBoothRentalCombinedWeeklyCharges(marketId,boothRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetBoothRentalCombinedWeeklyCharges?marketId=${marketId}`;\r\n    return this.http.post<any>(url, boothRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBoothRentalWeeklyCharges(marketId,boothRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetBoothRentalWeeklyCharges?marketId=${marketId}`;\r\n    return this.http.post<any>(url, boothRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBoothRentalMontlyCharges(marketId,boothRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetBoothRentalMontlyCharges?marketId=${marketId}`;\r\n    return this.http.post<any>(url, boothRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n  \r\n  getBoothrentalCharges(boothRentalCharges): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GetBoothrentalCharges`;\r\n    return this.http.post<any>(url, boothRentalCharges, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  UpdateVendorResaleInfo(vendorResaleInfo): Observable<boolean> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/UpdateVendorResaleInfo`;\r\n    return this.http.post<any>(url, vendorResaleInfo, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as boolean;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n  \r\n  updateVendorBusinessLicense(marketId,vendorBusinesLicInfo): Observable<boolean> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/UpdateVendorBusinessLicense?marketId=${marketId}`;\r\n    return this.http.post<any>(url, vendorBusinesLicInfo, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as boolean;\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getCombinedMonthlyBookings(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetCombinedMonthlyBookings?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  \r\n  getCombinedMonthlyOtherRentals(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetCombinedMonthlyOtherRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getMonthlyBookings(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetMonthlyBookings?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n\r\n  getMonthlyOtherRentals(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetMonthlyOtherRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getCombinedWeeklyBookings(marketId, vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetCombinedWeeklyBookings?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getCombinedWeeklyOtherRentals(marketId, vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetCombinedWeeklyOtherRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getWeeklyBookings(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetWeeklyBookings?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getWeeklyOtherRentals(marketId,vendorId): Observable<any[]> {\r\n    return this.http.get<any[]>(\r\n      `${this.baseURL}/Rental/GetWeeklyOtherRentals?vendorId=${vendorId}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  GetVendorProductsById(marketId, Id: number): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetVendorProducts?Id=${Id}&marketId=${marketId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const result = res as any;\r\n          return result;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBookingFeeById(marketId,bookingFeeId): Observable<any[]> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetBookingFeeById?marketId=${marketId}&BookingFeeId=${bookingFeeId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  getBookingRenewalFeeById(marketId,bookingRenewalFeeId): Observable<any[]> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/GetBookingRenewalFeeById?marketId=${marketId}&BookingRenewalFeeId=${bookingRenewalFeeId}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          return res.body as any;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  generatePaymentReceipt(marketId,paymentReceiptData): Observable<any[]> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/GeneratePaymentReceipt?marketId=${marketId}`;\r\n    return this.http.post<any>(url, paymentReceiptData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  CheckMinimumUnusedCodeCount(marketId,RentalType): Observable<any> {\r\n    return this.http.get<any>(\r\n      `${this.baseURL}/Rental/CheckMinimumUnusedCodeCount?marketId=${marketId}&RentalType=${RentalType}`,\r\n      { observe: 'response' })\r\n      .pipe(\r\n        map(res => {\r\n          const marketdays = res.body as any;\r\n          return marketdays;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  updateWIFIAccessCodeForRental(wifiData): Observable<any> {\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/Rental/UpdateWIFIAccessCodeForRental`;\r\n    return this.http.post<any>(url, wifiData, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n  private handleError(error: HttpErrorResponse) {\r\n    console.error('server error:', error);\r\n    if (error.error instanceof Error) {\r\n      const errMessage = error.error.message;\r\n      return throwError(errMessage);\r\n    }\r\n    return throwError(error || 'Node.js server error');\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from \"@angular/core\";\r\nimport { CurrencyPipe } from '@angular/common';\r\n\r\n\r\n@Pipe({\r\n  name: 'customCurrency'\r\n})\r\n\r\nexport class customCurrencyPipe implements PipeTransform {\r\n\r\n  constructor(private currencyPipe: CurrencyPipe) { }\r\n\r\n  transform(value: string): string {\r\n    if (parseFloat(value) < 0) {\r\n      return `(${this.currencyPipe.transform(value.toString().replace('-',''))})`;\r\n    }\r\n    return this.currencyPipe.transform(value);\r\n  }\r\n\r\n  customCurrencyInput(event): boolean {\r\n    const inputValue = event.target.value;\r\n    const charCode = (event.which) ? event.which : event.keyCode;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    if (charCode == 46 && inputValue.includes('.') && inputValue.indexOf('.') !== currentCursorPosition) {\r\n      return false;\r\n    }\r\n    if (charCode > 31 && (charCode < 46 || charCode > 57 || charCode === 47)) {\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\n\r\n@Injectable({\r\n   providedIn: 'root',\r\n})\r\n\r\nexport class SharedDataService {\r\n    public paymentSharedData;\r\n    public dailyRentalSelectedDays;\r\n    public dailyRentalSelectedBooths=[];\r\n    public rentalType;\r\n    public tempRecordNo;\r\n    public newVendorContactInfo;\r\n    public newVendorLoginDetails;\r\n    public wifiSelectedDay;\r\n}","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-success-tick',\r\n  templateUrl: './success-tick.component.html',\r\n  styleUrls: ['./success-tick.component.scss']\r\n})\r\nexport class SuccessTickComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","<div class=\"sa\">\r\n  <div class=\"sa-success\">\r\n  <div class=\"sa-success-tip\"></div>\r\n  <div class=\"sa-success-long\"></div>\r\n  <div class=\"sa-success-placeholder\"></div>\r\n  <div class=\"sa-success-fix\"></div>\r\n  </div>\r\n  </div>","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-failure-cross',\r\n  templateUrl: './failure-cross.component.html',\r\n  styleUrls: ['./failure-cross.component.scss']\r\n})\r\nexport class FailureCrossComponent implements OnInit {\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n}\r\n","<div class=\"sa\">\r\n  <div class=\"sa-error\">\r\n    <div class=\"sa-error-x\">\r\n      <div class=\"sa-error-left\"></div>\r\n      <div class=\"sa-error-right\"></div>\r\n    </div>\r\n    <div class=\"sa-error-placeholder\"></div>\r\n    <div class=\"sa-error-fix\"></div>\r\n  </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n    selector: 'app-loader',\r\n    templateUrl: './loader.component.html',\r\n    styleUrls: ['./loader.component.scss']\r\n})\r\nexport class LoaderComponent implements OnInit {    \r\n    constructor() {\r\n     }\r\n\r\n    ngOnInit(): void { \r\n    }\r\n}\r\n","<!-- <div id=\"cover-spin\" ></div> -->\r\n<div class=\"loaderIcon\">\r\n    <img src=\"../../../assets/images/LoaderGif.gif\" alt=\"Loader\">\r\n</div>\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div id=\"ContainerMain\" class=\"container dashBoardMainClass divVendorsPayment\">\r\n    <div class=\"container dashBoardMainClass paymentClass\" style=\"min-height: 0px;\">\r\n        <div class=\"third_party_payment\" *ngIf=\"showIFrame\">\r\n            <!--iFrame-->\r\n            <iframe width=\"100%\" #CPNIFrame id=\"CPNIFrame\" height=\"90%\" frameBorder=\"0\" [src]=\"urlSafe\"\r\n                (load)=\"getHiddenInput()\"></iframe>\r\n            <div\r\n                [ngClass]=\"customerInfoPresent ? 'row my-3 mr-5 ml-5 autopay-footer' : 'row my-3 justify-content-end mx-0'\">\r\n                <label class=\"pure-material-checkbox float-left\" *ngIf=\"customerInfoPresent\">\r\n                    <input type=\"checkbox\" class=\"checkBoxClass\" [(ngModel)]=\"isAutoPopulateBillingInfo\"\r\n                        (change)=\"onClickAutoPopulateBillingInfo(209)\">\r\n                    <span class=\"charitypay_text mt-0\">Auto Populate Customer Information</span>\r\n                </label>\r\n                <div class=\"pay_rgt_butt\">\r\n                    <button type=\"button\" class=\"btn btn-outline-primary\"\r\n                        (click)=\"onhstPayBtn(hstPayBtnMsg)\">{{hstPayBtnMsg}}</button>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"voidPayment\" class=\"loader-container\">\r\n            <!-- Loader -->\r\n            <div class=\"spinner\"></div>\r\n            Refund Payment is processing\r\n        </div>\r\n    </div>\r\n\r\n    <ng-template #paymentSuccess>\r\n        <div class=\"modal-body\">\r\n            <div class=\"row mx-0\">\r\n                <div class=\"payment_successful_txt\" *ngIf=\"paymentSuccessFul\">\r\n                    <app-success-tick></app-success-tick><span>{{payStatus}}!</span>\r\n                </div>\r\n                <div class=\"payment_failed_txt\" *ngIf=\"!paymentSuccessFul\">\r\n                    <app-failure-cross></app-failure-cross><span>{{payStatus}}!</span>\r\n                </div>\r\n            </div>\r\n            <div class=\"row mx-0 justify-content-between\" *ngIf=\"paymentSuccessFul && showPrintEmailRcpt\">\r\n                <div class=\"confirmation_det\" style=\"width: 100%;\" *ngIf=\"isResponse\">\r\n                    <ul>\r\n                        <li *ngIf=\"apiResponse.ReceiptId && apiResponse.ReceiptId !== 0\">\r\n                            <label class=\"font-weight-bold\">Receipt#</label>\r\n                            <div *ngIf=\"apiResponse.ReceiptId; else elseBlock\"><span>{{apiResponse.ReceiptId}}</span></div>\r\n                            <ng-template #elseBlock><span>{{apiResponse.Id}}</span></ng-template>\r\n                        </li>\r\n                        <li>\r\n                            <label class=\"font-weight-bold\">Amount</label>\r\n                            <span>{{tillNowPaid | currency}}</span>\r\n                        </li>\r\n                        <li>\r\n                            <label class=\"font-weight-bold\">Date</label>\r\n                            <span>{{apiResponse.date | date: 'MM/dd/yyyy hh:mm:ss a'}}</span>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n            <div class=\"row mt-4 pt-2 mx-0 text-center paymentMessage\" *ngIf=\"paymentSuccessFul\"><label class=\"w-100\"><strong>Payment processed successfully!</strong></label></div>\r\n            <div class=\"row mt-4 pt-2 mx-0 text-center paymentMessage\" *ngIf=\"!paymentSuccessFul\"><label class=\"w-100\"><strong>Uh-oh! We\r\n                        Were Unable To Process Your Payment.</strong></label></div>\r\n            <div class=\"text-center paymentMessage\" *ngIf=\"!paymentSuccessFul\">\r\n                <div class=\"payment_fail_reason\">\r\n                    <label class=\"font-weight-bold\">{{paymentFailReason}}.</label>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"modal-footer\">\r\n            <button type=\"button\" class=\"btn btn-primary\" [disabled]=\"\" (click)=\"afterpaymentSuccess()\">OK</button>\r\n        </div>\r\n    </ng-template>\r\n</div>","import { Component, ElementRef, EventEmitter, Input, OnInit, TemplateRef, ViewChild,Output } from '@angular/core';\r\nimport { PaymentService } from 'src/app/services/paymentService.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { EEdgeExpressECIType, EOpenEdgeResponseCode, EPaymentModes, EEdgeExpressResultCode, EPaymentGateway, EPaymentTransactionType, EOpenEdgeSessionStates, ECreditCards } from '../enum';\r\nimport { SafeResourceUrl, DomSanitizer } from '@angular/platform-browser';\r\nimport { environment } from 'src/environments/environment';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { Router } from '@angular/router';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\n\r\n@Component({\r\n  selector: 'app-payment',\r\n  templateUrl: './payment.component.html',\r\n  styleUrls: ['./payment.component.scss']\r\n})\r\nexport class PaymentComponent implements OnInit {\r\n  credentials;\r\n  paymentGateway;\r\n  paymentStarted=false;\r\n  public loaderIcon: Promise<boolean>;\r\n  paymentFailReason;\r\n  isSaveInCCTResponse;\r\n  paymentInProgress = false;\r\n  isAutoPopulateBillingInfo =false;\r\n  paymentTable = [];\r\n  currentPayId ;\r\n  hstPayBtnMsg;\r\n  payModalRef: BsModalRef;\r\n  transactionInitiated;\r\n  tempCNPRes: any;\r\n  paymentProcessing = false;\r\n  vendorInfo;\r\n  showIFrame = false;\r\n  facilityCreditCards: string = '';\r\n  selectedDeviceId = 0;\r\n  cctStatusOrderId = 0;\r\n  voidOnCancelInitiated = false;\r\n  @Output() isCancel: EventEmitter<any> = new EventEmitter<any>();\r\n  sessionId;\r\n  showPage = true;\r\n  requestParam: String;\r\n  tempCNPPayId = null;\r\n  tempCNPAmount = null;\r\n  retryTransactionStatusLoader = false;\r\n  private paymentMaxWaitTime = environment.paymentMaxWaitTime;\r\n  private paymentGetCCTStatusInterval = environment.paymentGetCCTStatusInterval;\r\n  urlSafe: SafeResourceUrl;\r\n  achUrlSafe: SafeResourceUrl;\r\n  urlSafeAlias: SafeResourceUrl;\r\n  paymentSuccessFul: boolean;\r\n  @Input() keyedInTransaction;\r\n  @Input() TransactionType;\r\n  payStatus;\r\n  VendorId: any;\r\n  @Input() CCAmount;\r\n  @Input() isQDR;\r\n  @Output() PaymentResponse = new EventEmitter<any>();\r\n  @Output() ClosePaymentPage = new EventEmitter<any>();\r\n  paymentCount;\r\n  tillNowPaid;\r\n  multiPaymentVoidEmv: any;\r\n  openEdgeSub: any;\r\n  tenderAmount = 0;\r\n  changeAmount;\r\n  @Input() voidPayment;\r\n  @Input() ForceCreditReturn;\r\n  @Input() VerifoneId;\r\n  @Input() RefundAmount ;\r\n  @Input() MarketId;\r\n  tempRcmRes = {\r\n    rcmSessionId: '',\r\n    rcmResponse: ''\r\n  }\r\n  @ViewChild('CPNIFrame', { static: false }) iframe: ElementRef;\r\n  @ViewChild('paymentSuccess', { static: true }) popUpPayment: TemplateRef<any>;\r\n  openEdgeBillingFields='';\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  maxLengthNameOnCard = 30;\r\n  maxLengthCCBlillingAd = 50;\r\n  maxLengthCCBlillingZip = 15;\r\n  initiatedVoidCC = false;\r\n  showLoaderMesage = false;\r\n  verifoneRecordId = 0;\r\n  constructor(private paymentService: PaymentService,\r\n    private toastr: ToastrService,\r\n    private modalService: BsModalService,\r\n    private vendorService:VendorService,\r\n    private router: Router,\r\n    public sanitizer: DomSanitizer,\r\n    private sharedDataService: SharedDataService,) {\r\n  }\r\n\r\n  ngOnInit() {\r\n    this.paymentCount = 0;\r\n    this.paymentTable = [];\r\n    this.paymentCount++;\r\n    const obj = {\r\n      payId: this.paymentCount,\r\n      payName: 'Payment ' + this.paymentCount,\r\n      payAmount: this.CCAmount,\r\n      payComplete: false,\r\n      payNowDisable: true,\r\n      payModeId: 0,\r\n      orderId: null,\r\n      changeAmount: 0,\r\n      checkNum: 0,\r\n      checkDate: '',\r\n      bankName: '',\r\n      ManualCardNumber: '',\r\n      ManualCardExp: '',\r\n      ManualCardName: '',\r\n      CreditCardType: 0,\r\n      ManualCardAuthorization: '',\r\n      defaultmode: 0,\r\n      uniqueTransId: null,\r\n      payFailed: false,\r\n      routingNumber: 0,\r\n      accountNumber: 0,\r\n      achManualCardAuthorization: '',\r\n      accountType: 279,\r\n      nameonAccount: ''\r\n    };\r\n\r\n    this.paymentTable.push(obj);\r\n    \r\n    this.getVendorInfo();\r\n    this.getCredentials();\r\n  }\r\n\r\n  getVendorInfo() {\r\n    this.vendorService.getVendorId().subscribe(id => {\r\n      this.VendorId = id;\r\n      // Handle the received vendorId\r\n    });\r\n    this.vendorService.GetVendorById(this.VendorId, this.MarketId).subscribe((res) => {\r\n      if (res !== null) {\r\n        this.vendorInfo = res.body;\r\n      }\r\n    })\r\n  }\r\n\r\n  getCredentials() {\r\n    this.paymentService.getCCCredentials(this.MarketId).subscribe((res) => {\r\n      if (res !== null) {\r\n   \r\n        this.paymentGateway = res.PaymentGateWay;\r\n        this.credentials = res.GatewayDetails ? JSON.parse(res.GatewayDetails) : null;\r\n        if (this.voidPayment == true) {       \r\n         this.voidPaymentTransaction(this.VerifoneId,this.credentials);\r\n        }\r\n        else {\r\n          this.setOpenEdgeMandatory();\r\n          this.initiatePaymentRequest();\r\n        }\r\n      }\r\n    })\r\n  }\r\n\r\n  generateIntialCCT(amt, transTypeId, ptId, paymentModeId, payvoid, cardNumber, authCode, voidOrderId) {\r\n    let CreditCardNumber = cardNumber ? cardNumber.substr(cardNumber.length - 4) : \"\";\r\n    const CCTModel = {\r\n      verifoneRecordId: this.verifoneRecordId,\r\n      Amount: amt,\r\n      VendorId: this.VendorId,\r\n      CreditCardNumber: CreditCardNumber,\r\n      CreditCardType: ECreditCards.Visa,     \r\n      ResponseCode: \"\",\r\n      ResponseMessage: \"\",     \r\n      OrderId: voidOrderId ? voidOrderId : \"\",\r\n      TransactionDateTime: new Date(),\r\n      ProcessStatus: \"In progress\"\r\n    };\r\n    return Object.assign(CCTModel);\r\n  }\r\n\r\n  isAnyPaymentProcessed() {\r\n    let status = this.paymentTable.some(function (ele) { return ele.payComplete });\r\n    if (!status) {\r\n      this.paymentInProgress = false;\r\n    }\r\n  }\r\n\r\n  callRCM(amount, payId, orderId) {\r\n    let tempAmount;\r\n    //const TempURL = 'https://localsystem.paygateway.com:21113/RcmService.svc/Initialize?xl2Parameters=';\r\n    this.paymentTable.find(o => o.payId == payId).uniqueTransId = orderId;\r\n    if (!this.credentials.RCMURL) {\r\n      this.toastr.warning('Please ask Administrator to configure RCM URL', 'URL required', this.toasterConfig);\r\n      this.loaderIcon = Promise.resolve(false);\r\n    } else {\r\n      this.paymentMaxWaitTime = this.paymentMaxWaitTime != undefined && this.paymentGetCCTStatusInterval != 0 ? this.paymentMaxWaitTime : 2;\r\n      this.paymentGetCCTStatusInterval = this.paymentGetCCTStatusInterval != undefined && this.paymentGetCCTStatusInterval != 0 ? this.paymentGetCCTStatusInterval : 10;\r\n      let isPaymentCompleted = false; //for retry logic\r\n      this.paymentInProgress = true;\r\n      let emvTransactionType = this.TransactionType\r\n      \r\n      const requestParam = \"<REQUEST>\" +\r\n        \"<XWEBID>\" + this.credentials.XWEBID + \"</XWEBID>\" +\r\n        \"<XWEBTERMINALID>\" + this.credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n        \"<XWEBAUTHKEY>\" + this.credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n        \"<TRANSACTIONTYPE>\" + emvTransactionType + \"</TRANSACTIONTYPE>  <AMOUNT>\" + amount + \"</AMOUNT> <ORDERID>\" + orderId + \"</ORDERID> <OTK>\" + orderId + \"</OTK><ALLOWDUPLICATES>True</ALLOWDUPLICATES><CLERK></CLERK> <RECEIPTCOPYLABEL>MERCHANT_COPY</RECEIPTCOPYLABEL><TITLE>BTCloud</TITLE><CREATEALIAS>FALSE</CREATEALIAS></REQUEST>\" //JSON.stringify(tempObj);\r\n      const rcmRequest = this.paymentService.getRCMService(this.credentials.RCMURL, requestParam).subscribe((res: any) => {\r\n        if (res) {\r\n          const resultFromRCM = res;\r\n          isPaymentCompleted = true;\r\n          const responseData = JSON.parse(resultFromRCM.RcmResponse);\r\n         // this.prePayStatus = 'Payment';\r\n          if ((responseData && responseData.RESPONSE && responseData.RESPONSE.APPROVEDAMOUNT != 0 && responseData.RESPONSE.HOSTRESPONSECODE && responseData.RESPONSE.RESULT && responseData.RESPONSE.CARDBRAND && responseData.RESPONSE.ACCOUNT\r\n            && responseData.RESPONSE.EXPMONTH && responseData.RESPONSE.EXPYEAR && responseData.RESPONSE.TRANSACTIONID && responseData.RESPONSE.HOSTRESPONSEDESCRIPTION) || (responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Canceled || responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Declined || responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Fail)) {\r\n            let cTypeId = responseData.RESPONSE && responseData.RESPONSE.CARDBRAND ? this.paymentService.openEdgeCardType(responseData.RESPONSE.CARDBRAND) : ECreditCards.Visa;\r\n            if (responseData && responseData.RESPONSE && responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Success) {//Success\r\n              this.payStatus = 'Success';\r\n              this.paymentTable.find(o => o.payId == payId).payFailed = false;\r\n             // this.disableNextButton();\r\n              this.paymentSuccessFul = true;\r\n              tempAmount = amount;\r\n              responseData.RESPONSE['OrderId'] = responseData.RESPONSE && responseData.RESPONSE.ORDERID ? responseData.RESPONSE.ORDERID : orderId;\r\n              this.paymentTable.find(o => o.payId == payId)['processedCC'] = responseData.RESPONSE;\r\n              let CCTModel;\r\n              const receiptText = responseData.RESPONSE.RECEIPTTEXT;\r\n              const entryMethodMatch = receiptText.match(/Entry Method\\s+([^\\n]+)/);\r\n              const entryLegendMatch = receiptText.match(/Entry Legend\\s+([^\\n]+)/);\r\n              const ACMatch = receiptText.match(/AC\\s+([^\\n]+)/);\r\n              const ATCMatch = receiptText.match(/ATC\\s+([^\\n]+)/);\r\n              const AIDMatch = receiptText.match(/AID\\s+([^\\n]+)/);\r\n              const AIDNAMEMatch = receiptText.match(/AID NAME\\s+([^\\n]+)/);\r\n              const TVRMatch = receiptText.match(/TVR\\s+([^\\n]+)/);\r\n              const TSIMatch = receiptText.match(/TSI\\s+([^\\n]+)/);\r\n              const RespCDMatch = receiptText.match(/Resp CD\\s+([^\\n]+)/);\r\n              const TRNREFNoMatch = receiptText.match(/TRN REF #\\s+([^\\n]+)/);\r\n              const VALCODEMatch = receiptText.match(/VAL CODE\\s+([^\\n]+)/);\r\n              \r\n              const tempCCModel = {\r\n                VerifoneId: this.verifoneRecordId,\r\n                Amount: parseFloat(amount),\r\n                CreditCardNumber: responseData.RESPONSE.ACCOUNT,\r\n                CardType: responseData.RESPONSE.CARDTYPE,\r\n                ResponseCode: responseData.RESPONSE.HOSTRESPONSECODE,\r\n                ResponseMessage: responseData.RESPONSE.HOSTRESPONSEDESCRIPTION,\r\n                Card: this.TransactionType == \"CREDITSALE\" ? \"Credit Card\" : \"Debit Card\",\r\n                TransactionDateTime: new Date(),\r\n                TransactionTypeId: \"\",\r\n                OrderId: responseData.RESPONSE.ORDERID,\r\n                VendorId: this.VendorId,\r\n                ProcessStatus: \"Completed\",\r\n                ApprovalCode: responseData.RESPONSE.APPROVALCODE,\r\n                PaymentTransactionTypeId: responseData.RESPONSE.TRANSACTIONID,\r\n                PaymentTransactionType: \"Payment Purchase\",\r\n                CreditCardType: responseData.RESPONSE.CARDBRAND,\r\n                ReceiptResponse: responseData.RESPONSE.RECEIPTTEXT,\r\n                EntryLegend: entryLegendMatch ? entryLegendMatch[1].trim() : '',\r\n                EntryMethod: entryMethodMatch ? entryMethodMatch[1].trim() : '',\r\n                AC: ACMatch ? ACMatch[1].trim() : '',\r\n                ATC: ATCMatch ? ATCMatch[1].trim() : '',\r\n                AID: AIDMatch ? AIDMatch[1].trim() : '',\r\n                AIDNAME: AIDNAMEMatch ? AIDNAMEMatch[1].trim() : '',\r\n                TVR: TVRMatch ? TVRMatch[1].trim() : '',\r\n                TSI: TSIMatch ? TSIMatch[1].trim() : '',\r\n                RespCD: RespCDMatch ? RespCDMatch[1].trim() : '',\r\n                TRNREFNo: TRNREFNoMatch ? TRNREFNoMatch[1].trim() : '',\r\n                VALCODE: VALCODEMatch ? VALCODEMatch[1].trim() : ''\r\n              };\r\n\r\n              CCTModel = Object.assign(tempCCModel);\r\n              this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n              });\r\n              this.loaderIcon = Promise.resolve(false);\r\n              this.gotoPaymentSuccess(this.popUpPayment, tempAmount);\r\n            } else if (responseData && responseData.RESPONSE && responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Canceled || responseData.RESPONSE.RESULT == EEdgeExpressResultCode.Fail) { //Cancel\r\n              this.payStatus = 'Cancelled';\r\n              this.paymentTable.find(o => o.payId == payId).payFailed = true;\r\n              this.isAnyPaymentProcessed();\r\n              this.paymentSuccessFul = false;\r\n              this.paymentProcessing = false;\r\n              this.paymentFailReason = responseData.RESPONSE.RESULTMSG;\r\n              tempAmount = 0;\r\n              let CCTModel;\r\n              const tempCCModel = {\r\n                Amount: parseFloat(amount),      \r\n                CreditCardNumber: responseData.RESPONSE && responseData.RESPONSE.ACCOUNT ? responseData.RESPONSE.ACCOUNT : \"0\",              \r\n                ResponseCode: responseData.RESPONSE && responseData.RESPONSE.HOSTRESPONSECODE ? responseData.RESPONSE.HOSTRESPONSECODE : responseData.RESPONSE.RESULT,\r\n                ResponseMessage: responseData.RESPONSE && responseData.RESPONSE.HOSTRESPONSEDESCRIPTION ? responseData.RESPONSE.HOSTRESPONSEDESCRIPTION : responseData.RESPONSE.RESULTMSG,\r\n                TransactionDateTime: new Date(),\r\n                OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId,\r\n                VendorId: this.VendorId,\r\n                VerifoneId: this.verifoneRecordId,\r\n                ProcessStatus: \"Failed\",\r\n                Card: this.TransactionType == \"CREDITSALE\" ? \"Credit Card\" : \"Debit Card\",\r\n              };\r\n\r\n              CCTModel = Object.assign(tempCCModel);\r\n              this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n              });              \r\n              this.gotoPaymentSuccess(this.popUpPayment, tempAmount);\r\n              this.loaderIcon = Promise.resolve(false);\r\n            } else {\r\n              this.isAnyPaymentProcessed();\r\n              this.payStatus = 'Failed';\r\n              this.paymentTable.find(o => o.payId == payId).payFailed = true;\r\n              tempAmount = 0;\r\n              this.paymentSuccessFul = false;\r\n              this.paymentFailReason = responseData.RESPONSE && responseData.RESPONSE.RESULTMSG ? responseData.RESPONSE.RESULTMSG : 'Declined!';\r\n              this.paymentProcessing = false;\r\n              const CCTModel = {\r\n                Amount: parseFloat(amount),      \r\n                CreditCardNumber: responseData.RESPONSE && responseData.RESPONSE.ACCOUNT ? responseData.RESPONSE.ACCOUNT : \"0\",              \r\n                ResponseCode: responseData.RESPONSE && responseData.RESPONSE.HOSTRESPONSECODE ? responseData.RESPONSE.HOSTRESPONSECODE : responseData.RESPONSE.RESULT,\r\n                ResponseMessage: responseData.RESPONSE && responseData.RESPONSE.HOSTRESPONSEDESCRIPTION ? responseData.RESPONSE.HOSTRESPONSEDESCRIPTION : responseData.RESPONSE.RESULTMSG,\r\n                TransactionDateTime: new Date(),\r\n                OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId,\r\n                VendorId: this.VendorId,\r\n                VerifoneId: this.verifoneRecordId,\r\n                ProcessStatus: \"Failed\",\r\n                Card: this.TransactionType == \"CREDITSALE\" ? \"Credit Card\" : \"Debit Card\",\r\n              };\r\n              this.paymentService.saveVerifoneUnSaved(Object.assign(CCTModel)).subscribe((res: any) => { });\r\n              this.loaderIcon = Promise.resolve(false);\r\n              this.gotoPaymentSuccess(this.popUpPayment, tempAmount);\r\n            }\r\n          } else {\r\n            rcmRequest.unsubscribe();\r\n            tempAmount = 0;\r\n            this.paymentSuccessFul = false;\r\n            this.gotoPaymentSuccess(this.popUpPayment, tempAmount);\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }\r\n        }\r\n      }, err => {\r\n        isPaymentCompleted = true;\r\n        this.paymentTable.find(o => o.payId == payId).payFailed = true;\r\n        this.loaderIcon = Promise.resolve(false);\r\n        this.toastr.warning('Please connect the device ', 'Device Required', this.toasterConfig);\r\n        this.payStatus = 'Failed';\r\n        this.paymentFailReason = 'Device Not Connected!'\r\n        this.isAnyPaymentProcessed();\r\n        this.paymentSuccessFul = false;\r\n        this.paymentProcessing = false;\r\n        const CCTModel = {\r\n          Amount: parseFloat(amount),\r\n          CreditCardNumber: 0,\r\n          CreditCardType: ECreditCards.Visa,\r\n          ResponseCode: '0',\r\n          ResponseMessage: \"Device not Connected!\",\r\n          PaymentTransactionTypeId: 1,\r\n          TransactionDateTime: new Date(),\r\n          TransactionTypeId: EPaymentTransactionType.Declined,\r\n          OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).orderId,\r\n          VendorId:this.VendorId\r\n        };\r\n        this.paymentService.saveVerifoneUnSaved(Object.assign(CCTModel)).subscribe((res: any) => {\r\n        });\r\n        this.gotoPaymentSuccess(this.popUpPayment, tempAmount);\r\n      });\r\n      setTimeout(() => {\r\n        if (!isPaymentCompleted) {\r\n          this.cctStatusOrderId = 0;\r\n          rcmRequest.unsubscribe();\r\n          this.openEdgeTransactionStatus(orderId, payId, 'Sale');\r\n        }\r\n      }, 10000 * 6 * this.paymentMaxWaitTime);\r\n    }\r\n  }\r\n\r\n  openEdgeTransactionStatus(OrderId, payId, transactionType) { //calling from Original Request\r\n    // this.paymentService.GetCreditCardTransactionById(OrderId).subscribe((cctResponse: any) => {\r\n    //   let res = JSON.parse(cctResponse);\r\n    //   if (res.Reason == \"Attempting to Process\") {\r\n    //     this.initiatingOpenEdgeQueryPaymentRequest(OrderId, transactionType, 1, payId, true)\r\n    //   } else {\r\n    //     this.paymentFailReason = \"Please Contact Administrator to check in Gateway Portal if Payment is Approved. If Yes, key in the Payment as Manual Authorization\";\r\n    //     this.saveCCTransactionFailureCase(this.tempRcmRes.rcmResponse, this.paymentFailReason, transactionType, 1, OrderId);\r\n    //   }\r\n    // }, err => {\r\n    //   this.loaderIcon = Promise.resolve(false);\r\n    // });\r\n  }\r\n\r\n  initiatingOpenEdgeQueryPaymentRequest(orderId, transactionType, paymentTrnsId, payId, callRetryLogic) {\r\n    if (this.credentials) {\r\n      this.paymentService.getCNPResponse(this.credentials, orderId).subscribe((res: any) => {\r\n        const jsonResp = JSON.parse(res);\r\n     //   this.showLoaderMesage = false;\r\n        this.tempRcmRes.rcmResponse = jsonResp;\r\n        let amount;\r\n        if (this.cctStatusOrderId == 0) {//To avoid Duplicate Save APi call\r\n          if (jsonResp.RESULT && jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.Approval && jsonResp.RESULT.STATE != 'IN_PROGRESS') {\r\n            this.cctStatusOrderId = jsonResp.RESULT.ORDERID;\r\n            if (this.openEdgeSub) {\r\n              this.openEdgeSub.unsubscribe();\r\n              this.openEdgeSub = null;\r\n            }\r\n          //  this.retryTransactionStatusLoader = false;\r\n            if (transactionType == 'Void') {\r\n              const CCModel = {\r\n                Amount: jsonResp.RESULT.APPROVEDAMOUNT,\r\n                CreditCardNumber: jsonResp.RESULT.MASKEDCARDNUMBER == undefined ? 0 : jsonResp.RESULT.MASKEDCARDNUMBER,\r\n                CreditCardType: jsonResp.RESULT && jsonResp.RESULT.CARDBRAND ? this.paymentService.openEdgeCardType(jsonResp.RESULT.CARDBRAND) : ECreditCards.Visa,\r\n                 ResponseCode: jsonResp.RESULT.RESPONSECODE,\r\n                 ResponseMessage: jsonResp.RESULT.RESPONSEDESCRIPTION,              \r\n                PaymentTransactionTypeId: paymentTrnsId,\r\n                OrderId: orderId,\r\n                 TransactionDateTime: new Date(),\r\n                TransactionTypeId: EPaymentTransactionType.Reversal_Refund, //Reversal\r\n                VendorId : this.VendorId,\r\n              };\r\n              this.paymentService.saveVerifoneUnSaved(Object.assign(CCModel)).subscribe((res: any) => { });\r\n              //this.retryTransactionStatusLoader = false;\r\n              // this.multiPaymentVoidEmv.find(t => t.orderId === (this.paymentTable.find(o => o.payId == this.currentPayId).orderId)).isEmvVoidInitiated = true;\r\n              // if (this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n              //   this.callOpenEdgeVoid(paymentTrnsId);\r\n              // } else {\r\n                if (!this.voidOnCancelInitiated) {\r\n                  this.isCancel.emit(true);\r\n                }\r\n                this.loaderIcon = Promise.resolve(false);\r\n              //}\r\n            } else {\r\n              this.payStatus = 'Success';\r\n              this.paymentSuccessFul = true;\r\n              this.paymentTable.find(o => o.payId == payId).payFailed = false;\r\n              amount = parseFloat(jsonResp.RESULT.APPROVEDAMOUNT).toFixed(2);\r\n              jsonResp.RESULT['OrderId'] = jsonResp.RESULT && jsonResp.RESULT.ORDERID ? jsonResp.RESULT.ORDERID : orderId;\r\n              jsonResp.RESULT['CARDHOLDERNAME'] = jsonResp.RESULT.CARDBRAND;\r\n              jsonResp.RESULT['ACCOUNT'] = jsonResp.RESULT.MASKEDCARDNUMBER;\r\n              jsonResp.RESULT['HOSTRESPONSECODE'] = jsonResp.RESULT.RESPONSECODE;\r\n              jsonResp.RESULT['HOSTRESPONSEDESCRIPTION'] = jsonResp.RESULT.ORIGINALRESPONSEDESCRIPTION;\r\n              this.paymentTable.find(o => o.payId == payId)['processedCC'] = jsonResp.RESULT;\r\n              this.loaderIcon = Promise.resolve(false);\r\n              this.gotoPaymentSuccess(this.popUpPayment, amount);\r\n            }\r\n            this.getRCMStatus(orderId, true);\r\n          } else if (jsonResp.RESULT && jsonResp.RESULT.STATE != 'IN_PROGRESS' && (jsonResp.RESULT.RESPONSECODE != EOpenEdgeResponseCode.TransactionDoesNotExist && jsonResp.RESULT.RESPONSEDESCRIPTION != 'Invalid Reference Error: Transaction does not exist')) {\r\n           // this.retryTransactionStatusLoader = false;\r\n            let reason = ((jsonResp.RESULT.RESPONSECODE != EOpenEdgeResponseCode.TransactionDoesNotExist && jsonResp.RESULT.RESPONSEDESCRIPTION != 'Invalid Reference Error: Transaction does not exist') || jsonResp.RESULT.ORDERID == orderId) ? jsonResp.RESULT.RESPONSEDESCRIPTION : \"Transaction Cancelled\";\r\n            if (this.openEdgeSub) {\r\n              this.openEdgeSub.unsubscribe();\r\n              this.openEdgeSub = null;\r\n            }\r\n            this.paymentFailReason = reason;\r\n            this.saveCCTransactionFailureCase(jsonResp, reason, transactionType, paymentTrnsId, orderId);\r\n            this.getRCMStatus(orderId, false);\r\n            this.loaderIcon = Promise.resolve(false);\r\n          } else if (callRetryLogic) {\r\n            // this.paymentService.GetCreditCardTransactionById(orderId).subscribe((cctResponse: any) => {\r\n            //   let res = JSON.parse(cctResponse);\r\n            //   if (!this.openEdgeSub && res.Reason == \"Attempting to Process\") {\r\n            //     this.cctStatusOrderId = 0;\r\n            //     this.retryTransactionStatusLoader = true;\r\n            //     let interval = this.paymentGetCCTStatusInterval * 1000;\r\n            //     const source = Observable.interval(interval);\r\n            //     this.openEdgeSub = source.subscribe(val => this.getOpenEdgeTransactionStatus(orderId, payId, val, transactionType, paymentTrnsId));\r\n            //   } else {\r\n            //     this.paymentTable.find(o => o.payId == payId).payFailed = true;\r\n            //     this.paymentFailReason = \"Please Contact Administrator to check in Gateway Portal if Payment is Approved. If Yes, key in the Payment as Manual Authorization\";\r\n            //     this.saveCCTransactionFailureCase(jsonResp, this.paymentFailReason, transactionType, paymentTrnsId, orderId);\r\n            //   }\r\n            // });\r\n          } else {\r\n            this.paymentService.getRCMServiceStatus(null, orderId, false).subscribe((sessionRes: any) => {\r\n              if (sessionRes) {\r\n                this.tempRcmRes.rcmSessionId = sessionRes.SessionId;\r\n                if (sessionRes.SessionState == EOpenEdgeSessionStates.Completed && jsonResp.RESULT && jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.TransactionDoesNotExist && jsonResp.RESULT.RESPONSEDESCRIPTION == 'Invalid Reference Error: Transaction does not exist') {\r\n                  //this.retryTransactionStatusLoader = false;\r\n                  if (this.openEdgeSub) {\r\n                    this.openEdgeSub.unsubscribe();\r\n                    this.openEdgeSub = null;\r\n                  }\r\n                  this.paymentFailReason = \"Declined!\";\r\n                  jsonResp.RESULT.RESPONSEDESCRIPTION = jsonResp.RESULT.RESPONSEDESCRIPTION + \" : RCM Session Completed!\";\r\n                  this.paymentTable.find(o => o.payId == payId).payFailed = true;\r\n                  this.saveCCTransactionFailureCase(jsonResp, this.paymentFailReason, transactionType, paymentTrnsId, orderId);\r\n                }\r\n              }\r\n            });\r\n          }\r\n        }\r\n      }, err => {\r\n        this.paymentTable.find(o => o.payId === payId).payFailed = true;\r\n       // this.prePayStatus = 'Payment';\r\n        this.payStatus = 'Failed!';\r\n        this.paymentFailReason = \"Payment Status not received. Please Contact Administrator to check in Gateway Portal if Payment is Approved. If Yes, key in the Payment as Manual Authorization\";\r\n        this.loaderIcon = Promise.resolve(false);\r\n        if (this.openEdgeSub) {\r\n          this.openEdgeSub.unsubscribe();\r\n          this.openEdgeSub = null;\r\n        }\r\n        this.saveCCTransactionFailureCase(null, this.paymentFailReason, transactionType, paymentTrnsId, orderId);\r\n      });\r\n    } else {\r\n      this.toastr.warning('Please ask Administrator to configure RCM URL', 'URL required', this.toasterConfig);\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  saveCCTransactionFailureCase(jsonResp, paymentFailReason, transactionType, paymentTrnsId, orderId) {\r\n    this.paymentSuccessFul = false;\r\n    this.paymentProcessing = false;\r\n    this.payStatus = 'Failed';\r\n    this.isAnyPaymentProcessed();\r\n    this.paymentFailReason = paymentFailReason ? paymentFailReason : jsonResp.RESULT.STATE;\r\n    const CCModel = {\r\n      Amount: this.CCAmount,\r\n       CreditCardNumber: jsonResp && jsonResp.RESULT && jsonResp.RESULT.MASKEDCARDNUMBER ? jsonResp.RESULT.MASKEDCARDNUMBER : '0',\r\n      CreditCardType: jsonResp && jsonResp.RESULT && jsonResp.RESULT.CARDBRAND ? this.paymentService.openEdgeCardType(jsonResp.RESULT.CARDBRAND) : ECreditCards.Visa,\r\n     ResponseCode: jsonResp && jsonResp.RESULT && jsonResp.RESULT.RESPONSECODE ? jsonResp.RESULT.RESPONSECODE : '0',\r\n     ResponseMessage: (jsonResp.RESULT && jsonResp.RESULT && jsonResp.RESULT.STATE == 'IN_PROGRESS') ? jsonResp.RESULT.STATE : (jsonResp && jsonResp.RESULT && jsonResp.RESULT.RESPONSEDESCRIPTION) ? jsonResp.RESULT.RESPONSEDESCRIPTION : this.paymentFailReason,\r\n     PaymentTransactionTypeId: paymentTrnsId,\r\n      OrderId: orderId,\r\n      TransactionDateTime: new Date(),\r\n      TransactionTypeId: EPaymentTransactionType.Declined,\r\n      VendorId: this.VendorId\r\n     };\r\n    this.paymentService.saveVerifoneUnSaved(Object.assign(CCModel)).subscribe((res: any) => { });\r\n    if (transactionType == 'Void') {\r\n      this.multiPaymentVoidEmv.find(t => t.orderId === (this.paymentTable.find(o => o.payId == this.currentPayId).orderId)).isEmvVoidInitiated = true;\r\n      if (this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n        this.callOpenEdgeVoid(paymentTrnsId);\r\n      } else {\r\n        if (!this.voidOnCancelInitiated) {\r\n          this.isCancel.emit(true);\r\n        }\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n      this.toastr.error(`Failed to Reverse the Payment! - $${this.CCAmount}`, 'Failure', this.toasterConfig);\r\n    } else {\r\n      this.toastr.error('Payment Failed', 'Failure');\r\n      this.gotoPaymentSuccess(this.popUpPayment, 0);\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  callOpenEdgeVoid(paymentTrnsId) {\r\n    var initiatingVoid = this.multiPaymentVoidEmv.find(t => t.isEmvVoidInitiated == false);\r\n    if (initiatingVoid) {\r\n      let CCTModel = this.generateIntialCCT(initiatingVoid['processedCC'].APPROVEDAMOUNT, EPaymentTransactionType.Reversal_Refund, paymentTrnsId, initiatingVoid.payModeId, null, null, null, null);\r\n      this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n        if (res.Success) {\r\n          let orderId = res.Id;\r\n       //   this.showLoaderMesage = true;\r\n          let isVoidCompleted = false;\r\n          const requestParam = \"<REQUEST> \" + \"<XWEBID>\" + this.credentials.XWEBID + \"</XWEBID>\" +\r\n            \"<XWEBTERMINALID>\" + this.credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n            \"<XWEBAUTHKEY>\" + this.credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n            \"<TRANSACTIONTYPE>DEBITRETURN</TRANSACTIONTYPE><AMOUNT>\" + initiatingVoid['processedCC'].APPROVEDAMOUNT + \"</AMOUNT><ORDERID>\" + orderId + \"</ORDERID><OTK>\" + orderId + \"</OTK></REQUEST>\";\r\n          this.initiatedVoidCC = true;\r\n          const rcmRequest = this.paymentService.getRCMService(this.credentials.RCMURL, requestParam).subscribe((res: any) => {\r\n            if (res) {\r\n              isVoidCompleted = true;\r\n              const resultFromRCM = res;\r\n              this.multiPaymentVoidEmv.find(t => t.orderId === initiatingVoid.orderId).isEmvVoidInitiated = true;\r\n              const responseData = JSON.parse(resultFromRCM.RcmResponse);\r\n              let cTypeId = responseData && responseData.RESPONSE && responseData.RESPONSE.CARDBRAND ? this.paymentService.openEdgeCardType(responseData.RESPONSE.CARDBRAND) : ECreditCards.Visa;\r\n              if (responseData.RESPONSE.RESULT == 0) { //Success\r\n                let CCTModel;\r\n                const tempCCModel = {\r\n                  Amount: responseData.RESPONSE.APPROVEDAMOUNT,\r\n                 CreditCardNumber: responseData.RESPONSE.ACCOUNT == undefined ? 0 : responseData.RESPONSE.ACCOUNT,\r\n                  CreditCardType: cTypeId,\r\n                  ResponseCode: responseData.RESPONSE.HOSTRESPONSECODE,\r\n                  ResponseMessage: responseData.RESPONSE.HOSTRESPONSEDESCRIPTION,\r\n                  PaymentTransactionTypeId: paymentTrnsId,\r\n                  OrderId: orderId,\r\n                  TransactionDateTime: new Date(),\r\n                  TransactionTypeId: EPaymentTransactionType.Reversal_Refund,\r\n                  VendorId: this.VendorId\r\n                };\r\n\r\n                this.toastr.success(`Refund Processed Successfully - $${responseData.RESPONSE.APPROVEDAMOUNT}`, 'Success', this.toasterConfig);\r\n                CCTModel = Object.assign(tempCCModel);\r\n                this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n                });\r\n              } else {\r\n                let CCTModel;\r\n                const tempCCModel = {\r\n                  Amount: responseData.RESPONSE && responseData.RESPONSE.APPROVEDAMOUNT ? responseData.RESPONSE.APPROVEDAMOUNT : initiatingVoid['processedCC'].APPROVEDAMOUNT,\r\n                   CreditCardNumber: responseData.RESPONSE.ACCOUNT == undefined ? '0' : responseData.RESPONSE.ACCOUNT,\r\n                  CreditCardType: cTypeId,\r\n                   ResponseCode: responseData.RESPONSE.RESULT,\r\n                   ResponseMessage: responseData.RESPONSE.RESULTMSG ? responseData.RESPONSE.RESULTMSG : 'Declined',\r\n                  PaymentTransactionTypeId: paymentTrnsId,\r\n                  OrderId: orderId,\r\n                  TransactionDateTime: new Date(),\r\n                  TransactionTypeId: EPaymentTransactionType.Declined,\r\n                  VendorId: this.VendorId\r\n                };\r\n                CCTModel = Object.assign(tempCCModel);\r\n                this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => { });\r\n                this.toastr.error(`Failed to Reverse the Payment - $${initiatingVoid['processedCC'].APPROVEDAMOUNT}`, 'Failure', this.toasterConfig);\r\n              }\r\n              if (this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n                this.callOpenEdgeVoid(paymentTrnsId);\r\n              } else {\r\n                this.loaderIcon = Promise.resolve(false);\r\n                this.showLoaderMesage = false;\r\n                if (!this.voidOnCancelInitiated) {\r\n                  this.isCancel.emit(true);\r\n                }\r\n              }\r\n            }\r\n          }, err => {\r\n            if (this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n              this.callOpenEdgeVoid(paymentTrnsId);\r\n            } else {\r\n              if (!this.voidOnCancelInitiated) {\r\n                this.isCancel.emit(true);\r\n                this.toastr.error(`Failed to Reverse the Payment - $${initiatingVoid['processedCC'].APPROVEDAMOUNT}`, 'Failure', this.toasterConfig);\r\n                this.multiPaymentVoidEmv.find(t => t.orderId === initiatingVoid.orderId).isEmvVoidInitiated = true;\r\n                this.showLoaderMesage = false;\r\n                this.loaderIcon = Promise.resolve(false);\r\n                this.initiatedVoidCC = false;\r\n              }\r\n            }\r\n          });\r\n          setTimeout(() => {\r\n            if (!isVoidCompleted) {\r\n              rcmRequest.unsubscribe();\r\n              this.openEdgeTransactionStatus(orderId, 0, 'Void');\r\n            }\r\n          }, 10000 * 6 * this.paymentMaxWaitTime);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  voidPaymentTransaction(verifoneRecordId, credentials) {\r\n    \r\n    this.paymentService.GetVerifoneUnSavedDate(verifoneRecordId).subscribe((res: any) => {\r\n      let CCTModel = this.generateIntialCCT(this.CCAmount, 1, 1, 1, null, null, null,res.OrderId);\r\n      this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((cctRes) => {\r\n        if (cctRes.Success) {\r\n          let cctId = cctRes.Id;\r\n          \r\n          this.verifoneRecordId = cctRes.Id;\r\n          const paymentAmount = this.RefundAmount > 0 ? this.RefundAmount : res.Amount;\r\n          const orderId = res.OrderId;\r\n          const DebitOrderId = cctRes.OrderId;\r\n          const OpenEdgeTransType = res.TransactionTypeId;\r\n          if (!credentials.RCMURL) {\r\n            this.toastr.warning('Please ask Administrator to configure RCM URL', 'URL required', this.toasterConfig);\r\n            this.showLoaderMesage = false;\r\n            this.loaderIcon = Promise.resolve(false);\r\n          } else {\r\n            let TransactionCardType = res.Card;\r\n            var paymentTransactionTypeId = res.PaymentTransactionTypeId;\r\n            var paymentReturnType = \"CREDITVOID\";\r\n            \r\n            if (TransactionCardType == 'Credit Card') {\r\n              this.paymentService.GetPaymentStatus(this.credentials, paymentTransactionTypeId, orderId).subscribe((response: any) => {\r\n                if (response) {\r\n                  var paymentStatusJsonResp = JSON.parse(response)\r\n                  var paymentStatus = paymentStatusJsonResp.RESULT.STATE;\r\n                  if(this.RefundAmount > 0 ){\r\n                    paymentStatus = \"CLOSED\";\r\n                  }\r\n                  if (paymentStatus == \"CLOSED\")\r\n                    paymentReturnType = \"CREDITRETURN\";\r\n                  else if (paymentStatus == \"APPROVED\" || response == \"CAPTURED\" || response == \"IN_PROGRESS\")\r\n                    paymentReturnType = \"CREDITVOID\";\r\n                  // ElseIf g_strResponseCode <> \"1\" Then\r\n                  //       setupParameters = CreatePostString(\"CREDIT\", orderId, CStr(tdbTotalAmount.Value))\r\n                  // End If\r\n                  \r\n                  if(this.ForceCreditReturn == true){\r\n                    paymentReturnType = \"CREDITRETURN\";\r\n                  }\r\n                  \r\n                  this.paymentService.GetCNPCreditVoid(this.credentials, paymentTransactionTypeId, paymentAmount, paymentReturnType).subscribe((res: any) => {\r\n                    if (res) {\r\n                      const jsonResp = JSON.parse(res);\r\n                      let cTypeId = jsonResp.RESPONSE && jsonResp.RESPONSE.CARDBRAND ? this.paymentService.openEdgeCardType(jsonResp.RESPONSE.CARDBRAND) : ECreditCards.Visa;\r\n                      if (jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.Approval) {\r\n                        const receiptText = jsonResp.RESULT.RECEIPTTEXT;\r\n                        const transType = receiptText.match(/Trans Type\\s+([^\\n]+)/);\r\n\r\n                        const entryMethodMatch = receiptText.match(/Entry Method\\s+([^\\n]+)/);\r\n                        const entryLegendMatch = receiptText.match(/Entry Legend\\s+([^\\n]+)/);\r\n                        const ACMatch = receiptText.match(/AC\\s+([^\\n]+)/);\r\n                        const ATCMatch = receiptText.match(/ATC\\s+([^\\n]+)/);\r\n                        const AIDMatch = receiptText.match(/AID\\s+([^\\n]+)/);\r\n                        const AIDNAMEMatch = receiptText.match(/AID NAME\\s+([^\\n]+)/);\r\n                        const TVRMatch = receiptText.match(/TVR\\s+([^\\n]+)/);\r\n                        const TSIMatch = receiptText.match(/TSI\\s+([^\\n]+)/);\r\n                        const RespCDMatch = receiptText.match(/Resp CD\\s+([^\\n]+)/);\r\n                        const TRNREFNoMatch = receiptText.match(/TRN REF #\\s+([^\\n]+)/);\r\n                        const VALCODEMatch = receiptText.match(/VAL CODE\\s+([^\\n]+)/);\r\n                        \r\n                        const tempCCModel = {\r\n                          VerifoneId: this.verifoneRecordId,\r\n                          Amount: jsonResp.RESULT.APPROVEDAMOUNT,\r\n                          VendorId: this.VendorId,\r\n                          ProcessStatus: \"Completed\",\r\n                          CreditCardNumber: jsonResp.RESULT.MASKEDCARDNUMBER,\r\n                          ResponseCode: jsonResp.RESULT.RESPONSECODE,\r\n                          ResponseMessage: jsonResp.RESULT.RESPONSEDESCRIPTION,\r\n                          \r\n                          OrderId: orderId,\r\n                          TransactionDateTime: new Date(),\r\n                          TransactionTypeId: OpenEdgeTransType != '' ? OpenEdgeTransType : 'Credit' ,\r\n                          ReceiptResponse: jsonResp.RESULT.RECEIPTTEXT ? jsonResp.RESULT.RECEIPTTEXT : null,\r\n                          Card: TransactionCardType,\r\n                          CreditCardType : jsonResp.RESULT.CARDBRAND,\r\n                          EntryLegend: entryLegendMatch ? entryLegendMatch[1].trim() : '',\r\n                          EntryMethod: entryMethodMatch ? entryMethodMatch[1].trim() : '',\r\n                          AC: ACMatch ? ACMatch[1].trim() : '',\r\n                          ATC: ATCMatch ? ATCMatch[1].trim() : '',\r\n                          AID: AIDMatch ? AIDMatch[1].trim() : '',\r\n                          AIDNAME: AIDNAMEMatch ? AIDNAMEMatch[1].trim() : '',\r\n                          TVR: TVRMatch ? TVRMatch[1].trim() : '',\r\n                          TSI: TSIMatch ? TSIMatch[1].trim() : '',\r\n                          RespCD: RespCDMatch ? RespCDMatch[1].trim() : '',\r\n                          TRNREFNo: TRNREFNoMatch ? TRNREFNoMatch[1].trim() : '',\r\n                          VALCODE: VALCODEMatch ? VALCODEMatch[1].trim() : '',\r\n                          PaymentTransactionTypeId: jsonResp.RESULT.TRANSACTIONID,\r\n                          PaymentTransactionType: transType != \"\" && transType != null ? transType[1].trim().toString() : 'VOID',\r\n                        };\r\n                        const CCTModel = Object.assign(tempCCModel);\r\n                        this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n                          if(!res.Success){\r\n                            this.toastr.warning('Verifone table failed', 'Info', this.toasterConfig);\r\n                            this.loaderIcon = Promise.resolve(false);\r\n                          }\r\n                        });\r\n                        this.initiatedVoidCC = false;\r\n                        this.loaderIcon = Promise.resolve(false);\r\n                      } else {\r\n                        const cCModel = {\r\n                          VerifoneId: this.verifoneRecordId,\r\n                          Amount: jsonResp.RESULT.APPROVEDAMOUNT ? jsonResp.RESULT.APPROVEDAMOUNT : paymentAmount,\r\n                          CreditCardNumber: jsonResp.RESULT && jsonResp.RESULT.MASKEDCARDNUMBER ? jsonResp.RESULT.MASKEDCARDNUMBER : 'XXXX',\r\n                          ResponseCode: jsonResp.RESULT.RESPONSECODE ? jsonResp.RESULT.RESPONSECODE : null,\r\n                          ResponseMessage: jsonResp.RESULT.RESPONSEDESCRIPTION ? jsonResp.RESULT.RESPONSEDESCRIPTION : 'Declined',\r\n                          Card: 'Credit Card',\r\n                          CreditCardType : jsonResp.RESULT.CARDBRAND,\r\n                          OfflinePayment: 0,\r\n                          PaymentTransactionTypeId: jsonResp.RESULT.TRANSACTIONID,\r\n                          OrderId: orderId,\r\n                          TransactionDateTime: new Date(),\r\n                          TransactionTypeId: \"\",\r\n                          VendorId: this.VendorId,\r\n                          ProcessStatus: \"Failed\",\r\n                          ReceiptResponse: jsonResp.RESULT.RECEIPTTEXT ? jsonResp.RESULT.RECEIPTTEXT : null,\r\n\r\n                          \r\n                        };\r\n                        this.paymentService.saveVerifoneUnSaved(Object.assign(cCModel)).subscribe((res: any) => { });\r\n                        if (!this.voidOnCancelInitiated) {\r\n                          this.isCancel.emit(true);\r\n                        }\r\n                        this.showLoaderMesage = false;\r\n                        this.loaderIcon = Promise.resolve(false);\r\n                        this.initiatedVoidCC = false;\r\n                      }\r\n                      // if (!this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n                      //   this.showLoaderMesage = false;\r\n                      //   if (!this.voidOnCancelInitiated) {\r\n                      //     this.isCancel.emit(true);\r\n                      //   }\r\n                      //   this.initiatedVoidCC = false;\r\n                      //   this.loaderIcon = Promise.resolve(false);\r\n                      // }\r\n                      var obj = {\r\n                        VerifoneId: this.verifoneRecordId,\r\n                        PaymentSuccess: jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.Approval ? true : false,\r\n                        OrderId:orderId\r\n                      }\r\n                      this.toastr.info(\"Credit card payment reversed successfully\", 'Info', this.toasterConfig);\r\n                      this.PaymentResponse.emit(obj);\r\n                    }\r\n                  });\r\n                }\r\n              });\r\n            } else {// Debit return\r\n              this.showLoaderMesage = true;\r\n              let requestParam = \"<REQUEST> \" + \"<XWEBID>\" + this.credentials.XWEBID + \"</XWEBID>\" +\r\n                \"<XWEBTERMINALID>\" + this.credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n                \"<XWEBAUTHKEY>\" + this.credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n                \"<TRANSACTIONTYPE>DEBITRETURN</TRANSACTIONTYPE><AMOUNT>\" + paymentAmount + \"</AMOUNT><ORDERID>\" + DebitOrderId + \"</ORDERID><OTK>\" + DebitOrderId + \"</OTK></REQUEST>\";\r\n              this.initiatedVoidCC = true;\r\n              const debitVoidRequest = this.paymentService.getRCMService(this.credentials.RCMURL, requestParam).subscribe((res: any) => {\r\n                \r\n                const resultFromRCM = res;\r\n                const responseData = JSON.parse(resultFromRCM.RcmResponse);\r\n                const TransType = responseData.RESPONSE.RECEIPTTEXT.match(/Trans Type\\s+([^\\n]+)/);\r\n                let cTypeId = responseData.RESPONSE && responseData.RESPONSE.CARDBRAND ? this.paymentService.openEdgeCardType(responseData.RESPONSE.CARDBRAND) : ECreditCards.Visa;\r\n                if (responseData.RESPONSE.RESULT == 0) { //Success\r\n                  if (!this.voidOnCancelInitiated) {\r\n                    this.isCancel.emit(true);\r\n                  }\r\n                  this.showLoaderMesage = false;\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                  let CCTModel;\r\n                  \r\n                  const tempCCModel = {\r\n                    VerifoneId: this.verifoneRecordId,\r\n                    VendorId: this.VendorId,\r\n                    ProcessStatus: \"Completed\",\r\n                    Amount: responseData.RESPONSE.APPROVEDAMOUNT,\r\n                    CreditCardNumber: responseData.RESPONSE.ACCOUNT == undefined ? 0 : responseData.RESPONSE.ACCOUNT,\r\n                    ResponseCode: responseData.RESPONSE.HOSTRESPONSECODE,\r\n                    ResponseMessage: responseData.RESPONSE.HOSTRESPONSEDESCRIPTION,\r\n                    Card: TransactionCardType,\r\n                    CreditCardType : responseData.RESPONSE.CARDBRAND,\r\n                    PaymentTransactionTypeId:responseData.RESPONSE.TRANSACTIONID,\r\n                    PaymentTransactionType:  TransType != \"\" && TransType != null ? TransType[1].trim().toString() : 'Debit Void',\r\n                    OrderId: responseData.RESPONSE.ORDERID,\r\n                    TransactionDateTime: new Date(),\r\n                    TransactionTypeId:  OpenEdgeTransType != '' ? OpenEdgeTransType : 'Return'  ,\r\n                    ReceiptResponse: responseData.RESPONSE.RECEIPTTEXT ? responseData.RESPONSE.RECEIPTTEXT : null\r\n                  };\r\n                  CCTModel = Object.assign(tempCCModel);\r\n                  \r\n                  this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n                    if(!res.Success){\r\n                      this.toastr.warning('Verifone table failed', 'Info', this.toasterConfig);\r\n                      this.loaderIcon = Promise.resolve(false);\r\n                    }\r\n                  });\r\n                  this.initiatedVoidCC = false;\r\n\r\n                  var obj = {\r\n                    VerifoneId: this.verifoneRecordId,\r\n                    PaymentSuccess: responseData.RESPONSE.HOSTRESPONSECODE == EOpenEdgeResponseCode.Approval ? true : false,\r\n                    OrderId:responseData.RESPONSE.ORDERID\r\n                  }\r\n                  this.toastr.warning(responseData.RESPONSE.HOSTRESPONSEDESCRIPTION, 'Info', this.toasterConfig);\r\n                  this.PaymentResponse.emit(obj);\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                } else {\r\n                  let CCTModel;\r\n                  const tempCCModel = {\r\n                    VerifoneId: this.verifoneRecordId,\r\n                    Amount: responseData.RESPONSE.APPROVEDAMOUNT ? responseData.RESPONSE.APPROVEDAMOUNT : paymentAmount,\r\n                    CreditCardNumber: responseData.RESPONSE.ACCOUNT == undefined ? '0' : responseData.RESPONSE.ACCOUNT,\r\n                    ResponseCode: responseData.RESPONSE.RESULT,\r\n                    ResponseMessage: responseData.RESPONSE.RESULTMSG ? responseData.RESPONSE.RESULTMSG : 'Declined',\r\n                    CreditCardType: responseData.RESPONSE.CARDBRAND,\r\n                    PaymentTransactionTypeId: responseData.RESPONSE.TRANSACTIONID,\r\n                    OrderId: orderId,\r\n                    VendorId: this.VendorId,\r\n                    ProcessStatus: \"Failed\",\r\n                    TransactionDateTime: new Date(),\r\n                    TransactionTypeId: EPaymentTransactionType.Declined,\r\n                    ReceiptResponse: responseData.RESPONSE.RECEIPTTEXT ? responseData.RESPONSE.RECEIPTTEXT : null\r\n                  };\r\n                  CCTModel = Object.assign(tempCCModel);\r\n                  this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => { });\r\n                  if (!this.voidOnCancelInitiated) {\r\n                    this.isCancel.emit(true);\r\n                  }\r\n                  this.toastr.error('Failed to Reverse the Payment!', 'Failure', this.toasterConfig);\r\n                  this.showLoaderMesage = false;\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                  this.initiatedVoidCC = false;\r\n\r\n                  var obj = {\r\n                    VerifoneId: this.verifoneRecordId,\r\n                    PaymentSuccess: responseData.RESPONSE.HOSTRESPONSECODE == EOpenEdgeResponseCode.Approval ? true : false,\r\n                    OrderId:responseData.RESPONSE.ORDERID\r\n                  }\r\n                  this.toastr.warning(responseData.RESPONSE.HOSTRESPONSEDESCRIPTION, 'Info', this.toasterConfig);\r\n                  this.PaymentResponse.emit(obj);\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                }\r\n                this.showLoaderMesage = false;\r\n              }, err => {\r\n                if (!this.multiPaymentVoidEmv.some(function (ele) { return (ele.isEmvVoidInitiated == false); })) {\r\n                  this.showLoaderMesage = false;\r\n                  if (!this.voidOnCancelInitiated) {\r\n                    this.isCancel.emit(true);\r\n                  }\r\n                  this.initiatedVoidCC = false;\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                }\r\n              });\r\n            }\r\n          }\r\n        }\r\n      });\r\n    });\r\n  }\r\n\r\n  getRCMStatus(orderId, transactinSuccess) {\r\n    this.paymentService.getRCMServiceStatus(null, orderId, false).subscribe((sessionRes: any) => {\r\n      if (sessionRes) {\r\n        if (sessionRes.SessionState == EOpenEdgeSessionStates.PromptingForCardRemoval) {\r\n          this.toastr.warning('Please Remove Your Card From EMV Device', 'Alert', this.toasterConfig);\r\n        }\r\n        this.cancelRcmRequest(sessionRes.SessionId, transactinSuccess);\r\n      }\r\n    });\r\n  }\r\n\r\n  cancelRcmRequest(sessionId, isTransactionSuccess) {\r\n    this.paymentService.getRCMServiceStatus(sessionId, 0, true).subscribe((respose: any) => {\r\n      if (!respose.IsSuccessful && !isTransactionSuccess) {\r\n        this.toastr.warning('Please click on Cancel Button in the EMV Device, if it is not in Home Screen. Ignore if already in Home Screen', 'Alert', this.toasterConfig);\r\n      }\r\n    });\r\n  }\r\n\r\n  getExpiryMonthValue(expiryMonth) {\r\n    let tempMonth = 263;\r\n    if (expiryMonth) {\r\n      if (expiryMonth > 0 && expiryMonth < 13) {\r\n        expiryMonth = tempMonth + expiryMonth;\r\n      } else if (expiryMonth > 263 && expiryMonth < 276) {\r\n        expiryMonth = expiryMonth;\r\n      } else {\r\n        expiryMonth = 264;\r\n      }\r\n    } else {\r\n      expiryMonth = 264;\r\n    }\r\n    return expiryMonth;\r\n  }\r\n\r\n  saveInVerifoneUnsaved(amount, payId) {\r\n    this.paymentFailReason = '';\r\n    let CCTModel = this.generateIntialCCT(this.CCAmount, 1, 1, 1, null, null, null, null);\r\n    this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((cctRes) => {\r\n     if (cctRes.Success) {\r\n        let cctId = cctRes.Id;\r\n        this.verifoneRecordId = cctRes.Id;\r\n        this.paymentTable.find(o => o.payId == payId).orderId = cctRes.OrderId;\r\n        this.isSaveInCCTResponse = true;\r\n        if (!this.keyedInTransaction) {          \r\n            this.callRCM(amount, payId, cctRes.OrderId); // Transaction type(SALE) is decided by user when RCM device popsup a option to choose\r\n         \r\n        } else if (this.keyedInTransaction) {\r\n            this.tempCNPAmount = amount;\r\n            this.tempCNPPayId = payId;\r\n            this.callCNP(amount, 'CREDITSALE', payId); // CNP is always CREDITSALE, Debit card is N/A\r\n        }\r\n      } else {\r\n        this.loaderIcon = Promise.resolve(false);\r\n        this.paymentStarted = false;\r\n        this.toastr.error(\"We couldn't create CCT, Please try again!\", 'Failure', this.toasterConfig);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n      this.paymentStarted = false;\r\n      this.toastr.error(' Something went wrong!', 'Failure', this.toasterConfig);\r\n    });\r\n  }\r\n\r\n  initiatePaymentRequest() {\r\n    this.paymentStarted = true;\r\n    const amount = this.CCAmount;\r\n    const payId = 1;\r\n    this.currentPayId = payId;\r\n    this.saveInVerifoneUnsaved(amount, payId);\r\n    this.loaderIcon = Promise.resolve(true);\r\n  }\r\n\r\n  getHiddenInput() {\r\n    this.hstPayBtnMsg = 'Cancel';\r\n    let iframeSrc = this.iframe.nativeElement.src.split('/');\r\n    let tempId = iframeSrc.pop();\r\n    if (!this.credentials.QueryPaymentStatusURL) {\r\n      this.toastr.warning('Please ask Administrator to configure CNP URL', 'URL required', this.toasterConfig);\r\n    } else {\r\n      this.paymentInProgress = true;\r\n      if (this.sessionId === tempId) {\r\n       // this.showLoaderMesage = true;\r\n        this.loaderIcon = Promise.resolve(true);\r\n        this.hstPayBtnMsg = 'OK';\r\n        this.sessionId = tempId;\r\n        //let paymentTrnsId = this.paymentService.GetPaymentTransactionTypeId(this.processPayment.Type);\r\n        const hostedpageRequest = this.paymentService.getCNPResponse(this.credentials, this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId).subscribe((res: any) => {\r\n          const jsonResp = JSON.parse(res);\r\n          if (jsonResp) {\r\n            this.showIFrame = false;\r\n            this.showPage = !this.showIFrame;\r\n           // this.prePayStatus = 'Payment';\r\n            if (jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.Approval) {\r\n              this.loaderIcon = Promise.resolve(false);\r\n              this.paymentSuccessFul = true;\r\n              this.payStatus = 'Success';\r\n              //this.paymentTable.find(o => o.payId == this.tempCNPPayId).payFailed = false;\r\n             // this.disableNextButton();\r\n              let amount = parseFloat(jsonResp.RESULT.APPROVEDAMOUNT).toFixed(2);\r\n              this.paymentTable.find(o => o.payId == this.currentPayId)['processedCNPCC'] = jsonResp.RESULT;\r\n              let CCTModel;\r\n              const receiptText = jsonResp.RESULT.RECEIPTTEXT;\r\n              const entryMethodMatch = receiptText.match(/Entry Method\\s+([^\\n]+)/);\r\n              const tempCCModel = {\r\n                VerifoneId: this.verifoneRecordId,\r\n                Amount: parseFloat(amount),\r\n                CreditCardNumber: jsonResp.RESULT.MASKEDCARDNUMBER,\r\n                ResponseCode: jsonResp.RESULT.ORIGINALRESPONSECODE,\r\n                ResponseMessage: jsonResp.RESULT.ORIGINALRESPONSEDESCRIPTION,\r\n                Card: this.keyedInTransaction ? \"Credit Card\": \"\",\r\n                // PaymentTransactionTypeId: 1,\r\n                TransactionDateTime: new Date(),\r\n                TransactionTypeId: jsonResp.RESULT.ORIGINALTRANSACTIONTYPE,\r\n                OrderId: jsonResp.RESULT.ORDERID,\r\n                VendorId: this.VendorId,\r\n                ProcessStatus: \"Completed\",\r\n                ApprovalCode: jsonResp.RESULT.APPROVALCODE,\r\n                PaymentTransactionTypeId:jsonResp.RESULT.TRANSACTIONID,\r\n                PaymentTransactionType: \"Payment Purchase\",\r\n                CreditCardType: jsonResp.RESULT.CARDBRAND,\r\n                EntryLegend:\"CNP\",\r\n                EntryMethod: entryMethodMatch ? entryMethodMatch[1].trim() : '',\r\n                ReceiptResponse: jsonResp.RESULT.RECEIPTTEXT\r\n              };\r\n\r\n              CCTModel = Object.assign(tempCCModel);\r\n              this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n              });\r\n              this.gotoPaymentSuccess(this.popUpPayment, amount);\r\n            } else if (jsonResp.RESULT.STATE == 'IN_PROGRESS' || (jsonResp.RESULT && jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.TransactionDoesNotExist && jsonResp.RESULT.RESPONSEDESCRIPTION == 'Invalid Reference Error: Transaction does not exist')) {\r\n              if (hostedpageRequest != null) {\r\n                hostedpageRequest.unsubscribe();\r\n              }\r\n              this.paymentSuccessFul = false;\r\n              this.payStatus = 'Failed';\r\n             // this.gotoCNPRetryLogic(this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId, this.paymentTable.find(o => o.payId == this.currentPayId).orderId, 'Sale', paymentTrnsId);\r\n            } else {\r\n              this.paymentSuccessFul = false;\r\n              this.paymentProcessing = false;\r\n              this.payStatus = 'Failed';\r\n              this.paymentTable.find(o => o.payId == this.currentPayId).payFailed = true;\r\n              jsonResp['PaymentModeId'] = EPaymentModes.HostedPage;\r\n              //this.saveCCTransactionFailureCase(jsonResp, jsonResp.RESULT && jsonResp.RESULT.RESPONSEDESCRIPTION ? jsonResp.RESULT.RESPONSEDESCRIPTION : 'Declined!', 'Sale', paymentTrnsId, this.paymentTable.find(o => o.payId == this.currentPayId).orderId);\r\n              if (jsonResp.RESULT && jsonResp.RESULT.RESPONSECODE && jsonResp.RESULT.RESPONSECODE == EOpenEdgeResponseCode.ImproperFieldData) {\r\n                if (jsonResp.RESULT.RESPONSEDESCRIPTION) {\r\n                  jsonResp.RESULT.RESPONSEDESCRIPTION = jsonResp.RESULT.RESPONSEDESCRIPTION + '. ' + 'Customer Name should be less than 50 characters!'\r\n                  this.toastr.warning(jsonResp.RESULT.RESPONSEDESCRIPTION, 'Warning', this.toasterConfig);\r\n                }\r\n              }\r\n              let CCTModel;\r\n              const tempCCModel = {\r\n                VerifoneId: this.verifoneRecordId,\r\n                CreditCardNumber: jsonResp.RESULT.MASKEDCARDNUMBER,\r\n                CardType: jsonResp.RESULT.CARDTYPE,\r\n                ResponseCode: jsonResp.RESULT.ORIGINALRESPONSECODE,\r\n                ResponseMessage: jsonResp.RESULT.ORIGINALRESPONSEDESCRIPTION,\r\n                Card: this.keyedInTransaction ? \"Credit Card\": \"\",\r\n                TransactionDateTime: new Date(),\r\n                OrderId: jsonResp.RESULT.ORDERID,\r\n                VendorId: this.VendorId,\r\n                ProcessStatus: \"Failed\",\r\n                PaymentTransactionTypeId:jsonResp.RESULT.TRANSACTIONID,\r\n                CreditCardType: jsonResp.RESULT.CARDTYPE\r\n              };\r\n              this.paymentFailReason = jsonResp.RESULT.ORIGINALRESPONSEDESCRIPTION;\r\n\r\n              CCTModel = Object.assign(tempCCModel);\r\n              this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n              });\r\n              this.gotoPaymentSuccess(this.popUpPayment, 0);\r\n              this.loaderIcon = Promise.resolve(false);\r\n            }\r\n          }\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n          this.tempCNPRes = {\r\n            PaymentModeId: EPaymentModes.HostedPage\r\n          }\r\n          this.paymentFailReason = 'Declined!';\r\n          this.showIFrame = false;\r\n          this.showPage = !this.showIFrame;\r\n          this.payStatus = 'Failed';\r\n          this.paymentStarted = false;\r\n          this.paymentTable.find(o => o.payId == this.currentPayId).payFailed = true;\r\n          this.toastr.error('Payment Failed', 'Failure');\r\n          this.gotoPaymentSuccess(this.popUpPayment, 0);\r\n          let CCTModel;\r\n          const tempCCModel = {\r\n            VerifoneId: this.verifoneRecordId,\r\n            Card: this.keyedInTransaction ? \"Credit Card\": \"\",\r\n            TransactionDateTime: new Date(),\r\n            OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId,\r\n            VendorId: this.VendorId,\r\n            ProcessStatus: \"Failed\"\r\n          };\r\n          CCTModel = Object.assign(tempCCModel);\r\n              this.paymentService.saveVerifoneUnSaved(CCTModel).subscribe((res: any) => {\r\n              });\r\n        });\r\n      } else {\r\n        this.sessionId = tempId;\r\n      }\r\n    }\r\n  }\r\n\r\n  gotoPaymentSuccess(template: TemplateRef<any>, amount) {\r\n    this.paymentStarted = true;\r\n    this.tillNowPaid += parseFloat(amount);\r\n    if (this.paymentSuccessFul) {\r\n      this.paymentTable.find(o => o.payId === this.currentPayId).payComplete = true;\r\n    }\r\n    ///////////////////////////////////////////////////////////\r\n    // if (!this.paymentSuccessFul) {\r\n    this.payModalRef = this.modalService.show(template, { class: 'modal-dialog-centered', backdrop: 'static', keyboard: false });\r\n\r\n    if (this.paymentSuccessFul) {\r\n      var obj = {\r\n        VerifoneId: this.verifoneRecordId,\r\n        PaymentSuccess: this.paymentSuccessFul,\r\n        OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId\r\n      }\r\n      this.PaymentResponse.emit(obj);\r\n    }\r\n    else{\r\n      var objFailure = {\r\n        VerifoneId: this.verifoneRecordId,\r\n        PaymentSuccess: this.paymentSuccessFul,\r\n        OrderId: this.paymentTable.find(o => o.payId == this.currentPayId).uniqueTransId\r\n      }\r\n      this.PaymentResponse.emit(objFailure);\r\n    }\r\n  }\r\n\r\n  afterpaymentSuccess(){\r\n    this.payModalRef.hide();\r\n    // if(this.isQDR){\r\n    //   this.sharedDataService.paymentSharedData = {};\r\n    //   const url = 'ops/qdr';\r\n    //   this.router.navigate([url]);\r\n    // }else{\r\n    // //    const url = 'ops/vendors/details/' + this.VendorId + '/3';\r\n    // //  this.router.navigate([url]);\r\n    // }\r\n  }\r\n\r\n  // gotoCNPRetryLogic(uniqTransId, orderId, transactionType, paymentTrnsId) {\r\n  //   this.paymentService.GetCreditCardTransactionById(orderId).subscribe((cctResponse: any) => {\r\n  //     let res = JSON.parse(cctResponse);\r\n  //     if (res.Reason == \"Attempting to Process\") {\r\n  //       const source = Observable.interval(this.paymentGetCCTStatusInterval * 1000);\r\n  //       this.subOpenEdgeHostedpage = source.subscribe(val => this.cnpTransactionStatus(uniqTransId, val, orderId, transactionType, paymentTrnsId));\r\n  //     } else {\r\n  //       this.paymentSuccessFul = false;\r\n  //       this.paymentProcessing = false;\r\n  //       this.retryTransactionStatusLoader = false;\r\n  //       this.payStatus = 'Failed';\r\n  //       this.isAnyPaymentProcessed();\r\n  //       this.paymentFailReason = 'Payment Status not received. Please Contact Administrator to check in Gateway Portal if Payment is Approved. If Yes, key in the Payment as Manual Authorization';\r\n  //       this.gotoPaymentSuccess(this.popUpPayment, 0);\r\n  //       this.loaderIcon = Promise.resolve(false);\r\n  //     }\r\n  //   }, err => {\r\n  //     this.paymentTable.find(o => o.payId == this.currentPayId).payFailed = true;\r\n  //     this.loaderIcon = Promise.resolve(false);\r\n  //     this.tempCNPRes['PaymentModeId'] = EPaymentModes.HostedPage;\r\n  //     this.saveCCTransactionFailureCase(this.tempCNPRes, 'Declined!', transactionType, paymentTrnsId, orderId);\r\n  //   });\r\n  // }\r\n\r\n  callTransactionComplete() {\r\n  //  this.showLoaderMesage = true;\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.transactionInitiated = true;\r\n  }\r\n\r\n  callCNP(amount, transType, payId) {\r\n    \r\n    if (!this.credentials.CardNotPresentURL) {\r\n      this.paymentStarted = false;\r\n      this.toastr.warning('Please ask Administrator to configure CNP URL', 'URL required', this.toasterConfig);\r\n      this.loaderIcon = Promise.resolve(false);\r\n    } else {\r\n      let rqsturl = 'https://ee.test.paygateway.com/HostPayService/v1/hostpay/transactions/';\r\n      if (this.isAutoPopulateBillingInfo && this.vendorInfo) {\r\n        this.setCNPvendorInfo(amount, transType, payId);\r\n      } else {\r\n        const tempOrderId = this.paymentTable.find(o => o.payId == payId).orderId;\r\n        this.paymentTable.find(o => o.payId == payId).uniqueTransId = tempOrderId;\r\n        this.requestParam =\r\n          \"<REQUEST>\" +\r\n          \"<XWEBID>\" + this.credentials.XWEBID + \"</XWEBID>\" +\r\n          \"<XWEBTERMINALID>\" + this.credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n          \"<XWEBAUTHKEY>\" + this.credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n          \"<TRANSACTIONTYPE>\" + transType + \"</TRANSACTIONTYPE>\" +\r\n          \"<AMOUNT>\" + amount + \"</AMOUNT>\" +\r\n          \"<CLERK></CLERK>\" +\r\n          \"<ORDERID>\" + tempOrderId + \"</ORDERID>\" +\r\n          \"<ECI>\" + EEdgeExpressECIType.Moto + \"</ECI>\" +\r\n          \"<HOSTPAYSETTING>\" +\r\n          \"<CARDBRAND>\" + this.facilityCreditCards + \"</CARDBRAND>\" +\r\n          \"<DISABLEFRAMING>FALSE</DISABLEFRAMING>\" +\r\n          \"<RECEIPTFORMAT>TEXT</RECEIPTFORMAT>\" +\r\n          \"<CUSTOMIZATION>\" +\r\n          \"<PAGE> \" +\r\n          this.openEdgeBillingFields +\r\n          \"</PAGE>\" +\r\n          \"<BRANDING>\" +\r\n          \"<BODY>\" +\r\n          \"<FONT-FAMILY> LATO,SANS-SERIF;</FONT-FAMILY>\" +\r\n          \"<FONT-SIZE>14px</FONT-SIZE>\" +\r\n          \"</BODY>\" +\r\n          \"<BTN>\" +\r\n          \"<BACKGROUND-COLOR>#3757C5;</BACKGROUND-COLOR>\" +\r\n          \"<FONT-SIZE>14PX;</FONT-SIZE>\" +\r\n          \"</BTN>\" +\r\n          \"<SPECIALCSS>\" +\r\n          \"<SECTION-HEADER-FONT-SIZE>18px</SECTION-HEADER-FONT-SIZE>\" +\r\n          \"<COLOR>#3757C5;</COLOR>\" +\r\n          \"</SPECIALCSS>\" +\r\n          \"</BRANDING>\" +\r\n          \"</CUSTOMIZATION>\" +\r\n          \"<POSDEVICE>\" +\r\n          \"<TYPE>KEYED</TYPE>\" +\r\n          \"</POSDEVICE>\" +\r\n          \"</HOSTPAYSETTING>\" +\r\n          \"<BILLINGPOSTALCODE> <REQUIRED>TRUE</REQUIRED> </BILLINGPOSTALCODE>\" +\r\n          \"</REQUEST>\";\r\n      }\r\n      this.paymentService.getCNPService(this.credentials.CardNotPresentURL, this.requestParam).subscribe((res: any) => {\r\n        this.loaderIcon = Promise.resolve(false);\r\n        const resultResponse = JSON.parse(res);\r\n        this.urlSafe = this.sanitizer.bypassSecurityTrustResourceUrl(resultResponse.RESULT.PAYPAGEURL);\r\n        this.showIFrame = true;\r\n        this.showPage = !this.showIFrame;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }, err => {\r\n        this.paymentStarted = false;\r\n        this.toastr.warning('Please ask Administrator to configure CNP URL', 'URL required', this.toasterConfig);\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n      );\r\n    }\r\n  }\r\n\r\n  getOpenEdgeTransactionStatus(orderId, payId, count, transactionType, paymentTrnsId) {\r\n    count = count + 1; //count start from 0\r\n    let maxTime = (this.paymentMaxWaitTime * 60) / this.paymentGetCCTStatusInterval;\r\n    if (count > maxTime) {\r\n      this.cancelRcmRequest(this.tempRcmRes.rcmSessionId, false);\r\n      this.retryTransactionStatusLoader = false;\r\n      this.paymentFailReason = \"Payment Status not received. Please Contact Administrator to check in Gateway Portal if Payment is Approved. If Yes, key in the Payment as Manual Authorization\";\r\n      if (this.openEdgeSub) {\r\n        this.openEdgeSub.unsubscribe();\r\n        this.openEdgeSub = null;\r\n      }\r\n      this.paymentTable.find(o => o.payId === payId).payFailed = true;\r\n      this.saveCCTransactionFailureCase(this.tempRcmRes.rcmResponse, this.paymentFailReason, transactionType, paymentTrnsId, orderId);\r\n    } else {\r\n      this.initiatingOpenEdgeQueryPaymentRequest(orderId, transactionType, paymentTrnsId, payId, false)\r\n    }\r\n  }\r\n\r\n  setOpenEdgeMandatory() {\r\n    this.openEdgeBillingFields = '';\r\n    var mandatoryField = '';\r\n    mandatoryField = `<BILLINGFIRSTNAME> <REQUIRED>FALSE</REQUIRED> </BILLINGFIRSTNAME>`;\r\n    mandatoryField += `<BILLINGLASTNAME> <REQUIRED>FALSE</REQUIRED> </BILLINGLASTNAME>`;\r\n    mandatoryField += `<BILLINGADDRESSONE> <REQUIRED>FALSE</REQUIRED> </BILLINGADDRESSONE>`;\r\n    mandatoryField += `<BILLINGADDRESSTWO> <REQUIRED>FALSE</REQUIRED><VISIBLE>FALSE</VISIBLE></BILLINGADDRESSTWO>`;\r\n    mandatoryField += `<BILLINGPOSTALCODE> <REQUIRED>TRUE</REQUIRED> </BILLINGPOSTALCODE>`;\r\n    mandatoryField += `<BILLINGSTATEORPROVINCE> <REQUIRED>FALSE</REQUIRED> </BILLINGSTATEORPROVINCE>`;\r\n    mandatoryField += `<BILLINGCITY> <REQUIRED>FALSE</REQUIRED> </BILLINGCITY>`;\r\n    mandatoryField += `<BILLINGCOUNTRYCODE> <REQUIRED>FALSE</REQUIRED> </BILLINGCOUNTRYCODE>`;\r\n    mandatoryField += `<BILLINGCUSTOMERTITLE> <REQUIRED>FALSE</REQUIRED> </BILLINGCUSTOMERTITLE>`;\r\n    mandatoryField += `<BILLINGMIDDLENAME> <REQUIRED>FALSE</REQUIRED> </BILLINGMIDDLENAME>`;\r\n    mandatoryField += `<BILLINGCOMPANY> <REQUIRED>FALSE</REQUIRED> <VISIBLE>FALSE</VISIBLE></BILLINGCOMPANY>`;\r\n\r\n    this.openEdgeBillingFields = mandatoryField;\r\n  }\r\n  \r\n  setCNPvendorInfo(amount, transType, payId) {\r\n   this.vendorInfo.Address =  this.vendorInfo.Address &&  this.vendorInfo.Address.length > 50 ?\r\n    this.vendorInfo.Address.substring(0, 50) : this.vendorInfo.Address;\r\n    let firstName = this.paymentService.replaceXMLEntity(this.vendorInfo.FirstName);\r\n    let middleName = this.paymentService.replaceXMLEntity(this.vendorInfo.MiddleName);\r\n    let lastName = this.paymentService.replaceXMLEntity(this.vendorInfo.LastName);\r\n    let address = this.paymentService.replaceXMLEntity(this.vendorInfo.Address);\r\n    let companyName = this.paymentService.replaceXMLEntity(this.vendorInfo.CompanyName);\r\n    let city = this.paymentService.replaceXMLEntity(this.vendorInfo.City);\r\n\r\n    const tempOrderId = this.paymentTable.find(o => o.payId == payId).orderId;\r\n    this.paymentTable.find(o => o.payId == payId).uniqueTransId = tempOrderId;\r\n    this.requestParam = \"<REQUEST>\" +\r\n      \"<XWEBID>\" + this.credentials.XWEBID + \"</XWEBID>\" +\r\n      \"<XWEBTERMINALID>\" + this.credentials.XWEBTERMINALID + \"</XWEBTERMINALID>\" +\r\n      \"<XWEBAUTHKEY>\" + this.credentials.XWEBAUTHKEY + \"</XWEBAUTHKEY>\" +\r\n      \"<TRANSACTIONTYPE>\" + transType + \"</TRANSACTIONTYPE>\" +\r\n      \"<AMOUNT>\" + amount + \"</AMOUNT>\" +\r\n      \"<BILLINGFIRSTNAME>\" + firstName + \"</BILLINGFIRSTNAME>\" +\r\n      \"<BILLINGMIDDLENAME>\" + middleName + \"</BILLINGMIDDLENAME>\" +\r\n      \"<BILLINGLASTNAME>\" + lastName + \"</BILLINGLASTNAME>\" +\r\n      \"<BILLINGADDRESS1>\" + address + \"</BILLINGADDRESS1>\" +\r\n      \"<BILLINGCOMPANY>\" + companyName + \"</BILLINGCOMPANY>\" +\r\n      \"<BILLINGCITY>\" + city + \"</BILLINGCITY>\" +\r\n      \"<BILLINGCOUNTRY>\" + this.vendorInfo.CountryCode + \"</BILLINGCOUNTRY>\" +\r\n      \"<BILLINGSTATE>\" + this.vendorInfo.StateCode??\"\" + \"</BILLINGSTATE>\" +\r\n      \"<BILLINGPOSTALCODE>\" + this.vendorInfo.PostalCode?? \"\" + \"</BILLINGPOSTALCODE>\" +\r\n      \"<CLERK></CLERK>\" +\r\n      \"<ORDERID>\" + tempOrderId + \"</ORDERID>\" +\r\n      \"<ECI>\" + EEdgeExpressECIType.Moto + \"</ECI>\" +\r\n      \"<HOSTPAYSETTING>\" +\r\n      \"<CARDBRAND>\" + this.facilityCreditCards + \"</CARDBRAND>\" +\r\n      \"<DISABLEFRAMING>FALSE</DISABLEFRAMING>\" +\r\n      \"<CUSTOMIZATION>\" +\r\n      \"<PAGE> \" +\r\n          this.openEdgeBillingFields +\r\n      \"</PAGE>\" +\r\n      \"<BRANDING>\" +\r\n      \"<BODY>\" +\r\n      \"<FONT-FAMILY> LATO,SANS-SERIF;</FONT-FAMILY>\" +\r\n      \"<FONT-SIZE>14px</FONT-SIZE>\" +\r\n      \"</BODY>\" +\r\n      \"<BTN>\" +\r\n      \"<BACKGROUND-COLOR>#3757C5;</BACKGROUND-COLOR>\" +\r\n      \"<FONT-SIZE>14PX;</FONT-SIZE>\" +\r\n      \"</BTN>\" +\r\n      \"<SPECIALCSS>\" +\r\n      \"<SECTION-HEADER-FONT-SIZE>18px</SECTION-HEADER-FONT-SIZE>\" +\r\n      \"<COLOR>#3757C5;</COLOR>\" +\r\n      \"</SPECIALCSS>\" +\r\n      \"</BRANDING>\" +\r\n      \"</CUSTOMIZATION>\" +\r\n      \"<POSDEVICE>\" +\r\n      \"<TYPE>KEYED</TYPE>\" +\r\n      \"</POSDEVICE>\" +\r\n      \"</HOSTPAYSETTING>\" +\r\n      \"</REQUEST>\";\r\n  } \r\n\r\n  onhstPayBtn(val) {\r\n    if (val == 'Cancel') {\r\n      this.ClosePaymentPage.emit()\r\n    }\r\n  }\r\n}\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div class=\"container-fluid\">\r\n    <div class=\"row\">\r\n        <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n            <app-rental-menu></app-rental-menu>\r\n        </div>\r\n        <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n            <div class=\"container\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-5 text-left mt-4\">\r\n                        <label class=\"mainHeading\">Vendor Registration</label>\r\n                    </div>\r\n                    <div class=\"col-7 text-right mt-4\">\r\n                        <label class=\"mainHeading\">{{marketName}}</label>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                        <button #btnContact class=\"btn btnMain mr-3 mt-2\" routerLinkActive=\"activeTab\">Contact\r\n                            Information</button>\r\n                        <button #btnOnlineAccess class=\"btn btnMain mr-3 mt-2\" routerLinkActive=\"activeTab\">Online\r\n                            Access</button>\r\n                        <button #btnPayment class=\"btn btnMain mt-2\" *ngIf=\"this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration\">Payment</button>\r\n                    </div>\r\n                </div>\r\n                <div #divContactInfo class=\"bgWghite shadow pt-2 mt-2\"\r\n                    [ngStyle]=\"{ display: showContactInfo ? 'block' : 'none' }\">\r\n                    <div class=\"container\" [formGroup]=\"VendorForm\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-lg-4 pt-3\">\r\n                                <label for=\"txtFirstName\" i18n><span *ngIf=\"VendorForm.get('FirstName').hasError('required')\">*</span>First Name</label>\r\n                                <input id=\"txtFirstName\" class=\"form-control\" type=\"text\" #VendorFirstName\r\n                                    formControlName=\"FirstName\" required>\r\n                                <small style=\"color: red;\" *ngIf=\"VendorForm.get('FirstName').hasError('required')\"\r\n                                    i18n>* required </small>\r\n                                <small style=\"color: red;\" *ngIf=\"VendorForm.get('FirstName').hasError('maxlength')\"\r\n                                    i18n>* max length exceeded\r\n                                </small>\r\n                            </div>\r\n                            <div class=\"col-lg-4 pt-3\"\r\n                                *ngIf=\"this.VendorGeneralSetting.VendorNameFormat.includes('Middle Name')\">\r\n                                <label for=\"txtMiddleName\" i18n>Middle Name</label>\r\n                                <input id=\"txtMiddleName\" class=\"form-control\" type=\"text\" formControlName=\"MiddleName\">\r\n                                <small style=\"color: red;\" *ngIf=\"VendorForm.get('MiddleName').hasError('maxlength')\"\r\n                                    i18n>* max length exceeded\r\n                                </small>\r\n                            </div>\r\n                            <div class=\"col-lg-4 pt-3\"\r\n                                *ngIf=\"this.VendorGeneralSetting.VendorNameFormat.includes('Last Name')\">\r\n                                <label for=\"txtLastName\" i18n>Last Name</label>\r\n                                <input id=\"txtLastName\" class=\"form-control\" type=\"text\" formControlName=\"LastName\">\r\n                                <small style=\"color: red;\" *ngIf=\"VendorForm.get('LastName').hasError('maxlength')\"\r\n                                    i18n>* max length exceeded\r\n                                </small>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('Address').hasError('required')\">*</span>Address</label>\r\n                                    <input id=\"txtAddress\" class=\"form-control\" type=\"text\" formControlName=\"Address\">\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('Address').hasError('maxlength')\"\r\n                                        i18n>* max length exceeded </small>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('Address').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('City').hasError('required')\">*</span>City</label>\r\n                                    <input id=\"txtCity\" class=\"form-control\" type=\"text\" formControlName=\"City\">\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('City').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('State').hasError('required')\">*</span>State/ Province</label>\r\n                                    <!-- <ejs-dropdownlist id=\"ddlState\" *ngIf=\"showStateDropDown\" tabindex=\"9\"\r\n                                        [dataSource]=\"stateList\" [fields]=\"StateDropDownfields\"\r\n                                        [placeholder]=\"'Select State'\" [popupHeight]=\"200\"\r\n                                        filterBarPlaceholder=\"Search for State/Province\" formControlName=\"State\">\r\n                                    </ejs-dropdownlist> -->\r\n                                    <ejs-combobox id=\"ddlState\" *ngIf=\"showStateDropDown\" tabindex=\"9\"\r\n                                    [dataSource]=\"stateList\" [fields]=\"StateDropDownfields\"\r\n                                    [placeholder]=\"'Select State'\" [popupHeight]=\"200\"\r\n                                    filterBarPlaceholder=\"Search for State/Province\" formControlName=\"State\"></ejs-combobox>\r\n                                    <input type=\"text\" *ngIf=\"!showStateDropDown\" maxlength=\"2\" tabindex=\"9\"\r\n                                        class=\"form-control\" formControlName=\"State\">\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('State').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('CountryCode').hasError('required')\">*</span>Country</label>\r\n                                    <select id=\"ddlCountry\" class=\"form-control\" formControlName=\"CountryCode\"\r\n                                        tabindex=\"11\" (change)=\"onCountryChange()\">\r\n                                        <option *ngFor=\"let ct of countryList\" [value]=\"ct.Code\">{{ct.Name}}</option>\r\n                                    </select>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('ZipCode').hasError('required')\">*</span>Zip/Postal Code</label>\r\n                                    <ejs-maskedtextbox [mask]=\"ZipCodeMask\" tabindex=\"13\" name=\"ZipCode\" id=\"ZipCode\"\r\n                                        formControlName=\"ZipCode\"></ejs-maskedtextbox>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('ZipCode').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('WorkPhone').hasError('required')\">*</span>Work Phone</label>\r\n                                    <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"WorkPhone\"\r\n                                        id=\"telephone\" formControlName=\"WorkPhone\"></ejs-maskedtextbox>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('WorkPhone').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('CellPhone').hasError('required')\">*</span>Cell Phone</label>\r\n                                    <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"telephone\"\r\n                                        id=\"telephone\" formControlName=\"CellPhone\"></ejs-maskedtextbox>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('CellPhone').hasError('minlength')\"\r\n                                        i18n>* invalid Cell Phone Number</small>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('CellPhone').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('Email').hasError('required')\">*</span>Email</label>\r\n                                    <input id=\"txtEmail\" class=\"form-control\" type=\"text\" formControlName=\"Email\">\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('Email').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('DriverLicenseNumber').hasError('required')\">*</span>Drivers License</label>\r\n                                    <input id=\"txtDriverLicense\" class=\"form-control\" type=\"text\"\r\n                                        formControlName=\"DriverLicenseNumber\">\r\n                                    <small style=\"color: red;\"\r\n                                        *ngIf=\"VendorForm.get('DriverLicenseNumber').hasError('required')\" i18n>*\r\n                                        required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('DLExpiryDate').hasError('required')\">*</span>DL Expiry Date</label>\r\n                                    <!-- <ejs-datepicker format='MM/dd/yyyy' class=\"form-control\" [allowEdit]=false \r\n                                        formControlName=\"DLExpiryDate\"\r\n                                        i18n-placeholder=\"DL Expiry Date\" placeholder=\"DL Expiry Date\"></ejs-datepicker> -->\r\n                                    <input type=\"date\" class=\"form-control\" formControlName=\"DLExpiryDate\"\r\n                                        [placeholder]=\"'DL Expiry Date'\" i18n-placeholder=\"DL Expiry Date\">\r\n                                    <div>\r\n                                        <small style=\"color: red;\" *ngIf=\"VendorForm.get('DLExpiryDate').invalid\" i18n>*\r\n                                            required </small>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('ResaleNumber').hasError('required')\">*</span>Resale #</label>\r\n                                    <input id=\"txtResaleNumber\" class=\"form-control\" type=\"text\"\r\n                                        formControlName=\"ResaleNumber\">\r\n                                    <small style=\"color: red;\"\r\n                                        *ngIf=\"VendorForm.get('ResaleNumber').hasError('required')\" i18n>* required\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('BusinessLicenseNumber').hasError('required')\">*</span>Business License #</label>\r\n                                    <input id=\"txtBusinessLicenseNumber\" class=\"form-control\" type=\"text\"\r\n                                        formControlName=\"BusinessLicenseNumber\">\r\n                                    <small style=\"color: red;\"\r\n                                        *ngIf=\"VendorForm.get('BusinessLicenseNumber').hasError('required')\" i18n>*\r\n                                        required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('ProductPriority').hasError('required')\">*</span> Primary Selling Product</label>\r\n                                    <!-- <ejs-dropdownlist id=\"ProductPriority\" [dataSource]=\"productList\"\r\n                                        [fields]=\"ProductDropDownfields\" [popupHeight]=\"200\" formControlName=\"ProductPriority\"\r\n                                        (valueChange)=\"primaryproductchange($event)\"> -->\r\n                                    <ejs-combobox id=\"ProductPriority\" [dataSource]=\"productList\"\r\n                                    [fields]=\"ProductDropDownfields\" [popupHeight]=\"200\" formControlName=\"ProductPriority\"\r\n                                    (valueChange)=\"primaryproductchange($event)\"></ejs-combobox>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('ProductPriority').invalid\" i18n>*\r\n                                        required</small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('VendorType').hasError('required')\">*</span> Vendor Type</label>\r\n                                    <ejs-dropdownlist id=\"ddlType\" [dataSource]=\"VendorTypeList\"\r\n                                        [fields]=\"{text:'VtyTxtVendorType',value:'VtyTxtVendorType'}\"\r\n                                        formControlName=\"VendorType\" tabindex=\"11\" placeholder=\"Select Vendor Type\">\r\n\r\n                                    </ejs-dropdownlist>\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('VendorType').invalid\" i18n>*\r\n                                        required</small>\r\n\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('SSN').hasError('required')\">*</span>SSN</label>\r\n                                    <ejs-maskedtextbox id=\"txtSSN\" [mask]=\"SSNMask\" tabindex=\"13\" name=\"txtSSN\"\r\n                                        formControlName=\"SSN\"></ejs-maskedtextbox>\r\n                                    <small style=\"color: red;\"\r\n                                        *ngIf=\"VendorForm.get('SSN').hasError('required')\" i18n>*\r\n                                        required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\"><span *ngIf=\"VendorForm.get('TaxID').hasError('required')\">*</span>Tax ID</label>\r\n                                    <input id=\"txtTaxID\" class=\"form-control\" type=\"text\" formControlName=\"TaxID\" maxlength=\"20\">\r\n                                    <small style=\"color: red;\" *ngIf=\"VendorForm.get('TaxID').hasError('required')\" i18n>*\r\n                                        required </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-right mb-3\">\r\n                                <button class=\"btn btn-outline-primary mt-3 mr-2\" (click)=\"Oncancel()\">Cancel</button>\r\n                                <button class=\"btn btn-primary mt-3\" (click)=\"ValidationVendorDetails()\">Next</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div #divOnlineAccess class=\"bgWghite shadow pt-2 mt-2\"\r\n                    [ngStyle]=\"{ display: showOnlineAccess ? 'block' : 'none' }\">\r\n                    <div class=\"container\" [formGroup]=\"OnlineAccessForm\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*User Name</label>\r\n                                    <input id=\"txtUserName\" class=\"form-control\" type=\"text\" formControlName=\"UserName\">\r\n                                    <small\r\n                                        *ngIf=\"OnlineAccessForm.get('UserName').invalid && (OnlineAccessForm.get('UserName').dirty || OnlineAccessForm.get('UserName').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <span *ngIf=\"OnlineAccessForm.get('UserName').hasError('required')\" i18n>*\r\n                                            required</span>\r\n                                        <span *ngIf=\"OnlineAccessForm.get('UserName').hasError('minlength')\" i18n>*\r\n                                            minimum length is 6 characters</span>\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*Password</label>\r\n                                    <input id=\"txtPassword\" class=\"form-control\" type=\"password\"\r\n                                        formControlName=\"Password\">\r\n                                    <small\r\n                                        *ngIf=\"OnlineAccessForm.get('Password').errors && (OnlineAccessForm.get('Password').dirty || OnlineAccessForm.get('Password').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.required\">*password is\r\n                                            required.</div>\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.minLength\">*password must be\r\n                                            at least 6 characters long.</div>\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.maxlength\">*password must be\r\n                                            at least 20 characters long.</div>\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.specialChar\">*password must\r\n                                            contain at least one special\r\n                                            character.</div>\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.upperCase\">*password must\r\n                                            contain at least one uppercase letter\r\n                                            .</div>\r\n                                        <div *ngIf=\"OnlineAccessForm.get('Password').errors.lowerCase\">*password must\r\n                                            contain at least one lowercase letter\r\n                                            .</div>\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*Confirm Password</label>\r\n                                    <input id=\"txtConfirmPassword\" class=\"form-control\" type=\"password\"\r\n                                        formControlName=\"ConfirmPassword\">\r\n                                    <small\r\n                                        *ngIf=\"OnlineAccessForm.get('ConfirmPassword').errors && (OnlineAccessForm.get('ConfirmPassword').dirty || OnlineAccessForm.get('ConfirmPassword').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <div *ngIf=\"OnlineAccessForm.get('ConfirmPassword').hasError('required')\">\r\n                                            *confirm password is\r\n                                            required.</div>\r\n                                    </small>\r\n                                    <small\r\n                                        *ngIf=\"(OnlineAccessForm.get('ConfirmPassword').dirty || OnlineAccessForm.get('ConfirmPassword').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <div\r\n                                            *ngIf=\"OnlineAccessForm.get('Password').value !== OnlineAccessForm.get('ConfirmPassword').value\">\r\n                                            *Confirm password does not match.\r\n                                        </div>\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*Security Question</label>\r\n                                    <select id=\"txtSecurityQuestion\" class=\"form-control\"\r\n                                        formControlName=\"SecurityQuestion\" tabindex=\"11\">\r\n                                        <option *ngFor=\"let sq of securityQuestions\" [value]=\"sq.ID\">\r\n                                            {{sq.SecurityQuestion}}</option>\r\n                                    </select>\r\n                                    <small\r\n                                        *ngIf=\"(OnlineAccessForm.get('SecurityQuestion').dirty || OnlineAccessForm.get('SecurityQuestion').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <div *ngIf=\"OnlineAccessForm.get('SecurityQuestion').hasError('required')\">\r\n                                            *security question is\r\n                                            required.</div>\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*Answer</label>\r\n                                    <input id=\"txtAnswer\" class=\"form-control\" type=\"text\" formControlName=\"Answer\">\r\n                                </div>\r\n                                <small\r\n                                    *ngIf=\"(OnlineAccessForm.get('Answer').dirty || OnlineAccessForm.get('Answer').touched)\"\r\n                                    style=\"color: red;\">\r\n                                    <div *ngIf=\"OnlineAccessForm.get('Answer').hasError('required')\">*security answer is\r\n                                        required.</div>\r\n                                </small>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\"\r\n                            *ngIf=\"this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration\">\r\n                            <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                <div>\r\n                                    <label class=\"mb-0\">*Registeration Fee</label>\r\n                                    <input id=\"txtRegistrationFee\" class=\"form-control text-right\" type=\"text\"\r\n                                        [disabled]=\"true\" [value]=\"OnlineAccessForm.get('RegistrationFee').value\">\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\"\r\n                            *ngIf=\"this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration\">\r\n                            <div class=\"col-12 text-left mt-3\">\r\n                                <div class=\"form-check\">\r\n                                    <input class=\"form-check-input\" type=\"checkbox\" id=\"chkCreditCard\"\r\n                                        formControlName=\"registrationPaymentCheck\">\r\n                                    <label class=\"form-check-label\" for=\"chkCreditCard\">\r\n                                        I authorize ABC Flea Market to charge this amount to my Credit Card. Upon\r\n                                        authorization and full payment by the issuing card company, ABC Flea Market will\r\n                                        submit a confirmation number, as verification of charged transaction, to the\r\n                                        above named cardholder.\r\n                                    </label>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-left mt-2\">\r\n                                <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                                    class=\"img-fluid\" />\r\n                                &nbsp;<a class=\"rules\">Click here to read the Rules and Regulations</a>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-left mt-3\">\r\n                                <div class=\"form-check\">\r\n                                    <input class=\"form-check-input\" type=\"checkbox\" id=\"chkRules\"\r\n                                        formControlName=\"registrationRuleReadCheck\">\r\n                                    <label class=\"form-check-label\" for=\"chkRules\">\r\n                                        By checking this box, I acknowledge that I have read, understand, and agree to\r\n                                        the rules and regulations, and will Abide by them. Please visit the office for a\r\n                                        copy of the rules and regulations\r\n                                    </label>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-right mb-3\">\r\n                                <button class=\"btn btn-outline-primary mt-3 mr-1\"\r\n                                    (click)=\"displayContactInfo()\">Back</button>\r\n                                <button class=\"btn btn-outline-primary mt-3 mr-1\" (click)=\"Oncancel()\">Cancel</button>\r\n                                <button class=\"btn btn-primary mt-3 mr-1\"\r\n                                    [disabled]=\"(this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration && !OnlineAccessForm.get('registrationPaymentCheck').value) || !OnlineAccessForm.get('registrationRuleReadCheck').value\"\r\n                                    (click)=\"OnVendorRegister($event)\">Register</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div #divRegisterPayment class=\"bgWghite shadow pt-2 mt-2\" *ngIf=\"processPayment\"\r\n                    [ngStyle]=\"{ display: showregisterpayment ? 'block' : 'none' }\">\r\n                    <app-payment [keyedInTransaction]=\"true\" [isQDR]=\"IsQDR\" [MarketId]=\"marketId\"\r\n                        [CCAmount]=\"registrationFee.RegistrationFee\" [TransactionType]=\"transactionType\"\r\n                        [voidPayment]=\"false\" [VerifoneId]=\"verifoneId\" (ClosePaymentPage)=\"ClosePaymentPage()\"\r\n                        (PaymentResponse)=\"PaymentResponse($event)\"></app-payment>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, ElementRef, Input, Renderer2, ViewChild } from '@angular/core';\r\nimport { GeneralService } from 'src/app/services/General.service';\r\nimport { IVendorGeneralSettings } from 'src/app/Shared/models/SettingsModel';\r\nimport { FormBuilder, FormControl, FormGroup, RequiredValidator, Validators } from '@angular/forms';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ICountry, IStates, RegistrationFeeModel } from 'src/app/Shared/models/GeneralModel';\r\nimport { Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport Swal from 'sweetalert2';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\nimport { IVendorInfo, IVendorProductModel, IVendorProductImageContents, IVendorProductImages, IVendorLoginInfoModel } from 'src/app/Shared/models/VendorModel';\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport { PaymentService } from 'src/app/services/paymentService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\n@Component({\r\n  selector: 'app-vendor-registration',\r\n  templateUrl: './vendor-registration.component.html',\r\n  styleUrls: ['./vendor-registration.component.scss']\r\n})\r\nexport class VendorRegistrationComponent {\r\n  showContactInfo: boolean = true;\r\n  showOnlineAccess: boolean = false;\r\n  showregisterpayment: boolean = false;\r\n  @ViewChild('btnContact') btnContact!: ElementRef;\r\n  @ViewChild('btnOnlineAccess') btnOnlineAccess!: ElementRef;\r\n  @ViewChild('btnPayment') btnPayment!: ElementRef;\r\n  private subscriptions: Subscription[] = [];\r\n  IsQDR = false;\r\n  transactionType = \"CREDITSALE\";\r\n  verifoneId = \"\";\r\n  countries: any;\r\n  VendorForm: FormGroup;\r\n  maxDate: Date;\r\n  ProductPriority: FormGroup;\r\n  VendorProductForm: FormGroup;\r\n  OnlineAccessForm: FormGroup;\r\n  countryList: ICountry[];\r\n  stateList: IStates[];\r\n  VendorProductsList: IVendorProductModel[] = [];\r\n  VendorProductsImageList: IVendorProductImages[] = [] as IVendorProductImages[];\r\n  VendorProductsImageContentList: IVendorProductImageContents[] = [] as IVendorProductImageContents[];\r\n  VendorTypeList = [];\r\n  public ProductDropDownfields: Object = { text: 'ProductName', value: 'ProductId' };\r\n  public StateDropDownfields: Object = { text: 'StateCode', value: 'StateCode' };\r\n  filterSettings: Object = { ignoreCase: true, filterType: 'Contains' };\r\n  public PhoneNumberMask: String = '000-000-0000';\r\n  public ZipCodeMask: String = '00000-0000';\r\n  public PhoneEXTMask: String = '000';\r\n  public SSNMask: String = '000-00-0000';\r\n  VendorGeneralSetting: IVendorGeneralSettings = {} as IVendorGeneralSettings;\r\n  response;\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  @Input() VId;\r\n  showStateDropDown: boolean;\r\n  public loaderIcon: Promise<boolean>;\r\n  securityQuestions: any[];\r\n  marketId: any;\r\n  webRentalSetting: any;\r\n  productList: any[];\r\n  registrationFee: RegistrationFeeModel;\r\n  vendorLoginData: IVendorLoginInfoModel;\r\n  validationResponse: any;\r\n  DisableRegisterBtn: boolean = true;\r\n  vendorinfo: IVendorInfo;\r\n  paymentData: any;\r\n  voidPayment = false;\r\n  processPayment = false;\r\n  paymentGatewayCredentials: any;\r\n  processCreditCardOnline: any;\r\n  vendorId: any = 0;\r\n  obj: any = {};\r\n  marketName = \"\";\r\n  constructor(private renderer: Renderer2,\r\n    private route: ActivatedRoute,\r\n    private toastr: ToastrService,\r\n    private formBuilder: FormBuilder,\r\n    private generalService: GeneralService,\r\n    private marketInfoService: MarketInfoService,\r\n    private vendorService: VendorService,\r\n    private paymentService: PaymentService,\r\n    private rentalService: RentalService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private router: Router) {\r\n    const today = new Date();\r\n    this.maxDate = today;\r\n    this.VendorForm = this.formBuilder.group(\r\n      {\r\n        Address: ['', [Validators.maxLength(50)]],\r\n        BusAddress: ['', [Validators.maxLength(50)]],\r\n        BusCity: [''],\r\n        BusState: [''],\r\n        BusTelePhone: [''],\r\n        BusZipCode: ['', [Validators.maxLength(10)]],\r\n        CellPhone: ['', [Validators.minLength(10), Validators.maxLength(12)]],\r\n        City: [''],\r\n        CompanyName: ['', [Validators.maxLength(50)]],\r\n        Country: [''],\r\n        CountryCode: [0],\r\n        DLExpiryDate: [null],\r\n        DriverLicenseNumber: [''],\r\n        ResaleNumber: [''],\r\n        BusinessLicenseNumber: [''],\r\n        Email: ['', [Validators.maxLength(40), Validators.pattern('^(([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,}))([\\\\s]?[,;]{1}[\\\\s]?([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,})){0,4}$')]],\r\n        FirstName: ['', [Validators.required, Validators.maxLength(50)]],\r\n        LastName: ['', [Validators.maxLength(50)]],\r\n        MarketId: [0, [Validators.required]],\r\n        MarketVendorId: [0, [Validators.required]],\r\n        MiddleName: ['', [Validators.maxLength(50)]],\r\n        State: [''],\r\n        VendorId: [0, [Validators.required]],\r\n        VendorSince: [Date],\r\n        VendorType: ['', Validators.required],\r\n        WorkPhone: [''],\r\n        TelePhone: [''],\r\n        ZipCode: [''],\r\n        ProductPriority: ['', [Validators.required]],\r\n        SSN: [''],\r\n        TaxID: ['']\r\n      });\r\n\r\n    this.ProductPriority = this.formBuilder.group(\r\n      {\r\n        VProductId: [0, Validators.required],\r\n        Priority: [false],\r\n        VendorId: [0, Validators.required]\r\n      }\r\n    );\r\n    this.VendorProductForm = this.formBuilder.group(\r\n      {\r\n        VProductId: [0, Validators.required],\r\n        ProductId: [0, Validators.required],\r\n        ProductCategoryId: [0, Validators.required],\r\n        ProductCategory: ['', Validators.required],\r\n        ProductName: ['', Validators.required],\r\n        Priority: [false, Validators.required]\r\n      }\r\n    );\r\n    const passwordValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n      const password = control.value;\r\n      const minLength = 6;\r\n      const hasSpecialChar = /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+/;\r\n      const hasUpperCase = /[A-Z]+/;\r\n      const hasLowerCase = /[a-z]+/;\r\n\r\n      // Check the password against the conditions\r\n      if (password.length < minLength) {\r\n        return { minLength: true };\r\n      }\r\n      if (!hasSpecialChar.test(password)) {\r\n        return { specialChar: true };\r\n      }\r\n      if (!hasUpperCase.test(password)) {\r\n        return { upperCase: true };\r\n      }\r\n      if (!hasLowerCase.test(password)) {\r\n        return { lowerCase: true };\r\n      }\r\n\r\n      return null;\r\n    };\r\n\r\n    this.OnlineAccessForm = this.formBuilder.group(\r\n      {\r\n        UserName: ['', [Validators.maxLength(16), Validators.required]],\r\n        Password: ['', [Validators.required, Validators.minLength(6), Validators.maxLength(20), passwordValidator]],\r\n        ConfirmPassword: ['', Validators.required],\r\n        SecurityQuestion: ['', Validators.required],\r\n        Answer: ['', Validators.required],\r\n        RegistrationFee: [],\r\n        registrationPaymentCheck: new FormControl(false),\r\n        registrationRuleReadCheck: new FormControl(false),\r\n      });\r\n\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.marketInfoService.setMarketId(this.marketId);\r\n    });\r\n    this.getMarketDetails();\r\n    this.getWebRentalSetting(this.marketId);\r\n    this.getVendorGeneralSettings();\r\n    this.getCountries();\r\n    this.getStates();\r\n    this.getSecurityQuestion();\r\n    this.getallproducts(this.marketId);\r\n    this.getVendorTypes();\r\n    this.RegistrationFee(this.marketId);\r\n    this.getCCCredentials();\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getCountries() {\r\n    const sub = this.generalService.getCountries().subscribe((response: ICountry[]) => {\r\n      this.countryList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n\r\n  ngAfterViewInit() {\r\n    this.renderer.setStyle(this.btnContact.nativeElement, 'background-color', '#DDEBFC');\r\n    this.VendorForm.patchValue({\r\n      CountryCode: this.countryList[0].Code\r\n    });\r\n    this.onCountryChange();\r\n  }\r\n\r\n  displayContactInfo() {\r\n    this.showContactInfo = true;\r\n    this.showOnlineAccess = false;\r\n    this.showregisterpayment = false;\r\n    this.renderer.setStyle(this.btnContact.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnOnlineAccess.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  displayOnlineAccess() {\r\n    this.showContactInfo = false;\r\n    this.showOnlineAccess = true;\r\n    this.showregisterpayment = false;\r\n    this.renderer.setStyle(this.btnOnlineAccess.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnContact.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  displayRegisterPayment() {\r\n    this.showContactInfo = false;\r\n    this.showOnlineAccess = false;\r\n    this.showregisterpayment = true;\r\n    this.renderer.setStyle(this.btnOnlineAccess.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnContact.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', '#DDEBFC');\r\n  }\r\n\r\n  onCountryChange() {\r\n    this.showStateDropDown = true;\r\n    if (this.VendorForm.value['CountryCode'] == 2) {\r\n      this.showStateDropDown = false;\r\n    }\r\n  }\r\n\r\n  getStates() {\r\n    const sub = this.generalService.getUSStates().subscribe((response: IStates[]) => {\r\n      this.stateList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorGeneralSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.subscriptions.push(this.marketInfoService.getCurrentMarketVendorGeneralSettings(this.marketId).subscribe((res: any) => {\r\n      \r\n      if (res) {\r\n        this.VendorGeneralSetting = {\r\n          IsVendorIdManual : res.SpecifyVendorID,\r\n          VendorAddressMandatory : res.VendAddressMandatory,\r\n          AllowAbsenteeRefund : res.BoothStatusRefund,\r\n          TermForLease : res.LeaseLabel,\r\n          DefaultProductEnabled : res.DefaultProductSelected,\r\n          Product : res.ProductId,\r\n          ResaleNumberRequired : res.ResaleNumberRequired,\r\n          DaysToSellWithoutResaleNo : res.DaysSellWithoutResaleNumber,\r\n          BusinessLicenseNumberReq : res.BusinessLicenseNumberRequired,\r\n          DaysToSellWithoutBusinessLicenseNo : res.DaysSellWithoutBusiLicNumber,\r\n          AlphaNumericField1Reqd : res.AlphaNumericField1Reqd,\r\n          AlphaNumericField2Reqd : res.AlphaNumericField2Reqd,\r\n          AlphaNumericField1Name : res.AlphaNumericField1Name,\r\n          AlphaNumericField2Name : res.AlphaNumericField2Name,\r\n          NumericField1Reqd : res.NumericField1Reqd,\r\n          NumericField2Reqd : res.NumericField2Reqd,\r\n          NumericField1Name : res.NumericField1Name,\r\n          NumericField2Name : res.NumericField2Name,\r\n          VendorNameFormat : res.VendorNamingConvention,\r\n          VendorNameFormatId : res.VendorNamingConventionId,\r\n          BoothTerm : res.BoothTerm\r\n        }\r\n        if(!this.VendorGeneralSetting.IsVendorIdManual){\r\n          this.VendorForm.get('MarketVendorId').disable(); \r\n        }\r\n\r\n        if(this.VendorGeneralSetting.VendorAddressMandatory){\r\n\r\n          this.VendorForm.get('City').setValidators([Validators.required]);\r\n          this.VendorForm.get('ZipCode').setValidators([Validators.required]);\r\n          this.VendorForm.get('State').setValidators([Validators.required]);\r\n          this.VendorForm.get('Address').setValidators([Validators.required]);\r\n\r\n          this.VendorForm.get('City').updateValueAndValidity();\r\n          this.VendorForm.get('ZipCode').updateValueAndValidity();\r\n          this.VendorForm.get('State').updateValueAndValidity();\r\n          this.VendorForm.get('Address').updateValueAndValidity();\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n\r\n  getVendorTypes() {\r\n    const sub = this.vendorService.GetVendorTypes(this.marketId).subscribe((response: IStates[]) => {\r\n      this.VendorTypeList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getSecurityQuestion() {\r\n    this.generalService.GetSecurityQuestion().subscribe((response) => {\r\n      if (response) {\r\n        this.securityQuestions = response.body;\r\n      }\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  getWebRentalSetting(marketId: any) {\r\n    this.marketInfoService.getWebRentalSetting(marketId).subscribe((response) => {\r\n      this.webRentalSetting = response;\r\n      if (this.webRentalSetting.MandatoryFields!=\"\"){\r\n        const mandatoryFields = this.webRentalSetting.MandatoryFields.split(\",\").map(Number);\r\n        console.log(\"mendatory\",mandatoryFields)\r\n        if (mandatoryFields.includes(91)){\r\n          this.VendorForm.get('WorkPhone').setValidators([Validators.required]);\r\n          this.VendorForm.get('WorkPhone').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(92)) {\r\n          this.VendorForm.get('DriverLicenseNumber').setValidators([Validators.required]);\r\n          this.VendorForm.get('DriverLicenseNumber').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(94)) {\r\n          this.VendorForm.get('SSN').setValidators([Validators.required]);\r\n          this.VendorForm.get('SSN').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(95)) {\r\n          this.VendorForm.get('TaxID').setValidators([Validators.required]);\r\n          this.VendorForm.get('TaxID').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(93)) {\r\n          this.VendorForm.get('DLExpiryDate').setValidators([Validators.required]);\r\n          this.VendorForm.get('DLExpiryDate').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(96)) {\r\n          this.VendorForm.get('ResaleNumber').setValidators([Validators.required]);\r\n          this.VendorForm.get('ResaleNumber').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(97)) {\r\n          this.VendorForm.get('BusinessLicenseNumber').setValidators([Validators.required]);\r\n          this.VendorForm.get('BusinessLicenseNumber').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(98)) {\r\n          this.VendorForm.get('CellPhone').setValidators([Validators.required]);\r\n          this.VendorForm.get('CellPhone').updateValueAndValidity();\r\n        }\r\n        if (mandatoryFields.includes(99)) {\r\n          this.VendorForm.get('Email').setValidators([Validators.required]);\r\n          this.VendorForm.get('Email').updateValueAndValidity();\r\n        }\r\n      }\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  getallproducts(marketId: any) {\r\n\r\n    this.subscriptions.push(this.marketInfoService.GetAllMarketProducts(marketId).subscribe((res: any) => {\r\n      this.productList = [];\r\n      res.map((el, i) => {\r\n        const ob = {\r\n          ProductId: el.ProductId,\r\n          ProductName: el.ProductName,\r\n          ProductCategory: el.ProductCategory,\r\n          ProductCategoryId: el.ProductCategoryId,\r\n          IsInActive: el.IsInActive,\r\n          CompanyProductId: el.CompanyProductId,\r\n        }\r\n\r\n        this.productList.push(ob);\r\n\r\n      });\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n  }\r\n\r\n  RegistrationFee(marketId: any) {\r\n    this.marketInfoService.RegistrationFee(marketId).subscribe((res: any) => {\r\n      this.registrationFee = res;\r\n      this.OnlineAccessForm.patchValue(\r\n        {\r\n          RegistrationFee: this.registrationFee.RegistrationFee.toString() != null ? this.customCurrency.transform(String(this.registrationFee.RegistrationFee)) : this.customCurrency.transform(\"0.00\"),\r\n        }\r\n      );\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  ValidationVendorDetails(): void {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (this.VendorForm.value['FirstName'].trim() == '') {\r\n      this.toastr.error($localize`Vendor first name can't be empty`, $localize`Error`, this.toasterConfig)\r\n      this.loaderIcon = Promise.resolve(false);\r\n      return;\r\n    }\r\n    this.vendorinfo = {\r\n      Address: this.VendorForm.get('Address').value,\r\n\r\n      BusAddress: null,\r\n      BusCity: null,\r\n      BusState: null,\r\n      BusTelePhone: null,\r\n      BusZipCode: null,\r\n      CellPhone: this.VendorForm.get('CellPhone').value,\r\n      City: this.VendorForm.get('City').value,\r\n\r\n      CompanyName: this.VendorForm.get('CompanyName').value,\r\n      Country: this.VendorForm.get('Country').value,\r\n      CountryCode: this.VendorForm.get('CountryCode').value,\r\n      DLExpiryDate: this.VendorForm.get('DLExpiryDate').value,\r\n      DriverLicenseNumber: this.VendorForm.get('DriverLicenseNumber').value == null ? '' : this.VendorForm.get('DriverLicenseNumber').value,\r\n      Email: this.VendorForm.get('Email').value,\r\n      FirstName: this.VendorForm.get('FirstName').value,\r\n\r\n      LastName: this.VendorForm.get('LastName').value,\r\n      MarketId: Number(this.marketId),\r\n      MarketVendorId: this.VendorForm.get('MarketVendorId').value,\r\n      MiddleName: this.VendorForm.get('MiddleName').value,\r\n\r\n      State: this.VendorForm.get('State').value,\r\n      TelephoneEXT: null,\r\n      VendorId: this.VendorForm.get('VendorId').value,\r\n      VendorSince: new Date(),\r\n      VendorType: this.VendorForm.get('VendorType').value,\r\n      TelePhone: this.VendorForm.get('TelePhone').value,\r\n      WorkPhone: this.VendorForm.get('WorkPhone').value,\r\n      ZipCode: this.VendorForm.get('ZipCode').value,\r\n      BusTelephoneEXT: null,\r\n\r\n      VendorName: \"\",\r\n      VendorProductsList: this.VendorProductsList,\r\n      VendorProductImageList: this.VendorProductsImageList,\r\n      VendorProductImageContentList: this.VendorProductsImageContentList,\r\n      VendorProfile: null,\r\n      VenTxtPhotoFile: null,\r\n      BusinessLicNum: this.VendorForm.get('BusinessLicenseNumber').value,\r\n      ResaleNum: this.VendorForm.get('ResaleNumber').value,\r\n      SSN: this.VendorForm.get('SSN').value?this.VendorForm.get('SSN').value:null,\r\n      TaxID: this.VendorForm.get('TaxID').value?this.VendorForm.get('TaxID').value:null,\r\n    };\r\n\r\n    this.vendorLoginData = {\r\n      VendorId: 0,\r\n      VendorName: null,\r\n      OnlineAccess: true,\r\n      OnlineUserId: this.OnlineAccessForm.get('UserName').value,\r\n      OnlinePassword: this.OnlineAccessForm.get('Password').value,\r\n      SecurityQuestionId: this.OnlineAccessForm.get('SecurityQuestion').value,\r\n      SecurityQuestionAnswer: this.OnlineAccessForm.get('Answer').value,\r\n      OnlineRegistrationDate: new Date()\r\n    };\r\n\r\n    this.vendorService.RegisterVendorInfoValidation(this.vendorinfo).subscribe((res: any) => {\r\n      this.validationResponse = res;\r\n      if (this.validationResponse.Success) {\r\n        this.displayOnlineAccess();\r\n      } else {\r\n        this.toastr.error(this.validationResponse.Message, $localize`Error`, this.toasterConfig)\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n\r\n  VendorLoginDetailsValidation() {\r\n    this.vendorLoginData = {\r\n      VendorId: 0,\r\n      VendorName: null,\r\n      OnlineAccess: true,\r\n      OnlineUserId: this.OnlineAccessForm.get('UserName').value,\r\n      OnlinePassword: this.OnlineAccessForm.get('Password').value,\r\n      SecurityQuestionId: this.OnlineAccessForm.get('SecurityQuestion').value,\r\n      SecurityQuestionAnswer: this.OnlineAccessForm.get('Answer').value,\r\n      OnlineRegistrationDate: new Date()\r\n    };\r\n\r\n    const check = this.CheckValidations();\r\n    if (!check) {\r\n      this.loaderIcon = Promise.resolve(false);\r\n      return;\r\n    }\r\n    this.vendorService.VendorLoginDetailsValidation(this.vendorLoginData).subscribe((res: any) => {\r\n      this.validationResponse = res\r\n      if (this.validationResponse.Success) {\r\n        if (!(this.registrationFee.RegistrationFee > 0 && this.registrationFee.ChargeVendorRegistration)) {\r\n          this.SaveVendorDetails();\r\n        }\r\n        this.displayRegisterPayment();\r\n      }\r\n      else {\r\n        this.toastr.error(this.validationResponse.Message, $localize`Error`, this.toasterConfig);\r\n      }\r\n    });\r\n  }\r\n  SaveVendorDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.subscriptions.push(this.vendorService.SaveVendor(this.vendorinfo).subscribe((SaveVenresponse: any[]) => {\r\n      this.response = SaveVenresponse;\r\n      if (this.response.Success) {\r\n        //this.toastr.success(this.response.Message, $localize`Success`, this.toasterConfig);\r\n        this.vendorId = this.response.Id;\r\n        if (this.registrationFee.RegistrationFee > 0 && this.registrationFee.ChargeVendorRegistration) {\r\n          this.paymentService.GetVerifoneUnSavedCompleteData(this.verifoneId).subscribe((GetVerfoneresponse: any) => {\r\n            this.obj = {\r\n              VendorId: this.vendorId,\r\n              PaymentOrderId: GetVerfoneresponse.OrderId,\r\n              RentalCharge: 0,\r\n              SalesTax: 0,\r\n              SecLevelTax: 0,\r\n              OtherCharge: this.registrationFee.RegistrationFee,\r\n              PriorBalance: 0,\r\n              TotalBalanceDue: 0,\r\n              RentalNotes: \"Registration\",\r\n              CashAmount: 0,\r\n              CheckAmount: 0,\r\n              CheckNo: \"\",\r\n              ChangeAmount: 0,\r\n              CardAmount: this.registrationFee.RegistrationFee,\r\n              DirectDebitAmount: 0,\r\n              CardType: \"1\",\r\n              PaymentDone: true,\r\n              PaymentDueDate: new Date(),\r\n              VerifoneId: GetVerfoneresponse.VerifoneId,\r\n              DiscountAmount: 0,\r\n              ConvenienceFee: 0,\r\n              DailyRentalBooth: [],\r\n              DailyRentalOtherCharges: [{\r\n                OtherItemId: this.registrationFee.Id, OtherItemName: this.registrationFee.Description, OtherCharge: this.registrationFee.RegistrationFee, Quantity: 1, RentalDay: new Date(), SalesTax: 0, SecLevelTax: 0\r\n              }],\r\n              AppliedDiscountModel: []\r\n            };\r\n            const sub = this.rentalService.SaveDailyRental(this.obj).subscribe(async (SaveDailyRentalResponse: any) => {\r\n              if (SaveDailyRentalResponse.Success) {\r\n                GetVerfoneresponse.VerifoneId = this.verifoneId;\r\n                GetVerfoneresponse.VendorId = this.vendorId;\r\n                this.paymentService.saveVerifoneUnSaved(GetVerfoneresponse).subscribe((res: any) => {\r\n                  this.SaveVendorLoginDetail(this.response.Id);\r\n                });\r\n              } else {\r\n                if (this.verifoneId) {\r\n                  this.voidPayment = true;\r\n                }\r\n              }\r\n              this.loaderIcon = Promise.resolve(false);\r\n            });\r\n\r\n            this.subscriptions.push(sub);\r\n          });\r\n        } else {\r\n          this.SaveVendorLoginDetail(this.response.Id);\r\n        }\r\n        this.vendorService.setVendorId(this.vendorId);\r\n        const url = 'home/' + this.marketId;\r\n        this.router.navigate([url]);\r\n\r\n      }\r\n      else {\r\n        this.toastr.error(this.response.Message, $localize`Error`, this.toasterConfig)\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n\r\n    }, (err) => {\r\n      this.toastr.error($localize`Something Went Wrong`, $localize`Error`, this.toasterConfig)\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n  }\r\n\r\n  primaryproductchange(args1) {\r\n    const Id = args1;\r\n    const product = this.productList.find(p => p.ProductId === Id);\r\n\r\n    if (product) {\r\n      this.VendorProductsList.pop();\r\n      const newProduct: IVendorProductModel = {\r\n        VProductId: 0,\r\n        ProductId: product.ProductId,\r\n        Priority: true,\r\n        VendorId: 0,\r\n        ProductName: product.ProductName,\r\n        ProductCategoryId: product.ProductCategoryId,\r\n        ProductCategory: product.ProductCategory,\r\n      };\r\n      this.VendorProductsList.push(newProduct);\r\n    } else {\r\n      console.log(\"Product not found with ID:\", Id);\r\n    }\r\n  }\r\n\r\n  SaveVendorLoginDetail(Id: any) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.vendorLoginData.VendorId = Id;\r\n    this.vendorService.SaveVendorLoginDetail(this.vendorLoginData).subscribe((res) => {\r\n      this.response = res;\r\n      if (this.response.Success) {\r\n        this.toastr.success($localize`Registration completed Successfully`, $localize`Success`, this.toasterConfig);\r\n        this.vendorService.SendRegistrationEmail(parseInt(Id)).subscribe((response1: any) => {\r\n          if (response1.body.Success) {\r\n            this.toastr.success($localize`Registration Email has been sent to your registered email address`, $localize`Success`, this.toasterConfig);\r\n          } else {\r\n            this.toastr.error($localize`Registration Email sending failed`, $localize`Error`, this.toasterConfig);\r\n          }\r\n        });\r\n      }\r\n      else {\r\n        this.toastr.error($localize`Save was Unsuccessful`, $localize`Error`, this.toasterConfig)\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, (err) => {\r\n      console.log(err);\r\n      this.toastr.error($localize`Save was Unsuccessful`, $localize`Error`, this.toasterConfig)\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n\r\n  CheckValidations() {\r\n    if (this.OnlineAccessForm.get('UserName').hasError('required') || this.OnlineAccessForm.get('Password').hasError('required') || this.OnlineAccessForm.get('ConfirmPassword').hasError('required') || this.OnlineAccessForm.get('SecurityQuestion').hasError('required') || this.OnlineAccessForm.get('Answer').hasError('required')) {\r\n      this.toastr.error($localize`Please fill all mandatory fields properly`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n\r\n    if (this.OnlineAccessForm.get('Password').hasError('minLength')) {\r\n      this.toastr.error($localize`Password must be atleast 6 character`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Password').hasError('maxLength')) {\r\n      this.toastr.error($localize`Password must be at least 20 characters long.`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Password').hasError('upperCase')) {\r\n      this.toastr.error($localize`Password must contain at least one uppercase letter`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Password').hasError('specialChar')) {\r\n      this.toastr.error($localize`Password must contain at least one special`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Password').hasError('lowerCase')) {\r\n      this.toastr.error($localize`password must contain at least one lowercase letter`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Answer').hasError('minLength')) {\r\n      this.toastr.error($localize`Security Answer must be atleast 4 character`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.OnlineAccessForm.get('Password').value != this.OnlineAccessForm.get('ConfirmPassword').value) {\r\n      this.toastr.error($localize`Confirm Password doesn't match.`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  getCCCredentials() {\r\n    this.paymentService.getCCCredentials(this.marketId).subscribe((res) => {\r\n      if (res !== null) {\r\n        this.paymentGatewayCredentials = res.GatewayDetails ? JSON.parse(res.GatewayDetails) : null;\r\n        this.processCreditCardOnline = res.ProcessCreditCardOnline;\r\n      }\r\n    })\r\n  }\r\n\r\n  OnVendorRegister(e: Event) {\r\n    e.preventDefault();\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.VendorLoginDetailsValidation();\r\n    var creditCardAmount = this.registrationFee.RegistrationFee;\r\n    if (creditCardAmount > 0 && this.registrationFee.ChargeVendorRegistration) {\r\n      if (this.paymentGatewayCredentials && this.processCreditCardOnline)\r\n        this.processPayment = true;\r\n      else {\r\n        var obj = {\r\n          PaymentSuccess: true,\r\n          OrderId: \"\",\r\n          VerifoneId: 0\r\n        }\r\n        this.PaymentResponse(obj)\r\n      }\r\n    }\r\n    this.loaderIcon = Promise.resolve(false);\r\n    // else {\r\n    //   var obj = {\r\n    //     PaymentSuccess: true,\r\n    //     OrderId: \"\",\r\n    //     VerifoneId: 0\r\n    //   }\r\n    //   this.PaymentResponse(obj)\r\n    // }\r\n  }\r\n\r\n  Oncancel() {\r\n    Swal.fire({\r\n      title: $localize`Are you sure ?`,\r\n      text: $localize`You are about to cancel the registration process.`,\r\n      icon: 'warning',\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const url = 'home/' + this.marketId;\r\n        this.router.navigate([url]);\r\n      } else {\r\n        return;\r\n      }\r\n    });\r\n  }\r\n\r\n  ClosePaymentPage() {\r\n    this.processPayment = false;\r\n    this.voidPayment = false;\r\n    this.displayOnlineAccess();\r\n  }\r\n\r\n\r\n  PaymentResponse(response) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (response.PaymentSuccess) {\r\n      this.verifoneId = response.VerifoneId;\r\n      this.SaveVendorDetails();\r\n\r\n    } else {\r\n      this.processPayment = false;\r\n      this.voidPayment = false;\r\n      this.displayOnlineAccess();\r\n    }\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n}\r\n\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<form [formGroup]=\"loginForm\">\r\n    <div class=\"container\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-center\">\r\n                <div class=\"login shadow\">\r\n                    <div class=\"container\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-center mt-2\">\r\n                                <img [src]=\"imageUrl\" style=\"width: 30%;\" class=\"img-fluid\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-center mt-3\">\r\n                                <label class=\"txtWelcome\">Welcome back! Please login to continue.</label>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-center\">\r\n                                <span class=\"error-message\" *ngIf=\"loginError\">\r\n                                    <p i18n>User Name / Password is incorrect!</p>\r\n                                </span>\r\n                                <span class=\"error-message\" *ngIf=\"inActive\">\r\n                                    <p i18n>User is Inactive!</p>\r\n                                </span>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\" style=\"margin: 10px;\">\r\n                            <div class=\"col-6 text-left mt-1\">\r\n                                <input type=\"radio\" id=\"rduserId\" class=\"form-check-input\" value=\"1\"\r\n                                    formControlName=\"loginUserName\" (change)=\"checkRememberMe()\">\r\n                                <label for=\"rduserId\" class=\"form-check-label\">User Name</label>\r\n                            </div>\r\n                            <div class=\"col-6 text-left mt-1\">\r\n                                <input type=\"radio\" id=\"rdEmail\" class=\"form-check-input\" value=\"2\"\r\n                                    formControlName=\"loginUserName\" (change)=\"checkRememberMe()\">\r\n                                <label for=\"rdEmail\" class=\"form-check-label\">Email Address</label>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-center mt-1\">\r\n                                <div class=\"input-group shadow\">\r\n                                    <div class=\"input-group-prepend\">\r\n                                        <span class=\"input-group-text email\"></span>\r\n                                    </div>\r\n                                    <input type=\"text\" class=\"form-control\" placeholder=\"Username or email\"\r\n                                        formControlName=\"username\" (keyup)=\"validateLoginCredentials()\" required>\r\n                                </div>\r\n                                <div *ngIf=\"displayUsernameError\" class=\"error-message text-left\">\r\n                                    <ng-container i18n *ngIf=\"this.loginForm.value['loginUserName'] == '2' && !this.loginForm.value['username']\">Email address is required.</ng-container>\r\n                                    <ng-container i18n *ngIf=\"this.loginForm.value['loginUserName'] == '1' && !this.loginForm.value['username']\">User Name is required.</ng-container>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-center mt-3\">\r\n                                <div class=\"input-group shadow\">\r\n                                    <div class=\"input-group-prepend\">\r\n                                        <span class=\"input-group-text\"></span>\r\n                                    </div>\r\n                                    <input type=\"password\" class=\"form-control\" placeholder=\"Password\"\r\n                                        formControlName=\"password\" (keyup)=\"validateLoginCredentials()\" required>\r\n                                </div>\r\n                                <div *ngIf=\"displayPasswordError\" class=\"error-message text-left\">\r\n                                    <ng-container i18n>Password is required.</ng-container>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-6 text-left mt-2\">\r\n                                <div class=\"checkbox-wrapper\">\r\n                                    <label class=\"pure-material-checkbox\">\r\n                                        <input type=\"checkbox\" class=\"CheckboxClass shadow\"\r\n                                            formControlName=\"rememberMe\">\r\n                                        <span i18n class=\"chkAlign fw-700 pl-0 respText\">Remember Me</span>\r\n                                    </label>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"col-6 text-right mt-2\">\r\n                                <a class=\"respText fw-700\" style=\"cursor: pointer;\"\r\n                                    (click)=\"ForgotPassword($event)\">Forgot\r\n                                    Password?</a>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mb-4\">\r\n                            <div class=\"col-6 text-center mt-2\">\r\n                                <button class=\"btn btn-primary\" style=\"width: 90px;\"\r\n                                    [routerLink]=\"['/home', marketId]\">Back</button>\r\n                            </div>\r\n                            <div class=\"col-6 text-center mt-2\">\r\n                                <button class=\"btn btn-primary\" style=\"width: 90px;\"\r\n                                    (click)=\"validateLogin()\">Login</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>","import { Component, HostListener, Renderer2 } from '@angular/core';\r\nimport { FormGroup,FormBuilder, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { UserService } from 'src/app/services/User.service';\r\nimport Swal from 'sweetalert2';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\n\r\n@Component({\r\n  selector: 'app-vendor-login',\r\n  templateUrl: './vendor-login.component.html',\r\n  styleUrls: ['./vendor-login.component.scss']\r\n})\r\nexport class VendorLoginComponent {\r\n  loginForm: FormGroup;\r\n  loginError=false;\r\n  inActive = false;\r\n  displayUsernameError = false;\r\n  displayPasswordError = false;\r\n  marketId\r\n  confirmMailInput: HTMLInputElement\r\n  imageUrl= \"\";\r\n  private subscriptions: Subscription[] = [];\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  public loaderIcon: Promise<boolean>;\r\n\r\n  constructor(private formBuilder: FormBuilder,\r\n    private userService: UserService,\r\n    private route: ActivatedRoute,\r\n    private router:Router,\r\n    private marketInfoService:MarketInfoService,\r\n    private toastr: ToastrService,\r\n    private renderer: Renderer2) {\r\n    this.loginForm = this.formBuilder.group({\r\n      username: ['', [Validators.required]],\r\n      password: ['', Validators.required],\r\n      rememberMe:[false],\r\n      loginUserName:[\"1\"]\r\n    });\r\n   }\r\n\r\n  @HostListener('document:keydown', ['$event'])\r\n  onKeydown(event: KeyboardEvent) {\r\n    if (event.key === 'Enter') {\r\n      event.preventDefault();\r\n      this.validateLogin();\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n     this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n    });\r\n    this.getMarketLogo();\r\n    this.checkRememberMe();\r\n    this.applyBackground();   \r\n  //  window.addEventListener('resize', () => this.applyBackground());\r\n  }\r\n\r\n  getMarketLogo() {\r\n    const timestamp = new Date().getTime();\r\n    const sub = this.marketInfoService.getMarketLogo(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.imageUrl = res.MarketLogoBlobURL + `?timestamp=${timestamp}`;\r\n      }\r\n      else {\r\n        this.imageUrl = '../../../assets/images/NoImage.jpg'\r\n      }\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  private applyBackground(): void {\r\n    if (window.innerWidth < 992) {\r\n      this.renderer.setStyle(document.body, 'backgroundColor', '#508AE2');\r\n    } else {\r\n      const gradient = `linear-gradient(335deg, hsl(214deg 66% 55%) 0%, hsl(214deg 67% 56%) 5%, hsl(215deg 68% 57%) 10%, hsl(215deg 69% 58%) 14%, hsl(216deg 70% 59%) 19%, hsl(217deg 71% 60%) 24%, hsl(217deg 72% 61%) 29%, hsl(218deg 73% 62%) 33%, hsl(218deg 74% 63%) 38%, hsl(219deg 76% 64%) 43%, hsl(219deg 77% 65%) 48%, hsl(220deg 79% 66%) 52%, hsl(221deg 80% 67%) 57%, hsl(221deg 82% 68%) 62%, hsl(222deg 84% 69%) 67%, hsl(222deg 85% 70%) 71%, hsl(223deg 88% 71%) 76%, hsl(223deg 90% 72%) 81%, hsl(224deg 92% 73%) 86%, hsl(225deg 94% 74%) 90%, hsl(225deg 97% 75%) 95%, hsl(226deg 100% 76%) 100%)`;\r\n    document.body.style.backgroundImage = gradient;\r\n    }\r\n  }\r\n\r\n  checkRememberMe() {\r\n    if (localStorage.getItem(`rememberMe_${this.marketId}`) === 'true') {\r\n      const username = localStorage.getItem(`username_${this.marketId}_${this.loginForm.value['loginUserName']}`) || '';\r\n      this.loginForm.get('username').setValue(username);\r\n      this.loginForm.get('rememberMe').setValue(true);\r\n    }\r\n  }\r\n\r\n  validateLoginCredentials(){\r\n    if (!this.loginForm.valid) {\r\n      this.displayUsernameError = this.loginForm.get('username').hasError('required');\r\n      this.displayPasswordError = this.loginForm.get('password').hasError('required');\r\n    }\r\n    else{\r\n      this.displayUsernameError = false;\r\n      this.displayPasswordError = false;\r\n    }\r\n  }\r\n\r\n  validateLogin() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (this.loginForm.valid) {\r\n      this.loginError=false;\r\n      const credentials =\r\n      {\r\n        username: this.loginForm.value['username'],\r\n        password: this.loginForm.value['password'],\r\n        EmailLogin: this.loginForm.value['loginUserName'] == \"2\" ? true : false,\r\n        MarketId: this.marketId\r\n      }\r\n      this.userService.getToken(credentials).subscribe(async (response) => {\r\n        if(response){\r\n          if (!response.InActive) {\r\n            this.loginError =false;\r\n            const rememberMe = this.loginForm.value['rememberMe'];\r\n            if (rememberMe) {\r\n              localStorage.setItem(`rememberMe_${this.marketId}`, 'true');\r\n              localStorage.setItem(`username_${this.marketId}_${this.loginForm.value['loginUserName']}`, this.loginForm.value['username']);\r\n            } else {\r\n              localStorage.removeItem(`rememberMe_${this.marketId}`);\r\n              localStorage.removeItem(`username_${this.marketId}_${this.loginForm.value['loginUserName']}`);\r\n            }\r\n            const vendorId = response.UserId;\r\n            sessionStorage.setItem('token', response.token);\r\n            this.router.navigate(['/rent-online/'+this.marketId + '/' + vendorId]);\r\n          }\r\n          else {\r\n            this.inActive = response.InActive;\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }\r\n        else{\r\n            this.loginError =true;\r\n            this.loaderIcon = Promise.resolve(false);\r\n        }\r\n      });\r\n    }\r\n    else{\r\n      this.displayUsernameError = this.loginForm.get('username').hasError('required');\r\n      this.displayPasswordError = this.loginForm.get('password').hasError('required');\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  ForgotPassword(event) {\r\n    event.preventDefault();\r\n    Swal.fire<boolean>({\r\n      title: 'Confirm Mail',\r\n      html: `\r\n       <input type=\"text\" id=\"email\" class=\"swal2-input\" style=\"width:82%\" placeholder=\"Email\">\r\n       <small style=\"color : #106EBE !important\">Your new login password will be sent to your registered email address. <i class=\"fa fa-warning \" style=\"color: red\"></i> Please check your email inbox!!</small>\r\n     `,\r\n      confirmButtonText: 'Confirm',\r\n      focusConfirm: false,\r\n      showCloseButton: true,\r\n      didOpen: () => {\r\n        const popup = Swal.getPopup()!;\r\n        this.confirmMailInput = popup.querySelector('#email') as HTMLInputElement;\r\n        this.confirmMailInput.onkeyup = (event) => event.key === 'Enter' && Swal.clickConfirm();\r\n      },\r\n      preConfirm: () => {\r\n        const confirmMail = this.confirmMailInput?.value\r\n        if (!confirmMail) {\r\n          Swal.showValidationMessage(`Please enter email address`);\r\n          return false;\r\n        }\r\n        else {\r\n          return true;\r\n        }\r\n      },\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        Swal.close();\r\n        this.subscriptions.push(this.userService.ForgotPassword(this.marketId, this.confirmMailInput?.value).subscribe((res: any) => {\r\n          var response = res.Success;\r\n          if (response) {\r\n            this.toastr.success(res.Message, $localize`Success`, this.toasterConfig);\r\n          }\r\n          else {\r\n            this.toastr.error(res.Message, $localize`Error`, this.toasterConfig)\r\n          }\r\n        }));\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    document.body.style.backgroundImage = '';\r\n    document.body.style.backgroundColor = '';\r\n  }\r\n}\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<form [formGroup]=\"layoutForm\">\r\n    <div id=\"ContainerMain\" class=\"container-fluid\">\r\n        <div class=\"site_height\">\r\n                <div class=\"row my-2\" formGroupName=\"layoutDiagramFilter\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 align-items-center d-flex\">\r\n                        <label style=\"width: 120px;\" i18n>Find Booth</label> &nbsp; &nbsp;\r\n                        <div class=\"input-group\">\r\n                            <input type=\"text\" class=\"form-control\" placeholder=\"Search\" formControlName=\"searchBooth\"\r\n                                (blur)=\"changeSearchText()\">\r\n                            <div class=\"input-group-append\" (click)=\"searchNodes()\">\r\n                                <span class=\"input-group-text\">\r\n                                    <i class=\"fa fa-search\"></i>\r\n                                </span>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 d-flex layout_buttons\">\r\n                        <button class=\"btn btnZoom mr-1\" (click)=\"layoutZoomInClick($event)\">\r\n                            <img src=\"../assets/images/ZoomIn.svg\" class=\"img-fluid\" />\r\n                        </button>\r\n                        <button class=\"btn btnZoom\" (click)=\"layoutZoomOutClick($event)\">\r\n                            <img src=\"../assets/images/ZoomOut.svg\" class=\"img-fluid\" />\r\n                        </button>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 d-flex layout_buttons float-right bottom_button mt-sm-2 w-100 d-flex\">\r\n                            <button type=\"button\" class=\"btn btn-primary mr-1\" i18n (click)=\"AddSelectedBoothsToGrid()\"\r\n                                [disabled]=\"noboothSelected\">Done</button>\r\n                            <button type=\"button\" i18n class=\"btn btn-primary\" (click)=\"closeLayoutForm()\">Close</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row my-2\" formGroupName=\"layoutDiagramFilter\">  \r\n                    <div class=\"col-md-4 align-items-center mt-2\" style=\"font-weight: bold;text-align: left;\">\r\n                        Part: {{selectedPartName}}\r\n                    </div>\r\n                    <div class=\"col-md-8 align-items-center\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                <input type=\"checkbox\" class=\"CheckboxClass chkAvailable mt-2\" disabled>\r\n                                <p i18n class=\"chkAlign\">Available</p>\r\n                            </div>\r\n                            <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                <input type=\"checkbox\" class=\"CheckboxClass chkBooked mt-2\" disabled>\r\n                                <p i18n class=\"chkAlign\">Booked</p>\r\n                            </div>\r\n                            <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                <input type=\"checkbox\" class=\"CheckboxClass chkReserved mt-2\" disabled>\r\n                                <p i18n class=\"chkAlign\">Reserved</p>\r\n                            </div>\r\n                            <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                <input type=\"checkbox\" class=\"CheckboxClass chkNonRentable mt-2\" disabled>\r\n                                <p i18n class=\"chkAlign\">Non Rentable</p>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-center\">\r\n                      <div class=\"layoutDiagramSection\" id=\"diagram-container\">\r\n                           <ejs-diagram #diagram id=\"diagram\" width=\"100%\" [selectedItems]=\"selectedItems\"\r\n                                       (click)=\"nodeClick($event)\" [tooltip]=\"tooltip\" [tool]=\"tool\"\r\n                                       [snapSettings]='snapSettings' (created)='created($event)' (mouseover)=\"nodeMouseOver($event)\"></ejs-diagram>\r\n                        </div>\r\n                      </div>\r\n                </div>\r\n        </div>\r\n    </div>\r\n</form>\r\n","import { AfterViewInit, Component, ElementRef, EventEmitter, HostListener, Input, OnDestroy, OnInit, Output, ViewChild, ViewEncapsulation } from '@angular/core';\r\nimport { FormGroup, FormBuilder } from '@angular/forms';\r\nimport {\r\n  DiagramComponent, NodeModel, NodeConstraints, MarginModel, ZoomOptions, ConnectorModel, SelectorConstraints,\r\n  AnnotationConstraints, SelectorModel, PaletteModel,DiagramTooltipModel, ImageModel, DiagramTools, SnapConstraints , SnapSettingsModel, DiagramBeforeMenuOpenEventArgs, BasicShapeModel, PathAnnotationModel, TextModel\r\n} from '@syncfusion/ej2-angular-diagrams';\r\nimport { Observable, Subscription, catchError, forkJoin, map, of } from 'rxjs';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport { DatePipe } from '@angular/common';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport Swal from 'sweetalert2';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\n\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'app-rentallayout-online',\r\n  templateUrl: './rentallayout-online.component.html',\r\n  styleUrls: ['./rentallayout-online.component.scss'],\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class RentalLayoutComponent implements OnInit, OnDestroy, AfterViewInit {\r\n  public loaderIcon: Promise<boolean>;\r\n  @ViewChild('diagram', { static: false })\r\n  public diagram: DiagramComponent;\r\n  private subscriptions: Subscription[] = [];\r\n  layoutForm: FormGroup;\r\n  defaultZoomFactor= 0;\r\n  @Input() marketId;\r\n  @Input() layoutParts : any;\r\n  @Input() rentalType;\r\n  @Input() LayoutData;\r\n  @Output() selectedBoothsFromLayout = new EventEmitter<any>();\r\n  @Output() CloseLayout = new EventEmitter<any>();\r\n  @Output() removeBoothCharges = new EventEmitter<any>();\r\n  allExistingBuilding = [];\r\n  boothShapes;\r\n  fontName;\r\n  fontStyle=[];\r\n  layoutImages;\r\n  images =[];\r\n  selectedNode=[];\r\n  selectedBoothData=[];\r\n  allBooths=[];\r\n  partId;\r\n  isDropdownOpen = false;\r\n  public palettes?: PaletteModel[];\r\n  connectors: ConnectorModel[];\r\n  selectedItems: SelectorModel;\r\n  symbolMargin: MarginModel;\r\n  private monthEndDateCache = new Map<string, Date>();\r\n  noboothSelected = true\r\n  public snapSettings: SnapSettingsModel = {\r\n  constraints: SnapConstraints.None, \r\n  };\r\n  tool: DiagramTools;\r\n  vendorId;\r\n  BoothNumber;\r\n  BoothType;\r\n  blinkingNode: string = '';\r\n  categoryLegend = [];\r\n  blinkInterval: any;\r\n  selectedPartName= \"\";\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  selectedBoothsForRental = [];\r\n  public tooltip?: DiagramTooltipModel;\r\n  constructor(private formbuilder: FormBuilder,\r\n    private route:ActivatedRoute,\r\n    private toastr: ToastrService,\r\n    private sharedDataService:SharedDataService,\r\n    private rentalService:RentalService,\r\n    private datePipe: DatePipe,\r\n    private customCurrency: customCurrencyPipe,\r\n    private marketInfoService:MarketInfoService,\r\n    private elementRef: ElementRef) {\r\n    this.layoutForm = this.formbuilder.group({\r\n      layoutDiagramFilter: this.formbuilder.group({\r\n        searchBooth: ['']\r\n      })\r\n    });\r\n    this.tool = DiagramTools.SingleSelect;\r\n    this.selectedItems = {\r\n      constraints: SelectorConstraints.All &\r\n        ~(SelectorConstraints.ResizeAll | SelectorConstraints.Rotate)\r\n    };\r\n    this.symbolMargin = { left: 15, right: 15, top: 15, bottom: 15 };\r\n  }    \r\n\r\n  @HostListener('document:click', ['$event'])\r\n  clickOutsideDropdown(event: MouseEvent): void {\r\n    const legendDropDown = document.querySelector('.legendDropDown');\r\n    const dropdownElement = document.querySelector('.custom-dropdown');\r\n    if (!legendDropDown.contains(event.target as Node) && !dropdownElement.contains(event.target as Node) && ((document.querySelector('.legendDropDown') as HTMLElement).classList.contains('open'))) {\r\n      this.isDropdownOpen = false;\r\n    }\r\n  }\r\n\r\n  closeCategoryLegend(){\r\n    this.isDropdownOpen = false;\r\n  }\r\n\r\n  stopPropagation(event: Event) {\r\n    event.stopPropagation();\r\n  }\r\n\r\n  toggleDropdown() {\r\n   if(!this.isDropdownOpen)\r\n   (document.querySelector('.legendDropDown') as HTMLElement).classList.add('open');\r\n  else\r\n   (document.querySelector('.legendDropDown') as HTMLElement).classList.remove('open');\r\n    this.isDropdownOpen = !this.isDropdownOpen;\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    console.log('inside layout')\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.vendorId = params['id'];\r\n    }); \r\n    this.partId = this.layoutParts;\r\n    this.getParts();\r\n    this.getProductCategories();\r\n    this.getListOfValuesData();\r\n    this.getImages();  \r\n  }\r\n\r\n  ngAfterViewInit() {\r\n  }\r\n\r\n  getParts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.selectedPartName = this.selectedPartName = res.filter(e=>e.PartId ==  this.partId)[0].PartDescription;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  AddSelectedBoothsToGrid(){\r\n    this.selectedBoothsFromLayout.emit(this.selectedBoothData);\r\n  }\r\n\r\n  closeLayoutForm() {\r\n    if (this.rentalType == \"D\") {\r\n      if (this.selectedBoothsForRental.length > 0) {\r\n        this.selectedBoothsForRental.forEach(ele => {\r\n          this.sharedDataService.dailyRentalSelectedDays.map(date => {\r\n            const temp = {\r\n              TempRecordNo: this.sharedDataService.tempRecordNo.toString(),\r\n              BoothNumber: ele.BoothNumber,\r\n              StartDate: new Date(date),\r\n              RentalType: 1\r\n            }\r\n            this.subscriptions.push(\r\n              this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n              })\r\n            );\r\n          });\r\n        });\r\n      }\r\n    }\r\n    else if (this.rentalType == \"M\") {\r\n      if (this.selectedBoothsForRental.length > 0) {\r\n        this.selectedBoothsForRental.forEach(ele => {\r\n          const temp = {\r\n            TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n            BoothNumber: ele.BoothNumber,\r\n            StartDate: new Date(ele.StartDate),\r\n            RentalType: 2,\r\n            EndDate: new Date(ele.EndDate),\r\n            Sunday: ele.Sunday,\r\n            Monday: ele.Monday,\r\n            Tuesday: ele.Tuesday,\r\n            Wednesday: ele.Wednesday,\r\n            Thursday: ele.Thursday,\r\n            Friday: ele.Friday,\r\n            Saturday: ele.Saturday,\r\n          }\r\n          this.subscriptions.push(\r\n            this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n            })\r\n          );\r\n        });\r\n      }\r\n    }\r\n    else if (this.rentalType == \"CM\") {\r\n      if (this.selectedBoothsForRental.length > 0) {\r\n        this.selectedBoothsForRental.forEach(ele => {\r\n          const temp = {\r\n            TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n            BoothNumber: ele.BoothNumber,\r\n            StartDate: new Date(ele.StartDate),\r\n            RentalType: 4,\r\n            EndDate: new Date(ele.EndDate),\r\n            Sunday: ele.Sunday,\r\n            Monday: ele.Monday,\r\n            Tuesday: ele.Tuesday,\r\n            Wednesday: ele.Wednesday,\r\n            Thursday: ele.Thursday,\r\n            Friday: ele.Friday,\r\n            Saturday: ele.Saturday,\r\n          }\r\n          this.subscriptions.push(\r\n            this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n            })\r\n          );\r\n        });\r\n      }\r\n    }\r\n    else if (this.rentalType == \"CW\") {\r\n      if (this.selectedBoothsForRental.length > 0) {\r\n        this.selectedBoothsForRental.forEach(ele => {\r\n          const temp = {\r\n            TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n            BoothNumber: ele.BoothNumber,\r\n            StartDate: new Date(ele.StartDate),\r\n            RentalType: 5,\r\n            EndDate: new Date(ele.EndDate),\r\n            Sunday: ele.Sunday,\r\n            Monday: ele.Monday,\r\n            Tuesday: ele.Tuesday,\r\n            Wednesday: ele.Wednesday,\r\n            Thursday: ele.Thursday,\r\n            Friday: ele.Friday,\r\n            Saturday: ele.Saturday,\r\n          }\r\n          this.subscriptions.push(\r\n            this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n            })\r\n          );\r\n        });\r\n      }\r\n    }\r\n    else if (this.rentalType == \"W\") {\r\n      if (this.selectedBoothsForRental.length > 0) {\r\n        this.selectedBoothsForRental.forEach(ele => {\r\n          const temp = {\r\n            TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n            BoothNumber: ele.BoothNumber,\r\n            StartDate: new Date(ele.StartDate),\r\n            RentalType: 5,\r\n            EndDate: new Date(ele.EndDate),\r\n            Sunday: ele.Sunday,\r\n            Monday: ele.Monday,\r\n            Tuesday: ele.Tuesday,\r\n            Wednesday: ele.Wednesday,\r\n            Thursday: ele.Thursday,\r\n            Friday: ele.Friday,\r\n            Saturday: ele.Saturday,\r\n          }\r\n          this.subscriptions.push(\r\n            this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n            })\r\n          );\r\n        });\r\n      }\r\n    }\r\n\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      setTimeout(() => {\r\n        this.CloseLayout.emit();\r\n      }, 400);\r\n    } else {\r\n      this.CloseLayout.emit();\r\n    }\r\n  }\r\n\r\n  public created(args: Object): void {\r\n   // fit the diagram to the page with respect to mode and region\r\n     this.diagram.fitToPage({\r\n         mode: 'Page',\r\n         region: 'Content',\r\n        margin: {\r\n             bottom: 50\r\n         },\r\n         canZoomIn: true\r\n     });\r\n}\r\n\r\n  markSelectedBooths() {\r\n    if (this.rentalType == \"D\") {\r\n      if (this.sharedDataService.dailyRentalSelectedBooths.length > 0) {\r\n        this.sharedDataService.dailyRentalSelectedDays.forEach(date => {\r\n          this.sharedDataService.dailyRentalSelectedBooths.forEach(element => {\r\n            if (this.datePipe.transform(date, 'MM/dd/yyyy') == element.RentalDay) {\r\n              const nodeId = \"node_\" + element.BoothNumber;\r\n              const selectedNode = this.diagram.getObject(nodeId) as NodeModel;\r\n              if (selectedNode) {\r\n                const diagramNode: NodeModel = {\r\n                  id: nodeId.replace(\"&\",\"_amper_\") + \"mark\",\r\n                  offsetX: selectedNode.offsetX,\r\n                  offsetY: selectedNode.offsetY,\r\n                  width: selectedNode.width / 2,\r\n                  height: selectedNode.height / 2,\r\n                  shape: {\r\n                    type: \"HTML\",\r\n                    content: `<div style=\"width:${selectedNode.width/2}px; height: ${selectedNode.height/2}px\">\r\n                    <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block; margin: 0; padding: 0;\">\r\n                        <line x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                        <line x1=\"100%\" y1=\"0\" x2=\"0\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                    </svg>\r\n                </div>`\r\n                  },\r\n                  constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n                };\r\n                this.diagram.add(diagramNode);\r\n                var selectedBoothData = this.allBooths.filter(e => e.BoothNumber == element.BoothNumber);\r\n                this.selectedBoothData.push(\r\n                  {\r\n                    BoothNumber: selectedBoothData[0].BoothNumber,\r\n                    BoothType: selectedBoothData[0].BoothType,\r\n                    BoothDescription: selectedBoothData[0].BoothDescription,\r\n                    BoothTypeId: selectedBoothData[0].BoothTypeId,\r\n                  });\r\n              }\r\n              else{\r\n                var selectedBoothData = this.allBooths.filter(e => e.BoothNumber == element.BoothNumber);\r\n                this.selectedBoothData.push(\r\n                  {\r\n                    BoothNumber:element.BoothNumber,\r\n                    BoothType: element.BoothType,\r\n                    BoothDescription: selectedBoothData[0].BoothDescription,\r\n                    BoothTypeId: element.BoothTypeId,\r\n                  });\r\n              }\r\n            }\r\n          });\r\n        });\r\n      }\r\n      this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n    }\r\n    else if (this.rentalType == \"W\" || this.rentalType == \"CW\") {\r\n      if (this.LayoutData.weeklyRentalSelectedBooths.length > 0) {\r\n        this.LayoutData.weeklyRentalSelectedBooths.forEach(element => {\r\n          this.LayoutData.weeklyRentalMarketDays.forEach(days => {\r\n            const selectedDates = [];\r\n            this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n              const startDate = new Date(element.RentStartPeriod.split('-')[0]);\r\n              const endDate = new Date(element.RentEndPeriod.split('-')[1]);\r\n              const selectedDayOfWeek = el - 1;\r\n              let currentDay = new Date(startDate);\r\n              while (currentDay <= endDate) {\r\n                if (currentDay.getDay() === selectedDayOfWeek) {\r\n                  selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n                }\r\n                currentDay.setDate(currentDay.getDate() + 1);\r\n              }\r\n\r\n              if (selectedDates.some(element => this.LayoutData.selectedDates.includes(element))) {\r\n                const nodeId = \"node_\" + element.BoothNumber;\r\n                const selectedNode = this.diagram.getObject(nodeId) as NodeModel;\r\n                if (selectedNode) {\r\n                  const diagramNode: NodeModel = {\r\n                    id: nodeId.replace(\"&\",\"_amper_\") + \"mark\",\r\n                    offsetX: selectedNode.offsetX,\r\n                    offsetY: selectedNode.offsetY,\r\n                    width: selectedNode.width / 2,\r\n                    height: selectedNode.height / 2,\r\n                    shape: {\r\n                      type: \"HTML\",\r\n                      content: `<div style=\"width:${selectedNode.width/2}px; height: ${selectedNode.height/2}px\">\r\n                      <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block; margin: 0; padding: 0;\">\r\n                          <line x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                          <line x1=\"100%\" y1=\"0\" x2=\"0\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                      </svg>\r\n                  </div>`\r\n                    },\r\n                    constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n                  };\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              }\r\n            });\r\n          });\r\n        });\r\n      }\r\n    }\r\n    else if (this.rentalType == \"M\" || this.rentalType == \"CM\") {\r\n      if (this.LayoutData.monthlyRentalSelectedBooths.length > 0) {\r\n        this.LayoutData.monthlyRentalSelectedBooths.forEach(element => {\r\n          this.LayoutData.monthlyRentalMarketDays.forEach(days => {\r\n            const selectedDates = [];\r\n            this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n              const startDate = new Date(element.RentalStartDate);\r\n              const endDate = new Date(element.RentalEndDate);\r\n              const selectedDayOfWeek = el - 1;\r\n              let currentDay = new Date(startDate);\r\n              while (currentDay <= endDate) {\r\n                if (currentDay.getDay() === selectedDayOfWeek) {\r\n                  selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n                }\r\n                currentDay.setDate(currentDay.getDate() + 1);\r\n              }\r\n\r\n              if (selectedDates.some(element => this.LayoutData.selectedDates.includes(element))) {\r\n                const nodeId = \"node_\" + element.BoothNumber;\r\n                const selectedNode = this.diagram.getObject(nodeId) as NodeModel;\r\n                if (selectedNode) {\r\n                  const diagramNode: NodeModel = {\r\n                    id: nodeId.replace(\"&\",\"_amper_\") + \"mark\",\r\n                    offsetX: selectedNode.offsetX,\r\n                    offsetY: selectedNode.offsetY,\r\n                    width: selectedNode.width / 2,\r\n                    height: selectedNode.height / 2,\r\n                    shape: {\r\n                      type: \"HTML\",\r\n                      content: `<div style=\"width:${selectedNode.width/2}px; height: ${selectedNode.height/2}px\">\r\n                      <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block; margin: 0; padding: 0;\">\r\n                          <line x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                          <line x1=\"100%\" y1=\"0\" x2=\"0\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                      </svg>\r\n                  </div>`\r\n                    },\r\n                    constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),                    \r\n                  };\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              }\r\n            });\r\n          });\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  getProductCategories() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getProductCategories(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        res.map((el, i) => {\r\n          const ob = {\r\n            categoryName: el.CategoryDescription,\r\n            color: this.convertColor(el.Color)\r\n          }\r\n          this.categoryLegend.push(JSON.parse(JSON.stringify(ob)));\r\n        })\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  bindBoothsToLayout(data,boothStatusRecords) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.allBooths = data;\r\n    if (data.length > 0) {\r\n      for(const item of data){\r\n        var boothStatus = \"Booked\";\r\n        var backColor = \"#fff\"\r\n        switch (item.Status.toLowerCase()) {\r\n          case \"r\": boothStatus = \"Reserved\"\r\n          backColor = '#0032CC';\r\n            break;\r\n          case \"ro\": boothStatus = \"Reserved Only\"\r\n          backColor = '#483D8B';\r\n            break;\r\n          case \"a\": boothStatus = \"Available\"\r\n          backColor = '#fff';\r\n            break;\r\n          case \"ab\": boothStatus = \"Absentee Booking\"\r\n          backColor = '#4F9F60';\r\n            break;\r\n          default: boothStatus = \"Booked\"\r\n          backColor = '#4F9F60';\r\n            break;\r\n        }\r\n        if(item.ExcludeForWeb){\r\n          backColor = '#ff007f';\r\n          item.Status = \"NR\"\r\n        }\r\n\r\n        if (boothStatus == 'Closed Out' || (item.Status.toLowerCase() == 'd' && !item.AccountReceiptId)) {\r\n          //Booth closeout - do nothing\r\n        }\r\n        else {\r\n          const fontColor = item.Status.toLowerCase() == \"r\" ? \"#fff\" : \"#000\";\r\n          var tooltipCaption;\r\n          if (item.ExcludeForWeb) {\r\n            tooltipCaption = \"This booth is not available for online rental\";\r\n          }\r\n          else {\r\n            tooltipCaption = item.VendorId ? 'Vendor Id:' + item.MarketVendorId + ' Name: ' + item.VendorName + ' Type: ' + item.RentalType + ' Status: ' + boothStatus + ' Product: ' + item.ProductDescription + ' VendorBalance : ' + this.customCurrency.transform(((-1) * item.PriorBalance).toString()) + ' Booth Number: ' + item.BoothNumber + ' Booth Type: ' + item.BoothType + ' Booth Description: ' + item.BoothDescription : ' Booth Number: ' + item.BoothNumber + ' Booth Type: ' + item.BoothType + ' Booth Description: ' + item.BoothDescription;\r\n          }\r\n          const nodeId = 'node_' + item.BoothNumber;\r\n          const diagramNode: NodeModel = {\r\n            id: nodeId,\r\n            shape: {\r\n              type: 'Basic',\r\n              shape: this.boothShapes.filter(e => e.Id == item.ShapeId)[0].Name\r\n            },\r\n            style: {\r\n              fill: backColor,\r\n              strokeColor: this.convertColor(item.BorderColor),\r\n              color: fontColor,\r\n              strokeWidth: 1,\r\n              fontSize: item.FontSize,\r\n              textWrapping: 'Wrap',\r\n              fontFamily: this.fontName.filter(e => e.Id == item.FontName)[0].Name\r\n            },\r\n            annotations:\r\n              [{\r\n                content: item.BoothNumber,\r\n                style: {\r\n                  fontSize: item.FontSize,\r\n                  color: fontColor,\r\n                  fontFamily: this.fontName.filter(e => e.Id == item.FontName)[0].Name,\r\n                  textWrapping: 'Wrap',\r\n                  bold: this.fontStyle.filter(e => e.Id == item.FontStyle)[0].Name.toLowerCase().includes('bold'),\r\n                  italic: this.fontStyle.filter(e => e.Id == item.FontStyle)[0].Name.toLowerCase().includes('italic')\r\n                },\r\n\r\n                constraints: AnnotationConstraints.ReadOnly\r\n              }],\r\n              tooltip: {\r\n                content: tooltipCaption,\r\n                position: 'TopCenter',\r\n                relativeMode: 'Object',\r\n              },\r\n            width: item.Width * 3,\r\n            height: item.Length * 3,\r\n            addInfo: {\r\n              allowDrag: true,\r\n              name: 'booth',\r\n              status: item.Status\r\n            },\r\n            constraints: NodeConstraints.Default & ~(NodeConstraints.Drag) | NodeConstraints.Tooltip,\r\n            offsetX: item.LeftCoordinate,\r\n            offsetY: item.TopCoordinate,\r\n            rotateAngle: item.RotateAngle\r\n          };\r\n          this.diagram.add(diagramNode);\r\n        }\r\n      }\r\n      this.diagram.fitToPage();\r\n      if (this.defaultZoomFactor) {\r\n        let zoomOptions: ZoomOptions = {\r\n          type: 'ZoomIn',\r\n          zoomFactor: this.defaultZoomFactor\r\n        };\r\n        this.diagram.zoomTo(zoomOptions);\r\n      }\r\n    }\r\n    this.markSelectedBooths();\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n\r\n\r\n  getAllBoothsForLayout() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (this.rentalType == \"D\") {\r\n      var obj;\r\n      var rentalStartDate = this.sharedDataService.dailyRentalSelectedDays[0];\r\n      var rentalDaysLength = this.sharedDataService.dailyRentalSelectedDays.length;\r\n      const rentalStartDateYear = new Date(this.sharedDataService.dailyRentalSelectedDays[0]).getFullYear();\r\n      const rentalStartDateMonth = new Date(this.sharedDataService.dailyRentalSelectedDays[0]).getMonth() + 1;\r\n      const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n      var selectedMarketDays = [];\r\n      rentalStartDate.getDay() == 0 ? selectedMarketDays.push(1) : 0;\r\n      rentalStartDate.getDay() == 1 ? selectedMarketDays.push(2) : 0;\r\n      rentalStartDate.getDay() == 2 ? selectedMarketDays.push(3) : 0;\r\n      rentalStartDate.getDay() == 3 ? selectedMarketDays.push(4) : 0;\r\n      rentalStartDate.getDay() == 4 ? selectedMarketDays.push(5) : 0;\r\n      rentalStartDate.getDay() == 5 ? selectedMarketDays.push(6) : 0;\r\n      rentalStartDate.getDay() == 6 ? selectedMarketDays.push(7) : 0;\r\n      obj = {\r\n        RentalStartDate: this.sharedDataService.dailyRentalSelectedDays[0],\r\n        RentalEndDate: this.sharedDataService.dailyRentalSelectedDays[rentalDaysLength - 1],\r\n        RentalYearMonth: rentalStartDateYearMonth,\r\n        Monday: rentalStartDate.getDay() == 1 ? true : false,\r\n        Tuesday: rentalStartDate.getDay() == 2 ? true : false,\r\n        Wednesday: rentalStartDate.getDay() == 3 ? true : false,\r\n        Thursday: rentalStartDate.getDay() == 4 ? true : false,\r\n        Friday: rentalStartDate.getDay() == 5 ? true : false,\r\n        Saturday: rentalStartDate.getDay() == 6 ? true : false,\r\n        Sunday: rentalStartDate.getDay() == 0 ? true : false,\r\n        MarketDays: selectedMarketDays.toString(),\r\n        MarketId: this.marketId\r\n      }\r\n      forkJoin({\r\n        boothsList: this.marketInfoService.getAllBoothsForDailyRentalTypeLayout(this.marketId, this.partId, this.sharedDataService.dailyRentalSelectedDays),\r\n        boothStatus: this.rentalService.getBoothStatus(obj)\r\n      }).subscribe(({ boothsList, boothStatus }) => {\r\n        let data = boothsList;\r\n        this.bindBoothsToLayout(data,boothStatus);\r\n        this.loaderIcon = Promise.resolve(false);\r\n      });\r\n    }\r\n    else if(this.rentalType == \"W\" || this.rentalType == \"CW\"){\r\n      const subRentSettings = this.rentalService.getRentalSettings(this.marketId).subscribe((response: any) => {\r\n        if (response) {\r\n          const rentalStartDateYear = new Date(this.LayoutData.weeklyRentalStartDate.split('-')[0]).getFullYear();\r\n          const rentalStartDateMonth = new Date(this.LayoutData.weeklyRentalStartDate.split('-')[0]).getMonth() + 1;\r\n          const rentalEndDateYear = new Date(this.LayoutData.weeklyRentalEndDate.split('-')[1]).getFullYear();\r\n          const rentalEndDateMonth = new Date(this.LayoutData.weeklyRentalEndDate.split('-')[1]).getMonth() + 1;\r\n          const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n          const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n          var marketDays = '';\r\n          this.LayoutData.weeklyRentalMarketDays.forEach(element => {\r\n            marketDays = marketDays.concat(element) + ',';\r\n          });\r\n          var obj = {\r\n            PartId: this.partId,\r\n            RentalStartDate: new Date(this.LayoutData.weeklyRentalFirstDay),\r\n            RentalEndDate: new Date(this.LayoutData.weeklyRentalEndDate.split('-')[1]),\r\n            FirstDayOfRentalStartWeek: new Date(this.LayoutData.weeklyRentalStartDate.split('-')[0]),\r\n            FirstDayOfRentalEndWeek: new Date(this.LayoutData.weeklyRentalEndDate.split('-')[0]),\r\n            RentalStartDateYearMonth: rentalStartDateYearMonth,\r\n            RentalEndDateYearMonth: rentalEndDateYearMonth,\r\n            // SelectedRentalDates: ,\r\n            // SelectedNumberOfRentalDates: ,\r\n            MarketDays: marketDays.substring(0, marketDays.length - 1),\r\n            WeeklyCombWeeklyReservationPeriod: response.WeeklyCombWeeklyReservationPeriod,\r\n            MonthlyCombMonthlyReservationPeriod: response.MonthlyCombMonthlyReservationPeriod,\r\n            RentalStartDateWeekDayNumber: new Date(this.LayoutData.weeklyRentalStartDate.split('-')[0]).getDay(),\r\n            AllowVendorVacation: false,\r\n            Monday: this.LayoutData.Monday ? true : false,\r\n            Tuesday: this.LayoutData.Tuesday ? true : false,\r\n            Wednesday: this.LayoutData.Wednesday ? true : false,\r\n            Thursday: this.LayoutData.Thursday ? true : false,\r\n            Friday: this.LayoutData.Friday ? true : false,\r\n            Saturday: this.LayoutData.Saturday ? true : false,\r\n            Sunday: this.LayoutData.Sunday ? true : false,\r\n          }\r\n          const sub = this.marketInfoService.getALLBoothsForLayoutALLRentalTypes(this.marketId, obj).subscribe((response) => {\r\n            let data = response;\r\n            this.bindBoothsToLayout(data,'');\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }, err => {\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n          this.subscriptions.push(sub);\r\n        }\r\n      });\r\n    }\r\n    else if(this.rentalType == \"M\" || this.rentalType == \"CM\"){\r\n      const subRentSettings = this.rentalService.getRentalSettings(this.marketId).subscribe((response: any) => {\r\n        if (response) {         \r\n          const rentalStartDateYear = new Date(this.LayoutData.monthlyRentalStartDate.split('-')[0]).getFullYear();\r\n          const rentalStartDateMonth = new Date(this.LayoutData.monthlyRentalStartDate.split('-')[0]).getMonth() + 1;\r\n          const rentalEndDateYear = new Date(this.LayoutData.monthlyRentalEndDate.split('-')[0]).getFullYear();\r\n          const rentalEndDateMonth = new Date(this.LayoutData.monthlyRentalEndDate.split('-')[0]).getMonth() + 1;\r\n          const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n          const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n          var marketDays = '';\r\n          this.LayoutData.monthlyRentalMarketDays.forEach(element => {\r\n            marketDays = marketDays.concat(element) + ',';\r\n          });\r\n          var obj = {\r\n            PartId: this.partId,\r\n            RentalStartDate:new Date(this.LayoutData.RentalStartDate),\r\n            RentalEndDate:new Date(this.LayoutData.RentalEndDate),\r\n            FirstDayOfRentalStartWeek:new Date(this.LayoutData.RentalStartDate),\r\n            FirstDayOfRentalEndWeek: new Date(this.LayoutData.RentalEndDate),\r\n            RentalStartDateYearMonth: rentalStartDateYearMonth,\r\n            RentalEndDateYearMonth: rentalEndDateYearMonth,\r\n            MarketDays: marketDays.substring(0, marketDays.length - 1),\r\n            WeeklyCombWeeklyReservationPeriod: response.WeeklyCombWeeklyReservationPeriod,\r\n            MonthlyCombMonthlyReservationPeriod: response.MonthlyCombMonthlyReservationPeriod,\r\n            RentalStartDateWeekDayNumber: new Date(this.LayoutData.monthlyRentalStartDate.split('-')[0]).getDay(),\r\n            AllowVendorVacation: false,\r\n            Monday: this.LayoutData.Monday ? true : false,\r\n            Tuesday: this.LayoutData.Tuesday ? true : false,\r\n            Wednesday: this.LayoutData.Wednesday ? true : false,\r\n            Thursday: this.LayoutData.Thursday ? true : false,\r\n            Friday: this.LayoutData.Friday ? true : false,\r\n            Saturday: this.LayoutData.Saturday ? true : false,\r\n            Sunday: this.LayoutData.Sunday ? true : false,\r\n          }\r\n          const sub = this.marketInfoService.getALLBoothsForLayoutALLRentalTypes(this.marketId, obj).subscribe((response) => {\r\n            let data = response;\r\n            this.bindBoothsToLayout(data,'');\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }, err => {\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n          this.subscriptions.push(sub);\r\n        }\r\n      });\r\n    }\r\n  }\r\n\r\n  changeLayout() {\r\n    this.diagram.clear();\r\n    this.getBuildingForLayout();\r\n    this.getImagesForLayout();\r\n    this.getAllBoothsForLayout();\r\n  }\r\n\r\n  getListOfValuesData() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    forkJoin({\r\n      res: this.marketInfoService.getListOfValuesData(),\r\n      layoutFonts: this.marketInfoService.getLayoutFonts(this.marketId)\r\n    }).subscribe(({ res, layoutFonts }) => {\r\n      if (res) {\r\n        this.boothShapes = res.BoothShapes;\r\n        this.fontName = res.FontName;\r\n        this.fontStyle = res.FontStyle;\r\n      }      \r\n      if(layoutFonts){\r\n        this.defaultZoomFactor = layoutFonts.DefaultZoomFactor ?? 0;\r\n      }\r\n      this.getAllBoothsForLayout();\r\n      this.getBuildingForLayout();\r\n      this.getImagesForLayout();\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  convertColor(colorValue: number): string {\r\n    if (colorValue == 255 || colorValue == 65280 || colorValue == 0)\r\n      return '#' + colorValue.toString(16).padStart(6, '0');\r\n    else\r\n      return '#' + colorValue.toString(16);\r\n  }  \r\n\r\n  nodeMouseOver(event){\r\n    if (event.target) {      \r\n      const nodeId = event.target.id == \"\"? 'node_' + event.target.innerHTML : event.target.id.replace('_content', '');\r\n      const selectedNode = this.diagram.getObject(nodeId) as NodeModel;\r\n      if(selectedNode){\r\n       var boothNo =  selectedNode.id.replace('node_','');\r\n       var selectedBooth = this.allBooths.filter(e => e.BoothNumber == boothNo);\r\n       this.BoothNumber = boothNo;\r\n       this.BoothType = selectedBooth[0].BoothType;    \r\n      }\r\n      else{\r\n        this.BoothNumber = \"\";\r\n       this.BoothType = \"\";\r\n      }\r\n    }\r\n  }\r\n\r\n  nodeClick(event): void {\r\n    var args;\r\n    if (event.target) {\r\n      const nodeId = event.target.id == \"\" ? 'node_' + event.target.innerHTML : event.target.id.replace('_content', '');\r\n      args = this.diagram.getObject(nodeId.replace(\"&amp;\",\"&\")) as NodeModel;\r\n    }\r\n    else{\r\n      const nodeId = event.element.properties.id;\r\n      if (nodeId && nodeId.includes('mark')) {\r\n        const mainNodeId = nodeId.replace('mark', '').replace(\"_amper_\",\"&\").replace(\"&amp;\",\"&\");\r\n        args = this.diagram.getObject(mainNodeId) as NodeModel;\r\n      }\r\n    }\r\n    if (args.properties.addInfo) {\r\n      if (args.properties.addInfo.name == \"booth\" && args.properties.addInfo.status == \"A\") {\r\n        this.rentalService.getRecordFromTemp().subscribe(async (response: any[]) => {\r\n          const dataFromTemp = response;\r\n          const nodeId = args.properties.id;\r\n          var selectedBooth = this.allBooths.filter(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n          this.BoothNumber = args.properties.annotations[0].properties.content;\r\n          this.BoothType = selectedBooth[0].BoothType;\r\n          const selectedNode = this.diagram.getObject(nodeId) as NodeModel;\r\n          var boothIndex = this.selectedBoothData.findIndex(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n          if (boothIndex == -1) {\r\n            const diagramNode: NodeModel = {\r\n              id: nodeId.replace(\"&\",\"_amper_\") + \"mark\",\r\n              offsetX: selectedNode.offsetX,\r\n              offsetY: selectedNode.offsetY,\r\n              width: selectedNode.width / 2,\r\n              height: selectedNode.height / 2,\r\n              shape: {\r\n                type: \"HTML\",              \r\n                content: `<div style=\"width:${selectedNode.width/2}px; height: ${selectedNode.height/2}px\">\r\n                <svg width=\"100%\" height=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" style=\"display: block; margin: 0; padding: 0;\">\r\n                    <line x1=\"0\" y1=\"0\" x2=\"100%\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                    <line x1=\"100%\" y1=\"0\" x2=\"0\" y2=\"100%\" stroke=\"black\" stroke-width=\"2\"/>\r\n                </svg>\r\n            </div>`\r\n              },\r\n              constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n            };\r\n\r\n            var boothSelectedByOtherUser = false;\r\n            if (this.rentalType == \"D\") {\r\n              if (dataFromTemp.length > 0) {\r\n                this.sharedDataService.dailyRentalSelectedDays.forEach(date => {\r\n                  var Sunday = new Date(date).getDay() == 0 ? true : false;\r\n                  var Monday = new Date(date).getDay() == 1 ? true : false;\r\n                  var Tuesday = new Date(date).getDay() == 2 ? true : false;\r\n                  var Wednesday = new Date(date).getDay() == 3 ? true : false;\r\n                  var Thursday = new Date(date).getDay() == 4 ? true : false;\r\n                  var Friday = new Date(date).getDay() == 5 ? true : false;\r\n                  var Saturday = new Date(date).getDay() == 6 ? true : false;\r\n                  dataFromTemp.forEach(element => {\r\n                    if (this.datePipe.transform(date, 'MM/dd/yyyy') >= this.datePipe.transform(element.StartDate, 'MM/dd/yyyy')\r\n                      && this.datePipe.transform(date, 'MM/dd/yyyy') <= this.datePipe.transform(element.EndDate, 'MM/dd/yyyy') && element.TempRecordNo != this.sharedDataService.tempRecordNo\r\n                    && (element.Sunday == Sunday || element.Monday == Monday || element.Tuesday == Tuesday\r\n                      || element.Wednesday == Wednesday || element.Thursday == Thursday || element.Friday == Friday || element.Saturday == Saturday)) {\r\n                      if (element.BoothNo == selectedBooth[0].BoothNumber) {\r\n                        boothSelectedByOtherUser = true;\r\n                      }\r\n                    }\r\n                  });\r\n                });\r\n              }\r\n              if (boothSelectedByOtherUser) {\r\n                Swal.fire({\r\n                  text: $localize`This booth has been already selected by another user`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              } else {\r\n                this.diagram.add(diagramNode);\r\n              }\r\n            }\r\n            else if (this.rentalType == \"M\") {\r\n              const rentalDates = [];\r\n              var rentedBoothDates = [];\r\n              var rentalstartDate;\r\n              const startDate = new Date(this.LayoutData.RentalStartDate);\r\n              const endMonth = this.LayoutData.monthlyRentalEndDate\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                if (dataFromTemp.length > 0) {\r\n                  dataFromTemp.forEach(element => {\r\n                    var dayOfWeek;\r\n                    var selectedDaysOfWeek = [];\r\n                    element.Sunday == true ? selectedDaysOfWeek.push(1) : 0;\r\n                    element.Monday == true ? selectedDaysOfWeek.push(2) : 0;\r\n                    element.Tuesday == true ? selectedDaysOfWeek.push(3) : 0;\r\n                    element.Wednesday == true ? selectedDaysOfWeek.push(4) : 0;\r\n                    element.Thursday == true ? selectedDaysOfWeek.push(5) : 0;\r\n                    element.Friday == true ? selectedDaysOfWeek.push(6) : 0;\r\n                    element.Saturday == true ? selectedDaysOfWeek.push(7) : 0;\r\n\r\n                    const startDate = new Date(element.StartDate);\r\n                    const endDate = new Date(element.EndDate);\r\n                    while (new Date(startDate) <= new Date(endDate)) {\r\n                      selectedDaysOfWeek.map((el, i) => {\r\n                        dayOfWeek = el - 1;\r\n                        if (startDate.getDay() === dayOfWeek) {\r\n                          rentedBoothDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                        }\r\n                      });\r\n                      startDate.setDate(startDate.getDate() + 1);\r\n                    }\r\n                    var Sunday = el == 1 ? true : false;\r\n                    var Monday = el == 2 ? true : false;\r\n                    var Tuesday = el == 3 ? true : false;\r\n                    var Wednesday = el == 4 ? true : false;\r\n                    var Thursday = el == 5 ? true : false;\r\n                    var Friday = el == 6 ? true : false;\r\n                    var Saturday = el == 7 ? true : false;\r\n                    const isDateIncluded = rentalDates.some(rentalDate => {\r\n                      const startDate = rentalDate.startDate;\r\n                      return rentedBoothDates.includes(startDate);\r\n                    });\r\n                    if (isDateIncluded && element.BoothNo == selectedBooth[0].BoothNumber && element.TempRecordNo != this.LayoutData.tempRecordNo\r\n                      && (element.Sunday == Sunday || element.Monday == Monday || element.Tuesday == Tuesday\r\n                      || element.Wednesday == Wednesday || element.Thursday == Thursday || element.Friday == Friday || element.Saturday == Saturday)\r\n                    ) {\r\n                      boothSelectedByOtherUser = true;\r\n                    }\r\n                  });\r\n                }\r\n                if (boothSelectedByOtherUser) {\r\n                  Swal.fire({\r\n                    text: $localize`This booth has been already selected by another user`,\r\n                    icon: \"warning\",\r\n                    confirmButtonText: $localize`Ok`,\r\n                  });\r\n                } else {\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              });\r\n            }\r\n            else if (this.rentalType == \"CM\") {\r\n              const rentalDates = [];\r\n              var rentedBoothDates = [];\r\n              var rentalstartDate;\r\n              const startDate = new Date(this.LayoutData.RentalStartDate);\r\n              const endMonth = this.LayoutData.monthlyRentalEndDate\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              if (this.LayoutData.combinedMonthlyBookingEndDate) {\r\n                const rentalEndDateYear = endDate.getFullYear();\r\n                const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth,this.marketId).toPromise();\r\n                endDate = new Date(response.MonthEndDateSelected);\r\n              }\r\n              this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                if (dataFromTemp.length > 0) {\r\n                  dataFromTemp.forEach(element => {\r\n                    const marketDaysOfTemprecord = [];\r\n                    var rentedBoothDates = [];\r\n                    element.Sunday ? marketDaysOfTemprecord.push(1) : 0;\r\n                    element.Monday ? marketDaysOfTemprecord.push(2) : 0;\r\n                    element.Tuesday ? marketDaysOfTemprecord.push(3) : 0;\r\n                    element.Wednesday ? marketDaysOfTemprecord.push(4) : 0;\r\n                    element.Thursday ? marketDaysOfTemprecord.push(5) : 0;\r\n                    element.Friday ? marketDaysOfTemprecord.push(6) : 0;\r\n                    element.Saturday ? marketDaysOfTemprecord.push(7) : 0;\r\n                    marketDaysOfTemprecord.map((el, i) => {\r\n                      const dayOfWeek = el - 1;\r\n                      const startDate = new Date(element.StartDate);\r\n                      const endDate = new Date(element.EndDate);\r\n                      while (new Date(startDate) <= new Date(endDate)) {\r\n                        if (startDate.getDay() === dayOfWeek) {\r\n                          rentedBoothDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                        }\r\n                        startDate.setDate(startDate.getDate() + 1);\r\n                      }\r\n                    });\r\n                    var Monday = this.LayoutData.Monday ? true : false;\r\n                    var Tuesday = this.LayoutData.Tuesday ? true : false;\r\n                    var Wednesday = this.LayoutData.Wednesday ? true : false;\r\n                    var Thursday = this.LayoutData.Thursday ? true : false;\r\n                    var Friday = this.LayoutData.Friday ? true : false;\r\n                    var Saturday = this.LayoutData.Saturday ? true : false;\r\n                    var Sunday = this.LayoutData.Sunday ? true : false;\r\n                    const isDateIncluded = rentalDates.some(rentalDate => {\r\n                      const startDate = rentalDate.startDate;\r\n                      return rentedBoothDates.includes(startDate);\r\n                    });\r\n                    if (isDateIncluded && element.BoothNo == selectedBooth[0].BoothNumber && element.TempRecordNo != this.LayoutData.tempRecordNo\r\n                      && (element.Sunday == Sunday || element.Monday == Monday || element.Tuesday == Tuesday\r\n                        || element.Wednesday == Wednesday || element.Thursday == Thursday || element.Friday == Friday || element.Saturday == Saturday)\r\n                    ) {\r\n                      boothSelectedByOtherUser = true;\r\n                    }\r\n                  });\r\n                }\r\n                if (boothSelectedByOtherUser) {\r\n                  Swal.fire({\r\n                    text: $localize`This booth has been already selected by another user`,\r\n                    icon: \"warning\",\r\n                    confirmButtonText: $localize`Ok`,\r\n                  });\r\n                } else {\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              });\r\n            }\r\n            else if (this.rentalType == \"CW\") {\r\n              const rentalDates = [];\r\n              var rentedBoothDates = [];\r\n              var rentalstartDate;\r\n              const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n              const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n              this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                if (dataFromTemp.length > 0) {\r\n                  dataFromTemp.forEach(element => {\r\n                    const marketDaysOfTemprecord = [];\r\n                    var rentedBoothDates = [];\r\n                    element.Sunday ? marketDaysOfTemprecord.push(1) : 0;\r\n                    element.Monday ? marketDaysOfTemprecord.push(2) : 0;\r\n                    element.Tuesday ? marketDaysOfTemprecord.push(3) : 0;\r\n                    element.Wednesday ? marketDaysOfTemprecord.push(4) : 0;\r\n                    element.Thursday ? marketDaysOfTemprecord.push(5) : 0;\r\n                    element.Friday ? marketDaysOfTemprecord.push(6) : 0;\r\n                    element.Saturday ? marketDaysOfTemprecord.push(7) : 0;\r\n                    marketDaysOfTemprecord.map((el, i) => {\r\n                      const dayOfWeek = el - 1;\r\n                      const startDate = new Date(element.StartDate);\r\n                      const endDate = new Date(element.EndDate);\r\n                      while (new Date(startDate) <= new Date(endDate)) {\r\n                        if (startDate.getDay() === dayOfWeek) {\r\n                          rentedBoothDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                        }\r\n                        startDate.setDate(startDate.getDate() + 1);\r\n                      }\r\n                    });\r\n                    var Monday = this.LayoutData.Monday ? true : false;\r\n                    var Tuesday = this.LayoutData.Tuesday ? true : false;\r\n                    var Wednesday = this.LayoutData.Wednesday ? true : false;\r\n                    var Thursday = this.LayoutData.Thursday ? true : false;\r\n                    var Friday = this.LayoutData.Friday ? true : false;\r\n                    var Saturday = this.LayoutData.Saturday ? true : false;\r\n                    var Sunday = this.LayoutData.Sunday ? true : false;\r\n                    const isDateIncluded = rentalDates.some(rentalDate => {\r\n                      const startDate = rentalDate.startDate;\r\n                      return rentedBoothDates.includes(startDate);\r\n                    });\r\n                    if (isDateIncluded && element.BoothNo == selectedBooth[0].BoothNumber && element.TempRecordNo != this.LayoutData.tempRecordNo\r\n                      && (element.Sunday == Sunday || element.Monday == Monday || element.Tuesday == Tuesday\r\n                        || element.Wednesday == Wednesday || element.Thursday == Thursday || element.Friday == Friday || element.Saturday == Saturday)\r\n                    ) {\r\n                      boothSelectedByOtherUser = true;\r\n                    }\r\n                  });\r\n                }\r\n                if (boothSelectedByOtherUser) {\r\n                  Swal.fire({\r\n                    text: $localize`This booth has been already selected by another user`,\r\n                    icon: \"warning\",\r\n                    confirmButtonText: $localize`Ok`,\r\n                  });\r\n                } else {\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              });\r\n            }\r\n            else if (this.rentalType == \"W\") {\r\n              const rentalDates = [];\r\n              var rentedBoothDates = [];\r\n              var rentalstartDate;\r\n              const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n              const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n              this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                if (dataFromTemp.length > 0) {\r\n                  dataFromTemp.forEach(element => {\r\n                    const marketDaysOfTemprecord = [];\r\n                    var rentedBoothDates = [];\r\n                    element.Sunday ? marketDaysOfTemprecord.push(1) : 0;\r\n                    element.Monday ? marketDaysOfTemprecord.push(2) : 0;\r\n                    element.Tuesday ? marketDaysOfTemprecord.push(3) : 0;\r\n                    element.Wednesday ? marketDaysOfTemprecord.push(4) : 0;\r\n                    element.Thursday ? marketDaysOfTemprecord.push(5) : 0;\r\n                    element.Friday ? marketDaysOfTemprecord.push(6) : 0;\r\n                    element.Saturday ? marketDaysOfTemprecord.push(7) : 0;\r\n                    marketDaysOfTemprecord.map((el, i) => {\r\n                      const dayOfWeek = el - 1;\r\n                      const startDate = new Date(element.StartDate);\r\n                      const endDate = new Date(element.EndDate);\r\n                      while (new Date(startDate) <= new Date(endDate)) {\r\n                        if (startDate.getDay() === dayOfWeek) {\r\n                          rentedBoothDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                        }\r\n                        startDate.setDate(startDate.getDate() + 1);\r\n                      }\r\n                    });\r\n                    var Monday = this.LayoutData.Monday ? true : false;\r\n                    var Tuesday = this.LayoutData.Tuesday ? true : false;\r\n                    var Wednesday = this.LayoutData.Wednesday ? true : false;\r\n                    var Thursday = this.LayoutData.Thursday ? true : false;\r\n                    var Friday = this.LayoutData.Friday ? true : false;\r\n                    var Saturday = this.LayoutData.Saturday ? true : false;\r\n                    var Sunday = this.LayoutData.Sunday ? true : false;\r\n                    const isDateIncluded = rentalDates.some(rentalDate => {\r\n                      const startDate = rentalDate.startDate;\r\n                      return rentedBoothDates.includes(startDate);\r\n                    });\r\n                    if (isDateIncluded && element.BoothNo == selectedBooth[0].BoothNumber && element.TempRecordNo != this.LayoutData.tempRecordNo\r\n                      && (element.Sunday == Sunday || element.Monday == Monday || element.Tuesday == Tuesday\r\n                        || element.Wednesday == Wednesday || element.Thursday == Thursday || element.Friday == Friday || element.Saturday == Saturday)\r\n                    ) {\r\n                      boothSelectedByOtherUser = true;\r\n                    }\r\n                  });\r\n                }\r\n                if (boothSelectedByOtherUser) {\r\n                  Swal.fire({\r\n                    text: $localize`This booth has been already selected by another user!`,\r\n                    icon: \"warning\",\r\n                    confirmButtonText: $localize`Ok`,\r\n                  });\r\n                } else {\r\n                  this.diagram.add(diagramNode);\r\n                }\r\n              });\r\n            }\r\n            else {\r\n              this.diagram.add(diagramNode);\r\n            }\r\n\r\n            if (this.rentalType == \"D\") {\r\n              if (!boothSelectedByOtherUser) {\r\n                this.selectedBoothData.push(\r\n                  {\r\n                    BoothNumber: selectedBooth[0].BoothNumber,\r\n                    BoothType: selectedBooth[0].BoothType,\r\n                    BoothDescription: selectedBooth[0].BoothDescription,\r\n                    BoothTypeId: selectedBooth[0].BoothTypeId,\r\n                  });\r\n                this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                this.insertDataToTemp(selectedBooth[0].BoothNumber,'','','');\r\n                var selectedBoothsForRental = {\r\n                  BoothNumber: selectedBooth[0].BoothNumber\r\n                }\r\n                this.selectedBoothsForRental.push(selectedBoothsForRental);\r\n              }\r\n            }\r\n            else if (this.rentalType == \"W\") {\r\n              if (!boothSelectedByOtherUser) {\r\n                this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                  var selectedBooth = this.allBooths.filter(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n                  var marketDay;\r\n                  switch (el) {\r\n                    case 1: marketDay = 'Sun'\r\n                      break;\r\n                    case 2: marketDay = 'Mon'\r\n                      break;\r\n                    case 3: marketDay = 'Tue'\r\n                      break;\r\n                    case 4: marketDay = 'Wed'\r\n                      break;\r\n                    case 5: marketDay = 'Thu'\r\n                      break;\r\n                    case 6: marketDay = 'Fri'\r\n                      break;\r\n                    case 7: marketDay = 'Sat'\r\n                      break;\r\n                  }\r\n                  var selectedRentalDates = [];\r\n                  const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n                  const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n                  const selectedDayOfWeek = el - 1;\r\n                  while (new Date(startDate) <= new Date(endDate)) {\r\n                    if (startDate.getDay() === selectedDayOfWeek) {\r\n                      selectedRentalDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                    }\r\n                    startDate.setDate(startDate.getDate() + 1);\r\n                  }\r\n                  this.selectedBoothData.push(\r\n                    {\r\n                      BoothNumber: selectedBooth[0].BoothNumber,\r\n                      BoothType: selectedBooth[0].BoothType,\r\n                      BoothTypeId: selectedBooth[0].BoothTypeId,\r\n                      BoothDescription: selectedBooth[0].BoothDescription,\r\n                      Sunday: el == 1 ? true : false,\r\n                      Monday: el == 2 ? true : false,\r\n                      Tuesday: el == 3 ? true : false,\r\n                      Wednesday: el == 4 ? true : false,\r\n                      Thursday: el == 5 ? true : false,\r\n                      Friday: el == 6 ? true : false,\r\n                      Saturday: el == 7 ? true : false,\r\n                      MarketDay: marketDay\r\n                    });\r\n                    this.insertDataToTemp(selectedBooth[0].BoothNumber, selectedRentalDates[0], selectedRentalDates[selectedRentalDates.length - 1], '');\r\n                    var selectedBoothsForCWRental = {\r\n                      BoothNumber: selectedBooth[0].BoothNumber,\r\n                      StartDate: selectedRentalDates[0],\r\n                      EndDate: selectedRentalDates[selectedRentalDates.length - 1],\r\n                      Monday: this.LayoutData.Monday ? true : false,\r\n                      Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                      Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                      Thursday: this.LayoutData.Thursday ? true : false,\r\n                      Friday: this.LayoutData.Friday ? true : false,\r\n                      Saturday: this.LayoutData.Saturday ? true : false,\r\n                      Sunday: this.LayoutData.Sunday ? true : false\r\n                    }\r\n                    this.selectedBoothsForRental.push(selectedBoothsForCWRental);\r\n                    this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                });\r\n                this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              }\r\n            }\r\n            else if (this.rentalType == \"CW\") {\r\n              if (!boothSelectedByOtherUser) {\r\n                var selectedBooth = this.allBooths.filter(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n                const rentalDates = [];\r\n                const currentWeekRentalDates = [];\r\n                var marketDays = 0;\r\n                this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                  const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n                  const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n                  const currentWeekEnd = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[1]);\r\n                  const selectedDayOfWeek = el - 1;\r\n                  const today: Date = new Date(new Date().toDateString())\r\n                  let currentDay = new Date(startDate);\r\n                  while (currentDay <= endDate) {\r\n                    if (currentDay >= today) {\r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        marketDays += 1;\r\n                        rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n                  currentDay = new Date(startDate);\r\n                  while (currentDay <= currentWeekEnd) {\r\n                    if (currentDay >= today) {\r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        marketDays += 1;\r\n                        currentWeekRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n                  const compareDates = (a: DateString, b: DateString): number => {\r\n                    const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    return dateA - dateB;\r\n                  };\r\n                  const sortedDates = rentalDates.sort(compareDates);\r\n                });\r\n                this.selectedBoothData.push(\r\n                  {\r\n                    BoothNumber: selectedBooth[0].BoothNumber,\r\n                    BoothType: selectedBooth[0].BoothType,\r\n                    BoothTypeId: selectedBooth[0].BoothTypeId,\r\n                    BoothDescription: selectedBooth[0].BoothDescription,\r\n                    Sunday: this.LayoutData.weeklyRentalMarketDays.includes(1) ? true : false,\r\n                    Monday: this.LayoutData.weeklyRentalMarketDays.includes(2) ? true : false,\r\n                    Tuesday: this.LayoutData.weeklyRentalMarketDays.includes(3) ? true : false,\r\n                    Wednesday: this.LayoutData.weeklyRentalMarketDays.includes(4) ? true : false,\r\n                    Thursday: this.LayoutData.weeklyRentalMarketDays.includes(5) ? true : false,\r\n                    Friday: this.LayoutData.weeklyRentalMarketDays.includes(6) ? true : false,\r\n                    Saturday: this.LayoutData.weeklyRentalMarketDays.includes(7) ? true : false,\r\n                    RentalEndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                    NoOfMarketDays: marketDays,\r\n                    StartDateList: currentWeekRentalDates,\r\n                  });\r\n                this.insertDataToTemp(selectedBooth[0].BoothNumber, rentalDates[0].startDate, rentalDates[rentalDates.length - 1].startDate, '');\r\n                var selectedBoothsForCWRental = {\r\n                  BoothNumber: selectedBooth[0].BoothNumber,\r\n                  StartDate: rentalDates[0].startDate,\r\n                  EndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                  Monday: this.LayoutData.Monday ? true : false,\r\n                  Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                  Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                  Thursday: this.LayoutData.Thursday ? true : false,\r\n                  Friday: this.LayoutData.Friday ? true : false,\r\n                  Saturday: this.LayoutData.Saturday ? true : false,\r\n                  Sunday: this.LayoutData.Sunday ? true : false\r\n                }\r\n                this.selectedBoothsForRental.push(selectedBoothsForCWRental);\r\n                this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              }\r\n            }\r\n            else if (this.rentalType == \"M\") {\r\n              if (!boothSelectedByOtherUser) {\r\n                var marketDay;\r\n                const rentalDates = [];\r\n                const currentMonthRentalDates = [];\r\n                this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                  var selectedBooth = this.allBooths.filter(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n                  var marketDay;\r\n                  switch (el) {\r\n                    case 1: marketDay = 'Sun'\r\n                      break;\r\n                    case 2: marketDay = 'Mon'\r\n                      break;\r\n                    case 3: marketDay = 'Tue'\r\n                      break;\r\n                    case 4: marketDay = 'Wed'\r\n                      break;\r\n                    case 5: marketDay = 'Thu'\r\n                      break;\r\n                    case 6: marketDay = 'Fri'\r\n                      break;\r\n                    case 7: marketDay = 'Sat'\r\n                      break;\r\n                  }\r\n                  var rentalstartDate = \"\";\r\n                  var marketDays = 0;\r\n                  const startDate = new Date(this.LayoutData.RentalStartDate);\r\n                  const endMonth = this.LayoutData.monthlyRentalEndDate\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n                  const currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n\r\n                  const selectedDayOfWeek = el - 1;\r\n                  let currentDay = new Date(startDate);\r\n                  while (currentDay <= endDate) {\r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      if (!rentalstartDate) {\r\n                        rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                      }\r\n                      marketDays += 1;\r\n                      rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n\r\n                  currentDay = new Date(startDate);\r\n                  while (currentDay <= currentMonthEnd) {\r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      if (!rentalstartDate) {\r\n                        rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                      }\r\n                      marketDays += 1;\r\n                      currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n\r\n                  const compareDates = (a: DateString, b: DateString): number => {\r\n                    const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    return dateA - dateB;\r\n                  };\r\n                  const sortedDates = rentalDates.sort(compareDates);\r\n\r\n                  const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n                    const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    return dateA - dateB;\r\n                  };\r\n                  const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n\r\n                  if (rentalstartDate) {\r\n                    this.selectedBoothData.push(\r\n                      {\r\n                        BoothNumber: selectedBooth[0].BoothNumber,\r\n                        BoothType: selectedBooth[0].BoothType,\r\n                        BoothTypeId: selectedBooth[0].BoothTypeId,\r\n                        BoothDescription: selectedBooth[0].BoothDescription,\r\n                        Sunday: el == 1 ? true : false,\r\n                        Monday: el == 2 ? true : false,\r\n                        Tuesday: el == 3 ? true : false,\r\n                        Wednesday: el == 4 ? true : false,\r\n                        Thursday: el == 5 ? true : false,\r\n                        Friday: el == 6 ? true : false,\r\n                        Saturday: el == 7 ? true : false,\r\n                        MarketDay: marketDay,\r\n                        RentalStartDate: rentalstartDate,\r\n                        NoOfMarketDays: marketDays,\r\n                        RentalEndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                        StartDateList: currentMonthRentalDates,\r\n                        RentalStartDateYearMonth: this.LayoutData.RentalStartDateYearMonth\r\n                      });\r\n\r\n                      this.insertDataToTemp(selectedBooth[0].BoothNumber,rentalstartDate,rentalDates[rentalDates.length - 1].startDate,el);\r\n                      var selectedBoothsForRental = {\r\n                        BoothNumber: selectedBooth[0].BoothNumber,\r\n                        StartDate: rentalstartDate,\r\n                        EndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                        Sunday: el == 1 ? true : false,\r\n                        Monday: el == 2 ? true : false,\r\n                        Tuesday: el == 3 ? true : false,\r\n                        Wednesday: el == 4 ? true : false,\r\n                        Thursday: el == 5 ? true : false,\r\n                        Friday: el == 6 ? true : false,\r\n                        Saturday: el == 7 ? true : false\r\n                      }\r\n                     this.selectedBoothsForRental.push(selectedBoothsForRental);\r\n                  }\r\n                });\r\n                this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              }\r\n            }\r\n            else if (this.rentalType == \"CM\") {\r\n              if (!boothSelectedByOtherUser) {\r\n                var selectedBooth = this.allBooths.filter(e => e.BoothNumber == args.properties.annotations[0].properties.content);\r\n                var marketDay;\r\n                var marketDays = 0;\r\n                const rentalDates = [];\r\n                var currentMonthRentalDates = [];\r\n                for (const el of this.LayoutData.monthlyRentalMarketDays) {\r\n                  var marketDay;\r\n                  const currentDate = new Date();\r\n                  const currentYear = currentDate.getFullYear();\r\n                  const currentMonth = currentDate.getMonth();\r\n                  var endDateYearMonth;\r\n                  const currentYearMonth =  `${currentYear}${(currentMonth +1) < 10 ? '0' : ''}${(currentMonth +1)}`;\r\n                  var startDate = new Date(this.LayoutData.RentalStartDate);\r\n                  const endMonth = this.LayoutData.monthlyRentalEndDate\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  const rentalStartDateYear = startDate.getFullYear();\r\n                  const rentalStartDateMonth = startDate.getMonth() + 1;\r\n                  const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n                  var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);             \r\n                \r\n                  if (this.LayoutData.combinedMonthlyBookingEndDate) {\r\n                    const rentalEndDateYear = endDate.getFullYear();\r\n                    const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                    const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                    const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth,this.marketId).toPromise();\r\n                    endDate = new Date(response.MonthEndDateSelected);\r\n                    endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n                    const rentalStartDate = new Date(startDate);          \r\n                    var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n                    var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n                    const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n                    if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n                      const previousMonthEndDate = await this.rentalService.GetSelectedMonthEndDate(PreviousMonthYearAndMonth, this.marketId).toPromise();\r\n                     const monthEndDate = new Date(previousMonthEndDate.MonthEndDateSelected);\r\n                      const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n                      if (dateDiff <= 7) {\r\n                       startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n                      }\r\n                    }\r\n                  }\r\n\r\n                  var currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n                  if (this.LayoutData.combinedMonthlyBookingEndDate) {\r\n                    const currentStartMonth = this.LayoutData.monthlyRentalStartDate;\r\n                    const [startMonthDate, startMonthYear] = currentStartMonth.split(' ');\r\n                    const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n                    var currentMonthEnd = new Date(startMonthYear, startMonthIndex + 1, 0);\r\n                    const rentalEndDateYear = currentMonthEnd.getFullYear();\r\n                    const rentalEndDateMonth = currentMonthEnd.getMonth() + 1;\r\n                    const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                    const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth, this.marketId).toPromise();\r\n                    if (rentalStartDateYearMonth == rentalEndDateYearMonth)\r\n                      currentMonthEnd = new Date(response.MonthEndDateSelected);\r\n                  }\r\n\r\n                  const selectedDayOfWeek = el - 1;\r\n                  let currentDay = new Date(startDate);\r\n                  while (currentDay <= endDate) {                \r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      if (!rentalstartDate) {\r\n                        rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                      }\r\n                      marketDays += 1;\r\n                      rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n\r\n                  if (this.LayoutData.combinedMonthlyBookingEndDate) {\r\n                    currentDay = new Date(startDate);\r\n                    while (currentDay <= currentMonthEnd) {\r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        if (!rentalstartDate) {\r\n                          rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                        }\r\n                        currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n                  }\r\n\r\n                  const compareDates = (a: DateString, b: DateString): number => {\r\n                    const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    return dateA - dateB;\r\n                  };\r\n                  const sortedDates = rentalDates.sort(compareDates);\r\n\r\n                  if (this.LayoutData.combinedMonthlyBookingEndDate) {\r\n                    const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n                      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      return dateA - dateB;\r\n                    };\r\n                    const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n                  }\r\n                  else {\r\n                    currentMonthRentalDates = rentalDates;\r\n                  }  \r\n                }\r\n             \r\n                this.selectedBoothData.push(\r\n                  {\r\n                    BoothNumber: selectedBooth[0].BoothNumber,\r\n                    BoothType: selectedBooth[0].BoothType,\r\n                    BoothTypeId: selectedBooth[0].BoothTypeId,\r\n                    BoothDescription: selectedBooth[0].BoothDescription,\r\n                    Sunday: this.LayoutData.monthlyRentalMarketDays.includes(1) ? true : false,\r\n                    Monday: this.LayoutData.monthlyRentalMarketDays.includes(2) ? true : false,\r\n                    Tuesday: this.LayoutData.monthlyRentalMarketDays.includes(3) ? true : false,\r\n                    Wednesday: this.LayoutData.monthlyRentalMarketDays.includes(4) ? true : false,\r\n                    Thursday: this.LayoutData.monthlyRentalMarketDays.includes(5) ? true : false,\r\n                    Friday: this.LayoutData.monthlyRentalMarketDays.includes(6) ? true : false,\r\n                    Saturday: this.LayoutData.monthlyRentalMarketDays.includes(7) ? true : false,\r\n                    MarketDay: marketDay,\r\n                    RentalStartDate: this.datePipe.transform(new Date(this.LayoutData.RentalStartDate), 'MMM d, y'),\r\n                    NoOfMarketDays: marketDays,\r\n                    RentalEndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                    StartDateList: currentMonthRentalDates,\r\n                    AllRentalDates:rentalDates.map(el => new Date(el.startDate))\r\n                  });\r\n\r\n                this.insertDataToTemp(selectedBooth[0].BoothNumber, rentalDates[0].startDate, rentalDates[rentalDates.length - 1].startDate, '');\r\n                var selectedBoothsForCMRental = {\r\n                  BoothNumber: selectedBooth[0].BoothNumber,\r\n                  StartDate: rentalDates[0].startDate,\r\n                  EndDate: rentalDates[rentalDates.length - 1].startDate,\r\n                  Monday: this.LayoutData.Monday ? true : false,\r\n                  Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                  Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                  Thursday: this.LayoutData.Thursday ? true : false,\r\n                  Friday: this.LayoutData.Friday ? true : false,\r\n                  Saturday: this.LayoutData.Saturday ? true : false,\r\n                  Sunday: this.LayoutData.Sunday ? true : false\r\n                }\r\n                this.selectedBoothsForRental.push(selectedBoothsForCMRental);\r\n                this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              }\r\n            }\r\n          }\r\n          else if (this.rentalType == \"D\") {\r\n            var markedNodeId = nodeId.replace(\"&\",\"_amper_\") + \"mark\";\r\n            const selectedNode = this.diagram.getObject(markedNodeId) as NodeModel;\r\n            var boothCount = 0;\r\n            this.sharedDataService.dailyRentalSelectedDays.map(date => {\r\n              const boothRecord = this.sharedDataService.dailyRentalSelectedBooths.filter(selectedBooth => selectedBooth.BoothNumber === this.BoothNumber && selectedBooth.RentalDay == this.datePipe.transform(date, 'MM/dd/yyy'));\r\n              if (boothRecord.length > 0) {\r\n                boothCount += 1;\r\n              }\r\n            });\r\n\r\n            if (boothCount != 0) {\r\n              Swal.fire({\r\n                title: $localize`Confirm`,\r\n                text: $localize`Are you sure you want to delete the selected Booth?`,\r\n                icon: \"question\",\r\n                showCancelButton: true,\r\n                confirmButtonText: $localize`Yes`,\r\n                cancelButtonText: $localize`No`,\r\n              }).then((result) => {\r\n                if (result.value) {\r\n                  this.sharedDataService.dailyRentalSelectedDays.map(date => {\r\n                    const index = this.sharedDataService.dailyRentalSelectedBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === this.BoothNumber && selectedBooth.RentalDay == this.datePipe.transform(date, 'MM/dd/yyy'));\r\n                    if (index != -1) {\r\n                      this.diagram.remove(selectedNode);\r\n                      this.removeBoothCharges.emit(this.sharedDataService.dailyRentalSelectedBooths[index]);\r\n                      this.sharedDataService.dailyRentalSelectedBooths.splice(index, 1);\r\n                      this.selectedBoothData.splice(boothIndex, 1);\r\n                      this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                    }\r\n                    else {\r\n                      const temp = {\r\n                        TempRecordNo: this.sharedDataService.tempRecordNo.toString(),\r\n                        BoothNumber: this.BoothNumber,\r\n                        StartDate: new Date(date),\r\n                        RentalType: 1\r\n                      }\r\n                      this.subscriptions.push(\r\n                        this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                        })\r\n                      );\r\n                    }\r\n                  });\r\n                }\r\n              });\r\n            }\r\n            else {\r\n              this.diagram.remove(selectedNode);\r\n              this.selectedBoothData.splice(boothIndex, 1);\r\n              this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              this.sharedDataService.dailyRentalSelectedDays.map(date => {\r\n                const temp = {\r\n                  TempRecordNo: this.sharedDataService.tempRecordNo.toString(),\r\n                  BoothNumber: this.BoothNumber,\r\n                  StartDate: new Date(date),\r\n                  RentalType: 1\r\n                }\r\n                this.subscriptions.push(\r\n                  this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                  })\r\n                );\r\n              });\r\n            }\r\n          }\r\n\r\n          else if (this.rentalType == \"M\") {\r\n            var markedNodeId = nodeId.replace(\"&\",\"_amper_\") + \"mark\";\r\n            const selectedNode = this.diagram.getObject(markedNodeId) as NodeModel;\r\n            const index = this.LayoutData.monthlyRentalSelectedBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === this.BoothNumber && selectedBooth.RentStartPeriod == this.LayoutData.monthlyRentalSelectedBooths[0].RentStartPeriod && selectedBooth.RentEndPeriod == this.LayoutData.monthlyRentalSelectedBooths[0].RentEndPeriod);\r\n            if (index != -1) {\r\n              Swal.fire({\r\n                title: $localize`Confirm`,\r\n                text: $localize`Are you sure you want to delete the selected Booth?`,\r\n                icon: \"question\",\r\n                showCancelButton: true,\r\n                confirmButtonText: $localize`Yes`,\r\n                cancelButtonText: $localize`No`,\r\n              }).then((result) => {\r\n                if (result.value) {\r\n                  this.diagram.remove(selectedNode);\r\n                  this.removeBoothCharges.emit(this.LayoutData.monthlyRentalSelectedBooths[index]);\r\n                  this.LayoutData.monthlyRentalSelectedBooths.splice(index, 1);\r\n                  this.selectedBoothData.splice(boothIndex, 1);\r\n                  this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                  const startDate = new Date(this.LayoutData.RentalStartDate);\r\n                  const endMonth = this.LayoutData.monthlyRentalEndDate\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n                  \r\n                  this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                    const rentalDates=[];\r\n                    var rentalstartDate = \"\";\r\n                    const selectedDayOfWeek = el - 1;\r\n                    let currentDay = new Date(startDate);\r\n                    while (currentDay <= endDate) {\r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        if (!rentalstartDate) {\r\n                          rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                        }\r\n                        marketDays += 1;\r\n                        rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n                    const compareDates =(a: DateString, b: DateString): number => {\r\n                      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      return dateA - dateB;\r\n                    };\r\n                    const sortedDates = rentalDates.sort(compareDates);\r\n                    const temp = {\r\n                      TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                      BoothNumber: this.BoothNumber,\r\n                      StartDate: new Date(rentalstartDate),\r\n                      RentalType: 2,\r\n                      EndDate: new Date(rentalDates[rentalDates.length-1].startDate),\r\n                      Sunday: el == 1 ? true : false,\r\n                      Monday: el == 2 ? true : false,\r\n                      Tuesday: el == 3 ? true : false,\r\n                      Wednesday: el == 4 ? true : false,\r\n                      Thursday: el == 5 ? true : false,\r\n                      Friday: el == 6 ? true : false,\r\n                      Saturday: el == 7 ? true : false\r\n                    }\r\n                    this.subscriptions.push(\r\n                      this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                      })\r\n                    );\r\n                  });\r\n                }\r\n              });\r\n            }\r\n            else {\r\n              this.diagram.remove(selectedNode);\r\n              this.selectedBoothData.splice(boothIndex, 1);\r\n              this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              const startDate = new Date(this.LayoutData.RentalStartDate);\r\n              const endMonth = this.LayoutData.monthlyRentalEndDate\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              \r\n              this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                const rentalDates=[];\r\n                var rentalstartDate = \"\";\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                const compareDates =(a: DateString, b: DateString): number => {\r\n                  const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  return dateA - dateB;\r\n                };\r\n                const sortedDates = rentalDates.sort(compareDates);\r\n                const temp = {\r\n                  TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                  BoothNumber: this.BoothNumber,\r\n                  StartDate: new Date(rentalstartDate),\r\n                  RentalType: 2,\r\n                  EndDate: new Date(rentalDates[rentalDates.length-1].startDate),\r\n                  Sunday: el == 1 ? true : false,\r\n                  Monday: el == 2 ? true : false,\r\n                  Tuesday: el == 3 ? true : false,\r\n                  Wednesday: el == 4 ? true : false,\r\n                  Thursday: el == 5 ? true : false,\r\n                  Friday: el == 6 ? true : false,\r\n                  Saturday: el == 7 ? true : false\r\n                }\r\n                this.subscriptions.push(\r\n                  this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                  })\r\n                );\r\n              });\r\n            }\r\n          }\r\n\r\n          else if (this.rentalType == \"CW\") {\r\n            var markedNodeId = nodeId.replace(\"&\",\"_amper_\") + \"mark\";\r\n            const selectedNode = this.diagram.getObject(markedNodeId) as NodeModel;\r\n            const index = this.LayoutData.weeklyRentalSelectedBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === this.BoothNumber && selectedBooth.RentStartPeriod == this.LayoutData.weeklyRentalSelectedBooths[0].RentStartPeriod && selectedBooth.RentEndPeriod == this.LayoutData.weeklyRentalSelectedBooths[0].RentEndPeriod);\r\n            if (index != -1) {\r\n              Swal.fire({\r\n                title: $localize`Confirm`,\r\n                text: $localize`Are you sure you want to delete the selected Booth?`,\r\n                icon: \"question\",\r\n                showCancelButton: true,\r\n                confirmButtonText: $localize`Yes`,\r\n                cancelButtonText: $localize`No`,\r\n              }).then((result) => {\r\n                if (result.value) {\r\n                  this.diagram.remove(selectedNode);\r\n                  this.removeBoothCharges.emit(this.LayoutData.weeklyRentalSelectedBooths[index]);\r\n                  this.LayoutData.weeklyRentalSelectedBooths.splice(index, 1);\r\n                  this.selectedBoothData.splice(boothIndex, 1);\r\n                  this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                  const rentalDates = [];\r\n                  var rentedBoothDates = [];\r\n                  var rentalstartDate;\r\n                  const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n                  const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n                  this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                    const selectedDayOfWeek = el - 1;\r\n                    const today: Date = new Date(new Date().toDateString())\r\n                    let currentDay = new Date(startDate);\r\n                    while (currentDay <= endDate) {\r\n                      if (currentDay >= today) {\r\n                        if (currentDay.getDay() === selectedDayOfWeek) {\r\n                          marketDays += 1;\r\n                          rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                        }\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n                  });\r\n                  const compareDates = (a: DateString, b: DateString): number => {\r\n                    const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                    return dateA - dateB;\r\n                  };\r\n                  const sortedDates = rentalDates.sort(compareDates);\r\n                  const temp = {\r\n                    TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                    BoothNumber: this.BoothNumber,\r\n                    StartDate: new Date(rentalDates[0].startDate),\r\n                    RentalType: 5,\r\n                    EndDate: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n                    Monday: this.LayoutData.Monday ? true : false,\r\n                    Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                    Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                    Thursday: this.LayoutData.Thursday ? true : false,\r\n                    Friday: this.LayoutData.Friday ? true : false,\r\n                    Saturday: this.LayoutData.Saturday ? true : false,\r\n                    Sunday: this.LayoutData.Sunday ? true : false\r\n                  }\r\n                  this.subscriptions.push(\r\n                    this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                    })\r\n                  );\r\n                }\r\n              });\r\n            }\r\n            else {\r\n              this.diagram.remove(selectedNode);\r\n              this.selectedBoothData.splice(boothIndex, 1);\r\n              this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              const rentalDates = [];\r\n              var rentedBoothDates = [];\r\n              var rentalstartDate;\r\n              const startDate = new Date(this.LayoutData.weeklyRentalStartDate.split(\"-\")[0]);\r\n              const endDate = new Date(this.LayoutData.weeklyRentalEndDate.split(\"-\")[1]);\r\n              this.LayoutData.weeklyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n                const today: Date = new Date(new Date().toDateString())\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay >= today) {\r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      marketDays += 1;\r\n                      rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n              });\r\n              const compareDates = (a: DateString, b: DateString): number => {\r\n                const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                return dateA - dateB;\r\n              };\r\n              const sortedDates = rentalDates.sort(compareDates);\r\n              const temp = {\r\n                TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                BoothNumber: this.BoothNumber,\r\n                StartDate: new Date(rentalDates[0].startDate),\r\n                RentalType: 5,\r\n                EndDate: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n                Monday: this.LayoutData.Monday ? true : false,\r\n                Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                Thursday: this.LayoutData.Thursday ? true : false,\r\n                Friday: this.LayoutData.Friday ? true : false,\r\n                Saturday: this.LayoutData.Saturday ? true : false,\r\n                Sunday: this.LayoutData.Sunday ? true : false\r\n              }\r\n              this.subscriptions.push(\r\n                this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n\r\n          else if (this.rentalType == \"CM\") {\r\n            var markedNodeId = nodeId.replace(\"&\",\"_amper_\") + \"mark\";\r\n            const selectedNode = this.diagram.getObject(markedNodeId) as NodeModel;\r\n            const index = this.LayoutData.monthlyRentalSelectedBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === this.BoothNumber && selectedBooth.RentStartPeriod == this.LayoutData.monthlyRentalSelectedBooths[0].RentStartPeriod && selectedBooth.RentEndPeriod == this.LayoutData.monthlyRentalSelectedBooths[0].RentEndPeriod);\r\n            if (index != -1) {\r\n              Swal.fire({\r\n                title: $localize`Confirm`,\r\n                text: $localize`Are you sure you want to delete the selected Booth?`,\r\n                icon: \"question\",\r\n                showCancelButton: true,\r\n                confirmButtonText: $localize`Yes`,\r\n                cancelButtonText: $localize`No`,\r\n              }).then((result) => {\r\n                if (result.value) {\r\n                  this.diagram.remove(selectedNode);\r\n                  this.removeBoothCharges.emit(this.LayoutData.monthlyRentalSelectedBooths[index]);\r\n                  this.LayoutData.monthlyRentalSelectedBooths.splice(index, 1);\r\n                  this.selectedBoothData.splice(boothIndex, 1);\r\n                  this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n                  const startDate = new Date(this.LayoutData.RentalStartDate);\r\n                  const endMonth = this.LayoutData.monthlyRentalEndDate\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n                  const rentalDates = [];\r\n                  var rentalstartDate = \"\";\r\n                  this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                    const selectedDayOfWeek = el - 1;\r\n                    let currentDay = new Date(startDate);\r\n                    while (currentDay <= endDate) {\r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        if (!rentalstartDate) {\r\n                          rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                        }\r\n                        marketDays += 1;\r\n                        rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n                  });\r\n                    const compareDates = (a: DateString, b: DateString): number => {\r\n                      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      return dateA - dateB;\r\n                    };\r\n                    const sortedDates = rentalDates.sort(compareDates);\r\n                    const temp = {\r\n                      TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                      BoothNumber: this.BoothNumber,\r\n                      StartDate: new Date(rentalDates[0].startDate),\r\n                      RentalType: 4,\r\n                      EndDate: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n                      Monday: this.LayoutData.Monday ? true : false,\r\n                      Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                      Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                      Thursday: this.LayoutData.Thursday ? true : false,\r\n                      Friday: this.LayoutData.Friday ? true : false,\r\n                      Saturday: this.LayoutData.Saturday ? true : false,\r\n                      Sunday: this.LayoutData.Sunday ? true : false\r\n                    }\r\n                    this.subscriptions.push(\r\n                      this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                      })\r\n                    );                 \r\n                }\r\n              });\r\n            }\r\n            else {\r\n              this.diagram.remove(selectedNode);\r\n              this.selectedBoothData.splice(boothIndex, 1);\r\n              this.noboothSelected = this.selectedBoothData.length > 0 ? false : true;\r\n              const startDate = new Date(this.LayoutData.RentalStartDate);\r\n              const endMonth = this.LayoutData.monthlyRentalEndDate\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              const rentalDates = [];\r\n              rentalstartDate = \"\";\r\n              this.LayoutData.monthlyRentalMarketDays.map((el, i) => {\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    marketDays += 1;\r\n                    rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n                const compareDates = (a: DateString, b: DateString): number => {\r\n                  const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  return dateA - dateB;\r\n                };\r\n                const sortedDates = rentalDates.sort(compareDates);\r\n              });\r\n              const temp = {\r\n                TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n                BoothNumber: this.BoothNumber,\r\n                StartDate: new Date(rentalDates[0].startDate),\r\n                RentalType: 4,\r\n                EndDate: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n                Monday: this.LayoutData.Monday ? true : false,\r\n                Tuesday: this.LayoutData.Tuesday ? true : false,\r\n                Wednesday: this.LayoutData.Wednesday ? true : false,\r\n                Thursday: this.LayoutData.Thursday ? true : false,\r\n                Friday: this.LayoutData.Friday ? true : false,\r\n                Saturday: this.LayoutData.Saturday ? true : false,\r\n                Sunday: this.LayoutData.Sunday ? true : false\r\n              }\r\n              this.subscriptions.push(\r\n                this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n        });\r\n      };\r\n    }\r\n  }\r\n  \r\n  async getMonthEndingDateFromSetting(rentalYearMonth: string): Promise<Date> {\r\n    if (this.monthEndDateCache.has(rentalYearMonth)) {\r\n      return this.monthEndDateCache.get(rentalYearMonth);\r\n    }\r\n    const response = await this.rentalService.GetSelectedMonthEndDate(rentalYearMonth, this.marketId).toPromise();\r\n    if (response) {\r\n      const monthEndDate = new Date(response.MonthEndDateSelected);\r\n      this.monthEndDateCache.set(rentalYearMonth, monthEndDate);\r\n      return monthEndDate;\r\n    }\r\n    else {\r\n      return null\r\n    }\r\n  }\r\n\r\n  getDaysDifference(date1: Date, date2: Date): number {\r\n    // Normalize both dates to start of the day (midnight)\r\n    const start = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n    const end = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n    // Calculate the difference in time (milliseconds)\r\n    const timeDiff = Math.abs(end.getTime() - start.getTime());\r\n    // Convert time difference from milliseconds to days\r\n    const dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));\r\n    return dayDiff;\r\n  }\r\n\r\n  insertDataToTemp(BoothNumber, RentalStartDate, RentalEndDate, el) {\r\n    var tempData = [];\r\n    if (this.rentalType == \"D\") {\r\n      this.sharedDataService.dailyRentalSelectedDays.forEach(date => {\r\n        tempData.push({\r\n          BoothNo: BoothNumber,\r\n          TempRecordNo: this.sharedDataService.tempRecordNo.toString(),\r\n          StartDate: new Date(date),\r\n          EndDate: new Date(date),\r\n          Sunday: new Date(date).getDay() == 0 ? true : false,\r\n          Monday: new Date(date).getDay() == 1 ? true : false,\r\n          Tuesday: new Date(date).getDay() == 2 ? true : false,\r\n          Wednesday: new Date(date).getDay() == 3 ? true : false,\r\n          Thursday: new Date(date).getDay() == 4 ? true : false,\r\n          Friday: new Date(date).getDay() == 5 ? true : false,\r\n          Saturday: new Date(date).getDay() == 6 ? true : false,\r\n          RentalRenewal: true,\r\n          BoothSearch: true,\r\n          IsOnline: false\r\n        });\r\n      });\r\n    } else if (this.rentalType == \"M\") {\r\n      tempData.push({\r\n        BoothNo: BoothNumber,\r\n        TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n        StartDate: new Date(RentalStartDate),\r\n        EndDate: new Date(RentalEndDate),\r\n        Sunday: el == 1 ? true : false,\r\n        Monday: el == 2 ? true : false,\r\n        Tuesday: el == 3 ? true : false,\r\n        Wednesday: el == 4 ? true : false,\r\n        Thursday: el == 5 ? true : false,\r\n        Friday: el == 6 ? true : false,\r\n        Saturday: el == 7 ? true : false,\r\n        RentalRenewal: true,\r\n        BoothSearch: true,\r\n        IsOnline: false\r\n      });\r\n    } else if (this.rentalType == \"CM\") {\r\n      tempData.push({\r\n        BoothNo: BoothNumber,\r\n        TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n        StartDate: new Date(RentalStartDate),\r\n        EndDate: new Date(RentalEndDate),\r\n        Monday: this.LayoutData.Monday ? true : false,\r\n        Tuesday: this.LayoutData.Tuesday ? true : false,\r\n        Wednesday: this.LayoutData.Wednesday ? true : false,\r\n        Thursday: this.LayoutData.Thursday ? true : false,\r\n        Friday: this.LayoutData.Friday ? true : false,\r\n        Saturday: this.LayoutData.Saturday ? true : false,\r\n        Sunday: this.LayoutData.Sunday ? true : false,\r\n        RentalRenewal: true,\r\n        BoothSearch: true,\r\n        IsOnline: false\r\n      });\r\n    }\r\n    else if (this.rentalType == \"CW\" || this.rentalType == \"W\") {\r\n      tempData.push({\r\n        BoothNo: BoothNumber,\r\n        TempRecordNo: this.LayoutData.tempRecordNo.toString(),\r\n        StartDate: new Date(RentalStartDate),\r\n        EndDate: new Date(RentalEndDate),\r\n        Monday: this.LayoutData.Monday ? true : false,\r\n        Tuesday: this.LayoutData.Tuesday ? true : false,\r\n        Wednesday: this.LayoutData.Wednesday ? true : false,\r\n        Thursday: this.LayoutData.Thursday ? true : false,\r\n        Friday: this.LayoutData.Friday ? true : false,\r\n        Saturday: this.LayoutData.Saturday ? true : false,\r\n        Sunday: this.LayoutData.Sunday ? true : false,\r\n        RentalRenewal: true,\r\n        BoothSearch: true,\r\n        IsOnline: false\r\n      });\r\n    }\r\n    this.subscriptions.push(this.rentalService.insertDataToTemp(tempData).subscribe((res: any) => {\r\n    }));\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  getBuildingForLayout() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.allExistingBuilding = [];\r\n    const sub = this.marketInfoService.getBuildingAreasInLayOut(this.partId, this.marketId).subscribe((res: any) => {\r\n      this.allExistingBuilding = res;\r\n      let data = res;\r\n      if (data.length > 0) {\r\n       for(const item of data){\r\n          const nodeId = 'node_building' + item.BuildingId;\r\n          const diagramNode: NodeModel = {\r\n            id: nodeId,\r\n            shape: {\r\n              type: 'Basic',\r\n              shape: this.boothShapes.filter(e => e.Id == item.ShapeId)[0].Name\r\n            },\r\n            style: {\r\n              fill: item.BuildingBackColor != 0 ? this.convertColor(item.BuildingBackColor) : \"#000\",\r\n              strokeColor: item.BuildingBackColor != 0 ? this.convertColor(item.BuildingBorderColor) : \"#000\",\r\n              strokeWidth: 1,\r\n              fontSize: item.BuildingFontSize,\r\n              textWrapping: 'Wrap',\r\n              fontFamily: this.fontName.filter(e => e.Id == item.BuildingFontNameId)[0].Name\r\n            },\r\n            annotations:\r\n              [{\r\n                content: item.Caption,\r\n                style: {\r\n                  fontSize: item.BuildingFontSize,\r\n                  fontFamily: this.fontName.filter(e => e.Id == item.BuildingFontNameId)[0].Name,\r\n                  textWrapping: 'Wrap',\r\n                  bold: this.fontStyle.filter(e => e.Id == item.BuildingFontStyleId)[0].Name.toLowerCase().includes('bold'),\r\n                  italic: this.fontStyle.filter(e => e.Id == item.BuildingFontStyleId)[0].Name.toLowerCase().includes('italic')\r\n                },\r\n                constraints: AnnotationConstraints.ReadOnly\r\n              }],\r\n            width: item.BuildingWidth * 3,\r\n            height: item.BuildingLength * 3,\r\n            addInfo: {\r\n              allowDrag: false, // Enable drag-and-drop for this shape\r\n              id: item.BuildingId,\r\n              name: 'building'\r\n            },\r\n            constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n            offsetX: item.LeftCoordinate,\r\n            offsetY: item.TopCoordinate,\r\n            rotateAngle: item.BuildingVerticalDisplay == true ? 90 : 0\r\n          };\r\n          this.diagram.add(diagramNode);\r\n        }\r\n        this.diagram.fitToPage();\r\n        if (this.defaultZoomFactor) {\r\n          let zoomOptions: ZoomOptions = {\r\n            type: 'ZoomIn',\r\n            zoomFactor: this.defaultZoomFactor\r\n          };\r\n          this.diagram.zoomTo(zoomOptions);\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getImagesForLayout() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.marketInfoService.getLayoutImages(this.partId, this.marketId).subscribe((response: any) => {\r\n      if (response) {\r\n        let data = response;\r\n        if (data.length > 0) {\r\n\r\n          for (let i = 0; i < data.length; i++) {\r\n            let node = {\r\n              id: 'node_images' + data[i].ImagesForLayoutId,\r\n              addInfo: {\r\n                status: this.layoutImages.filter(e => e.ImageId == data[i].LayoutImagesId)[0].ImagePath,\r\n                id: data[i].ImagesForLayoutId,\r\n                name: \"image\",\r\n                ImageId: data[i].LayoutImagesId,\r\n              },\r\n              style: {\r\n                strokeWidth: 0\r\n              },\r\n              annotations: [\r\n                {\r\n              //    content: this.layoutImages.filter(e => e.ImageId == data[i].LayoutImagesId)[0].ImageName,\r\n                  constraints: AnnotationConstraints.ReadOnly,\r\n                  offset: { x: 0.05, y: -0.07 }\r\n                }\r\n              ],\r\n              constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n              shape: { type: 'Image', shape: 'Image' } as ImageModel, // Type assertion to ImageModel\r\n              width: data[i].ImageWidth * 3,\r\n              height: data[i].ImageLength * 3,\r\n              offsetX: data[i].ImageLeftCoordinate,\r\n              offsetY: data[i].ImageTopCoordinate,\r\n            };\r\n\r\n            if ((node.shape as { type: string }).type === 'Image') {\r\n              (node.shape as ImageModel).source = node.addInfo.status;\r\n            }\r\n\r\n            this.diagram.add(node);\r\n          }\r\n          this.diagram.fitToPage();\r\n          if (this.defaultZoomFactor) {\r\n            let zoomOptions: ZoomOptions = {\r\n              type: 'ZoomIn',\r\n              zoomFactor: this.defaultZoomFactor\r\n            };\r\n            this.diagram.zoomTo(zoomOptions);\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  getImages() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getImages().subscribe((res: any) => {\r\n      if (res) {\r\n        this.layoutImages = res;\r\n        let data = this.layoutImages;\r\n        if (this.layoutImages.length > 0) {\r\n          for (let i = 0; i < this.layoutImages.length; i++) {\r\n            const nodeId = 'node_' + data[i].ImageId;\r\n            let node = {\r\n              id: nodeId, addInfo: {\r\n                status: data[i].ImagePath, id: 'z' + data[i].ImageId, name: \"image\", ImageId: data[i].ImageId,\r\n              },\r\n              annotations: [{ content: data[i].ImageName, constraints: AnnotationConstraints.ReadOnly, offset: { x: 0.5, y: -0.07 } }],\r\n              shape: { type: 'Image', shape: 'Image' },\r\n              width: 50, height: 50, offsetX: 50, offsetY: 50,\r\n            };\r\n            if (node.shape.type === 'Image') {\r\n              (node.shape as ImageModel).source = node.addInfo.status;\r\n            }\r\n            this.images.push(node);\r\n          }\r\n\r\n          this.palettes = [\r\n            {\r\n              id: 'Images',\r\n              expanded: true,\r\n              symbols: this.images,\r\n              title: 'Images'\r\n            },\r\n          ]\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  layoutZoomInClick(event) {\r\n    let zoomOptions: ZoomOptions = {\r\n      type: \"ZoomIn\",\r\n      zoomFactor: 0.2\r\n    }\r\n    if (event.detail > 0) {\r\n      this.diagram.zoomTo(zoomOptions)\r\n    }\r\n  }\r\n\r\n  layoutZoomOutClick(flag = false) {\r\n    let zoomOptions: ZoomOptions = {\r\n      type: \"ZoomOut\",\r\n      zoomFactor: 0.2\r\n    }\r\n    if (flag) {\r\n      this.diagram.zoomTo(zoomOptions)\r\n    }\r\n  }\r\n  \r\n  searchNodes(): void {\r\n    const nodes = this.diagram.nodes as any[];\r\n    var nodeExist = false\r\n    this.stopBlinking();\r\n    if (this.layoutForm.controls['layoutDiagramFilter'].value['searchBooth']) {\r\n      nodes.forEach(node => {\r\n        if (node.properties.addInfo.name == \"booth\") {\r\n          if (node.annotations && node.annotations[0].content.toLowerCase() == this.layoutForm.controls['layoutDiagramFilter'].value['searchBooth'].toLowerCase()) {\r\n            this.blinkingNode = node.id;\r\n            this.startBlinking();\r\n            nodeExist = true;\r\n          }\r\n        }\r\n      });\r\n      if (!nodeExist)\r\n        // this.toastr.warning($localize`There is no space having this number`, $localize`Error`, this.toasterConfig);\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`There is no booth having this number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n    }\r\n    else {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please enter the booth number to search`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  changeSearchText() {\r\n    if (this.layoutForm.controls['layoutDiagramFilter'].value['searchBooth'] == '') {\r\n      this.stopBlinking();\r\n    }\r\n  }\r\n\r\n  startBlinking(): void {\r\n    this.stopBlinking(); // Ensure no previous intervals are running\r\n\r\n    this.blinkInterval = setInterval(() => {\r\n      const node = this.diagram.getObject(this.blinkingNode) as NodeModel;\r\n      if (node) {\r\n        node.style.fill = node.style.fill === 'red' ? 'transparent' : 'red';\r\n      }\r\n    }, 500); // Blink every 500 milliseconds\r\n\r\n    setTimeout(() => {\r\n      this.stopBlinking();\r\n      this.layoutForm.controls['layoutDiagramFilter'].get('searchBooth').setValue('');\r\n    }, 5000); // Stop blinking after 5 seconds\r\n  }\r\n\r\n  stopBlinking(): void {\r\n    if (this.blinkInterval) {\r\n      clearInterval(this.blinkInterval);\r\n      this.blinkInterval = null;\r\n\r\n      const node = this.diagram.getObject(this.blinkingNode) as NodeModel;\r\n      if (node) {\r\n        const nodeId = node.id.replace(\"node_\",\"\");\r\n        const boothData = this.allBooths.find(item => item.BoothNumber == nodeId);\r\n        if (boothData) {\r\n          const fontColor = boothData.Status.toLowerCase() == \"r\" ? \"#fff\" : \"#000\";\r\n          node.style.fill = this.convertColor(boothData.BackColor);\r\n          node.style.strokeColor = this.convertColor(boothData.BorderColor);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  \r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"rentalForm\">\r\n    <div *ngIf=\"!displayLayout\">\r\n        <div class=\"row\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4\"></div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                \r\n            </div>\r\n        </div>\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        * Select Market Day(s) Here\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush\">\r\n                        <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Monday\" formControlName=\"marketWeekMonday\"\r\n                                       (change)=\"toggleDaySelection('Monday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Monday\" i18n>\r\n                                    Monday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Tuesday\" formControlName=\"marketWeekTuesday\"\r\n                                       (change)=\"toggleDaySelection('Tuesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Tuesday\" i18n>\r\n                                    Tuesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Wednesday\" formControlName=\"marketWeekWednesday\"\r\n                                       (change)=\"toggleDaySelection('Wednesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Wednesday\" i18n>\r\n                                    Wednesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Thursday\" formControlName=\"marketWeekThursday\"\r\n                                       (change)=\"toggleDaySelection('Thursday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Thursday\" i18n>\r\n                                    Thursday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Friday\" formControlName=\"marketWeekFriday\"\r\n                                       (change)=\"toggleDaySelection('Friday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Friday\" i18n>\r\n                                    Friday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSaturday\" formControlName=\"marketWeekSaturday\"\r\n                                       (change)=\"toggleDaySelection('Saturday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSaturday\" i18n>\r\n                                    Saturday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSunday\" formControlName=\"marketWeekSunday\"\r\n                                       (change)=\"toggleDaySelection('Sunday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSunday\" i18n>\r\n                                    Sunday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        Rental Day(s):\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush marketDates\">\r\n                        <li class=\"list-group-item\" *ngFor=\"let item of filteredMarketDays; let i=index\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" [id]=\"'chk' + (i + 1)\" (change)=\"checkboxChanged($event,item)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" [attr.for]=\"'chk' + (i + 1)\" i18n>\r\n                                    {{item.MarketDays}}\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 mblRightToLeft mt-1\">\r\n                        <label class=\"mt-2 mb-0\">Select Layout Part</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mblRightToLeft mt-2\">\r\n                        <select class=\"form-control respLayoutPart\" formControlName=\"marketParts\">\r\n                            <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">{{item.PartDescription}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-3 col-xl-3 mblRightToLeft mt-2\">\r\n                    <button class=\"btn btn-primary py-2\" data-toggle=\"modal\" data-target=\"#modalLayout\"\r\n                    (click)=\"openLayout()\">Select Booth</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\">\r\n                    <ejs-grid #gridDailyRental [dataSource]='selectedBooths' class=\"Table_Height_store table-striped table-ipad\"\r\n                        [gridLines]='lines' height=\"150\" allowSorting='true' [sortSettings]='sortOptions' [textWrapSettings]=\"textWrapSettings\" allowTextWrap=\"true\" >\r\n                        <e-columns>\r\n                            <e-column field='BoothNumber' headerText='Booth#' textAlign='left' width=130>\r\n                            </e-column>\r\n                            <e-column field='BoothType' headerText='Booth Type' textAlign='left' width=140>\r\n                            </e-column>\r\n                            <e-column field='Product' headerText='Product' textAlign='left' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.Product\" [ngModelOptions]=\"{standalone: true}\"\r\n                                            (change)=\"productChange(data)\">\r\n                                            <option *ngFor=\"let item of vendorProducts\" [value]=\"item.ProductId\">\r\n                                                {{item.ProductName}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentalDay' headerText='Rental Day' textAlign='left' width=150>\r\n                            </e-column>\r\n                            <e-column field='Rent' headerText='Rent' textAlign='right' width=120>                               \r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=210>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=210>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width=150>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteSelectedBooth(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n                <div class=\"row\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <div class=\"col-12 text-right mt-2\">\r\n                        <button class=\"btn btn-primary btnAdd\" data-toggle=\"modal\" data-target=\"#modalOtherCharges\">Select\r\n                            Other Item</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <ejs-grid #gridOtherRental [dataSource]='selectedOtherItems'\r\n                        class=\"Table_Height_store table-striped table-ipad\" height='150' allowSorting='true'\r\n                        [sortSettings]='sortOtherItemsOptions' [textWrapSettings]=\"textWrapSettings\" allowTextWrap=\"true\" >\r\n                        <e-columns>\r\n                            <e-column field='OtherItem' headerText='Item' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='OtherItemCharge' headerText='Charge' textAlign='right' width=140>                               \r\n                            </e-column>\r\n                            <e-column field='Quantity' headerText='Qty' textAlign='left' width=120>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" (keydown)=\"onCheckNumKeyPress($event)\" class=\"form-control\" \r\n                                        [(ngModel)]=\"data.Quantity\" [ngModelOptions]=\"{standalone: true}\" (blur)=\"updateOtherTotalRent(data)\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='BoothNo' headerText='Booth#' textAlign='left' width=120>\r\n                            </e-column>\r\n                            <e-column field='RentalDay' headerText='Day' textAlign='left' width=140>\r\n                            </e-column>\r\n                            <e-column field='OtherItemtotal' headerText='Total' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column field='Reference' headerText='Reference' textAlign='left' width=170>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" (blur)=\"updateOtherItemReference(data)\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Reference\"\r\n                                            [ngModelOptions]=\"{standalone: true}\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteOtherRentalCharges(data)\"><img\r\n                                                src=\"data:image/svg+xml;base64,PHN2ZyBpZD0iSWNvbl9tYXRlcmlhbC1kZWxldGUiIGRhdGEtbmFtZT0iSWNvbiBtYXRlcmlhbC1kZWxldGUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgd2lkdGg9IjE1LjIzNyIgaGVpZ2h0PSIxOS41OTEiIHZpZXdCb3g9IjAgMCAxNS4yMzcgMTkuNTkxIj4NCiAgPHBhdGggaWQ9Ikljb25fbWF0ZXJpYWwtZGVsZXRlLTIiIGRhdGEtbmFtZT0iSWNvbiBtYXRlcmlhbC1kZWxldGUiIGQ9Ik04LjU4OCwyMS45MTRhMi4xODMsMi4xODMsMCwwLDAsMi4xNzcsMi4xNzdoOC43MDdhMi4xODMsMi4xODMsMCwwLDAsMi4xNzctMi4xNzdWOC44NTNIOC41ODhaTTIyLjczNyw1LjU4OEgxOC45MjhMMTcuODQsNC41SDEyLjRMMTEuMzA5LDUuNTg4SDcuNVY3Ljc2NUgyMi43MzdaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNy41IC00LjUpIiBmaWxsPSIjMTA2RUJFIi8+DQo8L3N2Zz4NCg==\"\r\n                                                class=\"img-fluid\" style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n\r\n                <div class=\"vendorDetails1 mt-2\">\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"!newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"saveRentalWithPayment()\">Pay</button>\r\n                    </div>\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"rentOnlineNextTab()\">Next</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"displayLayout\">\r\n    <app-rentallayout-online [marketId]=\"marketId\" [layoutParts]=\"layoutParts\" rentalType=\"D\"\r\n        (selectedBoothsFromLayout)=\"selectedBoothsFromLayout($event)\" (CloseLayout)=\"closeLayoutForm()\"\r\n        (removeBoothCharges)=\"removeBoothCharges($event)\"></app-rentallayout-online>\r\n</div>\r\n\r\n<div class=\"modal fade bd-example-modal-xl\" #modalOtherCharges id=\"modalOtherCharges\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\r\n        <div class=\"modal-content contentNewBooths\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Other Charges</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body modal-bodyNewBooths\">\r\n                <div class=\"row mt-0\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                        <label i18n>Rental Day</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                        <select class=\"form-control\" [(ngModel)]=\"otherChargeMarketDay\"\r\n                            (change)=\"getBoothsAndItemsForOtherCharges()\">\r\n                            <option *ngFor=\"let item of filteredMarketDays\" [value]=\"item.MarketDays\">{{item.MarketDays |\r\n                                date :'MM/dd/yyyy'}}</option>\r\n                        </select>\r\n                    </div>\r\n                </div>\r\n                <div class=\"row mt-2\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                        <label>Search Value</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                        <input type=\"text\" class=\"form-control\" [(ngModel)]=\"otherItemSearchText\"\r\n                            (keyup)=\"searchOtherItem()\">\r\n                    </div>\r\n                </div>\r\n                <div class=\"row\" style=\"height: 46vh;overflow-y: scroll;\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-2\">\r\n                        <div class=\"availableBoothsHeading pt-1 pb-1\">\r\n                            <label i18n>Other Charges</label>\r\n                        </div>\r\n                        <div class=\"scroll_outer\">\r\n                                <table class=\"table table-striped table-hover followup-table mb-0\">\r\n                                    <thead>\r\n                                        <tr>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"40\" i18n></th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"140\" i18n>Items</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"100\"\r\n                                                *ngIf=\"displayOtherChargeByBooth\" i18n>Booth#</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"120\" i18n>Charges</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"90\" i18n>Qty</th>\r\n                                            <th class=\"text-center tblAvailableBooths\" width=\"100\" i18n>Total</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Reference</th>\r\n                                        </tr>\r\n                                    </thead>\r\n                                    <tbody>\r\n                                        <tr *ngFor=\"let item of otherRentalCharges\">\r\n                                            <td class=\"text-left\">\r\n                                                <label class=\"pure-material-checkbox\">\r\n                                                    <input type=\"checkbox\" [checked]=\"isDateSelected(item)\"\r\n                                                        [(ngModel)]=\"item.select\"\r\n                                                        (change)=\"setDefaultRentalItem($event,item)\">\r\n                                                    <span></span>\r\n                                                </label>\r\n                                            </td>\r\n                                            <td class=\"text-left\">\r\n                                                {{item.OtherItem}}</td>\r\n                                            <th class=\"text-left tblAvailableBooths\" style=\"width: 35%;\"\r\n                                                *ngIf=\"displayOtherChargeByBooth\">\r\n                                                <select class=\"form-control\" [(ngModel)]=\"item.othChgBooths\"\r\n                                                    (change)=\"otherItemUpdate(item)\"\r\n                                                    [disabled]=\"!item.otherItemChecked\">\r\n                                                    <option value=\"none\">None</option>\r\n                                                    <option *ngFor=\"let booth of boothsForOtherCharge\"\r\n                                                        [value]=\"booth.BoothNumber\">{{booth.BoothNumber}}</option>\r\n                                                </select>\r\n                                            </th>\r\n                                            <td class=\"text-left\">\r\n                                                <input type=\"text\" class=\"form-control mt-2 mb-2 text-right\"\r\n                                                    disabled=true\r\n                                                    [(ngModel)]=\"item.OtherItemCharge\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                    (change)=\"otherItemUpdate(item)\">\r\n                                            </td>\r\n                                            <td class=\"text-left\"><input\r\n                                                    type=\"number\" [disabled]=\"!item.otherItemChecked\"\r\n                                                    class=\"form-control mt-2 mb-2\" [(ngModel)]=\"item.Quantity\" min=\"1\"\r\n                                                    onkeydown=\"return false\" (ngModelChange)=\"otherItemUpdate(item)\">\r\n                                            </td>\r\n                                            <td class=\"text-right\">\r\n                                                {{item.OtherItemtotal}}</td>\r\n                                            <td class=\"text-left\">\r\n                                                <input type=\"text\" class=\"form-control mt-2 mb-2\"\r\n                                                    [(ngModel)]=\"item.Reference\" [disabled]=\"!item.otherItemChecked\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                    (keyup)=\"otherItemUpdate(item)\">\r\n                                            </td>\r\n                                        </tr>\r\n                                    </tbody>\r\n                                </table>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                        <button class=\"btn btn-primary mr-1\" (click)=\"addOtherCharges()\" data-dismiss=\"modal\"\r\n                            aria-label=\"Close\" i18n>OK</button>\r\n                        <button class=\"btn btnCancel\" data-dismiss=\"modal\" aria-label=\"Close\" i18n>Cancel</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<!-- Modal for Resale Number -->\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>{{ResaleOrBusinessHeader}}</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"resaleNoDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\" maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n                \r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"businessLicenseDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Business License Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseNumberInp\">Business License Number</label>\r\n                            <input type=\"text\" id=\"businesLicenseNumberInp\" class=\"form-control\" [(ngModel)]=\"businessLicenseNumber\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseExpDateInp\">Business Expiry Date</label>\r\n                            <input type=\"date\" class=\"form-control\" [(ngModel)]=\"businessLicenseExpiryDate\"\r\n                                [placeholder]=\"'Business License Expiry Date'\" i18n-placeholder=\"Business License Expiry Date\">\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n\r\n                                (click)=\"AddBoothsOnGridOnValidationSucess()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- Modal for Resale Number -->\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GridComponent, SortSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport Swal from 'sweetalert2';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\ndeclare var $: any;\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\n\r\n@Component({\r\n  selector: 'app-dailyrental-online',\r\n  templateUrl: './dailyrental-online.component.html',\r\n  styleUrls: ['./dailyrental-online.component.scss', '../rent-online.component.scss']\r\n})\r\nexport class DailyrentalOnlineComponent implements OnInit, OnDestroy {\r\n  marketId;\r\n  sunday = false;\r\n  monday = false;\r\n  isdirty = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  @Input() newVendor;\r\n  rentalForm: FormGroup;\r\n  dailyMarketDays = [];\r\n  exclusivedates = [];\r\n  filteredMarketDays = [];\r\n  ResaleOrBusinessHeader = \"\";\r\n  private subscriptions: Subscription[] = [];\r\n  public loaderIcon: Promise<boolean>;\r\n  defaultPart;\r\n  parts = [];\r\n  selectedDays: Set<number> = new Set();\r\n  vendorId;\r\n  otherRentalCharges = [];\r\n  otherItemList = [];\r\n  displayOtherChargeByBooth;\r\n  otherChargeMarketDay;\r\n  otherItemSearchText;\r\n  selectedOtherCharges = [];\r\n  AllowRentingOtherItems = false;\r\n  selectedOtherItems = [];\r\n  OtherChargesPeriod = false;\r\n  @ViewChild('modalOtherCharges', { static: false }) modalAddNewItems: ElementRef;\r\n  @ViewChild('gridOtherRental', { static: false }) public gridOtherRental: GridComponent;\r\n  @ViewChild('gridDailyRental', { static: false }) public gridDailyRental: GridComponent;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  @ViewChild('modalDiscountPlans', { static: false }) modalDiscountPlans: ElementRef;\r\n  @Output() isFormDirty = new EventEmitter<any>(); \r\n  @Output() isCancelClicked = new EventEmitter<any>(); \r\n  @Output() bookingFormCompleted = new EventEmitter<any>(); \r\n  @Output() rentalBookingData = new EventEmitter<any>();\r\n  @Output() resaleNoInputRequired = new EventEmitter<any>();\r\n  @Output() businessLicenseRequired = new EventEmitter<any>();\r\n  selectedBoothData = []\r\n  allAvailableBooths = [];\r\n  isboothSelected = true;\r\n  defaultPartId;\r\n  selectedBoothsForRental = [];\r\n  tempRecordNo = 0;\r\n  selectedMarketDays = [];\r\n  selectedBooths = [];\r\n  displayLayout = false;\r\n  resaleAndBusiPopupDisable = true;\r\n  layoutParts;\r\n  warnExcessPayment = false;\r\n  warnZeroPayment = false;\r\n  ResaleNumberRequired = false;\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  displaySalesTax = false;\r\n  displayCityTax = false;\r\n  displayOtherChargeSalesTax = false;\r\n  displayOtherChargeCityTax = false;\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  resaleNoDisplay = false;\r\n  businessLicenseDisplay = false;\r\n  businessLicenseNumber;\r\n  businessLicenseExpiryDate;\r\n  vendorRentalDays = [];\r\n  marketDayCountForResale = 0;\r\n  resaleOptionSelected = false;\r\n  DisplayPayDueDate = false;\r\n  DisplaySpecificDate = false;\r\n  DisplayOptionValue;\r\n  vendorProducts;\r\n  defaultProduct;\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  priorBalance = 0.00;\r\n  public textWrapSettings: any = { wrapMode: 'Both' }; // Enable text wrapping\r\n  vendorDiscountPlans =[];\r\n  disableDiscountAmount = true;\r\n  totalDiscountCharge;\r\n  secondTaxName = \"\";\r\n\r\n  constructor(private renderer: Renderer2,\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    public vendorService: VendorService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private datePipe: DatePipe,\r\n    private sharedDataService: SharedDataService,\r\n    private marketInfoService: MarketInfoService) {\r\n    this.rentalForm = this.formbuilder.group({\r\n      marketWeekSunday: [0],\r\n      marketWeekMonday: [0],\r\n      marketWeekTuesday: [0],\r\n      marketWeekWednesday: [0],\r\n      marketWeekThursday: [0],\r\n      marketWeekFriday: [0],\r\n      marketWeekSaturday: [0],\r\n      marketParts: ['']\r\n    })\r\n  }\r\n  sortOptions: SortSettingsModel = {\r\n    columns: [{ field: 'RentalDay', direction: 'Ascending' }, { field: 'BoothNumber', direction: 'Ascending' }]\r\n  };\r\n  sortOtherItemsOptions: SortSettingsModel = {\r\n    columns: [{ field: 'OtherItem', direction: 'Ascending' }, { field: 'BoothNo', direction: 'Ascending' }]\r\n  };\r\n  minExpiryDate = new Date();\r\n  ngOnInit(): void \r\n  {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.generateTempRecordNumber();   \r\n    this.getMarketDays();\r\n    this.getVendorProducts();\r\n    this.getParts();\r\n    this.getMarketVendorSettings();\r\n    this.getVendorBusinessLicenseSettings();\r\n    this.getVendorBalances();\r\n    this.getOtherRentalItems();\r\n    if (this.sharedDataService.paymentSharedData)\r\n      this.loadSelectedBooths();\r\n  }\r\n\r\n  getVendorProducts() {\r\n    if(this.vendorId){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.defaultProduct = this.vendorProducts[0].ProductId;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n  }\r\n\r\n  generateTempRecordNumber() {\r\n    this.subscriptions.push(this.rentalService.generateTempRecordNumber(this.marketId).subscribe((response) => {\r\n      if (response.Success) {\r\n        this.tempRecordNo = response.Message;\r\n      }\r\n    }));\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.vendorDiscountPlans =[];\r\n  forkJoin({\r\n    vendorBalanceRes: this.rentalService.getVendorBalances(this.vendorId, this.marketId),\r\n    discountPlansRes:    this.vendorService.GetDiscountPlan(this.vendorId,this.marketId)\r\n  }).subscribe(\r\n    ({ vendorBalanceRes, discountPlansRes }: any) => {\r\n      if (vendorBalanceRes) {\r\n        this.priorBalance = vendorBalanceRes.PriorBalance;\r\n      }\r\n      if(discountPlansRes){\r\n        if (discountPlansRes) {\r\n          for (const el of discountPlansRes) {\r\n            if (el.Daily && el.OnlineTransactions) {\r\n              const ob = {\r\n                PlanSeqId: el.PlanSeqId,\r\n                PlanId: el.PlanId,\r\n                PlanName: el.PlanName,\r\n                EffectiveFrom: this.datePipe.transform(el.EffectiveFrom, 'MM/dd/yyyy'),\r\n                ExpiryDate: this.datePipe.transform(el.ExpiryDate, 'MM/dd/yyyy'),\r\n                DiscountType: el.DiscountType == 0 ? DiscountType.Percentage : DiscountType.FixedAmount,\r\n                DiscountValue: el.DiscountValue,\r\n                OtherItems: el.OtherItems,\r\n                Daily: el.Daily,\r\n                Weekly: el.Weekly,\r\n                Monthly: el.Monthly,\r\n                CombinedWeekly: el.CombinedWeekly,\r\n                CombinedMonthly: el.CombinedMonthly,\r\n                IsExceedAmount: el.IsExceedAmount,\r\n                ExceedAmount: el.ExceedAmount,\r\n                BalanceDue: el.BalanceDue,\r\n                Notes: el.Notes,\r\n                QDR: el.QDR,\r\n                CheckAll: el.Selected,\r\n                AutoSelected: el.Selected,\r\n                DisableDiscount: el.Selected,\r\n                AppliedDiscount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SecondLevelTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxApplied: el.SalesTax,\r\n                SecondLevelTaxApplied: el.SecondLevelTax,\r\n              }\r\n              this.vendorDiscountPlans.push(ob);\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n          this.disableDiscountAmount = this.vendorDiscountPlans.length > 0 ? false : true;\r\n        }\r\n        this.getDiscounts();\r\n      }\r\n    })\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.defaultPart = res.DefaultLayoutPart;\r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.AllowRentingOtherItems = res.AllowRentingOtherItems;\r\n        this.getRentalPaymentSettings();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  openLayoutPopup() {\r\n    this.refreshAddBooth();\r\n  }\r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.selectedDays[\"Sunday\"] = res.Sunday;\r\n        this.selectedDays[\"Monday\"] = res.Monday;\r\n        this.selectedDays[\"Tuesday\"] = res.Tuesday;\r\n        this.selectedDays[\"Wednesday\"] = res.Wednesday;\r\n        this.selectedDays[\"Thursday\"] = res.Thursday;\r\n        this.selectedDays[\"Friday\"] = res.Friday;\r\n        this.selectedDays[\"Saturday\"] = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);\r\n        this.getDailyMarkets();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  openLayout() {\r\n    if (this.selectedMarketDays.length == 0) {\r\n      Swal.fire({\r\n        text: $localize`Please select a Rental Day`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else if (this.rentalForm.value['marketParts'] == 0) {\r\n      Swal.fire({\r\n        text: $localize`Please select a part`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else {\r\n      //  this.hideTopHeaders.emit(true);\r\n      this.layoutParts = this.rentalForm.value['marketParts'];\r\n      this.sharedDataService.dailyRentalSelectedDays = this.selectedMarketDays;\r\n      this.sharedDataService.dailyRentalSelectedBooths = this.selectedBooths.filter(e => e.NewBooth == true);\r\n      this.sharedDataService.tempRecordNo = this.tempRecordNo;\r\n      this.displayLayout = true;\r\n    }\r\n  }\r\n\r\n  getDailyMarkets() {\r\n    this.subscriptions.push(this.marketInfoService.getDailyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.dailyMarketDays = response;\r\n        this.filteredMarketDays = this.dailyMarketDays;\r\n        this.otherChargeMarketDay = this.dailyMarketDays[0].MarketDays;\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  toggleDaySelection(day: string, event: any) {\r\n    this.selectedDays[day] = event.target.checked;\r\n    this.filterDates();\r\n  }\r\n\r\n  filterDates() {\r\n    this.filteredMarketDays = this.dailyMarketDays.filter(item => {\r\n      const dayName = this.getDayNameFromDate(item.MarketDays);\r\n      return this.selectedDays[dayName];\r\n    });\r\n  }\r\n\r\n  getDayNameFromDate(dateString: string): string {\r\n    const date = new Date(dateString);\r\n    return date.toLocaleDateString('en-US', { weekday: 'long' });\r\n  }\r\n\r\n  checkboxChanged(args, item: any) {\r\n    if (args.srcElement.checked) {\r\n      this.selectedMarketDays.push(new Date(item.MarketDays));\r\n    } else {\r\n      this.selectedMarketDays = this.selectedMarketDays.filter(day => day.getTime() !== new Date(item.MarketDays).getTime());\r\n    }\r\n    this.allAvailableBooths = [];\r\n  }\r\n\r\n  refreshAddBooth() {\r\n   // this.getDailyMarkets();\r\n    this.selectedBoothData = [];\r\n    this.allAvailableBooths = [];\r\n    this.isboothSelected = true;   \r\n    this.rentalForm.get('marketParts').setValue(!this.defaultPart  ? this.parts[0].PartId : this.defaultPart);\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      this.selectedBoothsForRental.forEach(ele => {\r\n        this.selectedMarketDays.forEach(date => {\r\n          const temp = {\r\n            TempRecordNo: this.tempRecordNo.toString(),\r\n            BoothNumber: ele.BoothNumber,\r\n            StartDate: new Date(date),\r\n            RentalType: 1\r\n          }\r\n          this.subscriptions.push(\r\n            this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n            })\r\n          );\r\n        });\r\n      });\r\n    }\r\n    this.selectedMarketDays = [];\r\n    this.selectedBoothsForRental = [];\r\n  }\r\n\r\n  searchOtherItem() {\r\n    this.otherRentalCharges = this.otherItemList;\r\n    if (this.otherItemSearchText != '') {\r\n      this.otherRentalCharges = this.otherItemList.filter((ele) => ele.OtherItem.toString().toLowerCase().indexOf(this.otherItemSearchText.toLowerCase()) !== -1);\r\n    }\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    var rentalDate = '';\r\n    if (this.otherChargeMarketDay)\r\n      rentalDate = this.datePipe.transform(this.otherChargeMarketDay, 'MM/dd/yyyy');\r\n    this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId,rentalDate).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          if (el.WebRental) {\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherItemCharge),\r\n              Quantity: 0,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              othChgBooths: \"none\"\r\n            }\r\n            this.otherRentalCharges.push(ob);\r\n            this.otherItemList.push(ob);\r\n          }\r\n        });\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  addOtherCharges() {\r\n    if (this.selectedOtherCharges) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedOtherCharges.map((el, i) => {\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: el.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: el.Quantity,\r\n          OtherItemCharge: el.OtherItemCharge.includes('(') && el.OtherItemCharge.includes(')') ? (-1) * parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n\r\n        const index = this.selectedOtherItems.findIndex(item => item.Id === el.Id && this.datePipe.transform(item.RentalDay, 'MM/dd/yyyy') == this.datePipe.transform(this.otherChargeMarketDay, 'MM/dd/yyyy') && item.NewItem == true && item.BoothNo === el.othChgBooths && item.Reference == el.Reference);\r\n        this.subscriptions.push(this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          var newItem = [];\r\n          if (index !== -1) {\r\n            var otherItemTotal = this.selectedOtherItems[index].OtherItemtotal;\r\n            var salesTax = this.selectedOtherItems[index].SalesTax;\r\n            var cityTax = this.selectedOtherItems[index].CityTax;\r\n            this.totalOtherRentalCharge -= otherItemTotal.toString().includes('(') && otherItemTotal.toString().includes(')') ? -1 * parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= salesTax.toString().includes('(') && salesTax.toString().includes(')') ? -1 * parseFloat(salesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(salesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= cityTax.toString().includes('(') && cityTax.toString().includes(')') ? -1 * parseFloat(cityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(cityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            const ob = {\r\n              Id: el.Id,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalDay: this.datePipe.transform(el.RentalDay, \"MM/dd/YYYY\"),\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Reference: el.Reference,\r\n              NewItem: true\r\n            }\r\n            this.selectedOtherItems[index] = ob;\r\n            this.gridOtherRental.refresh();\r\n          }\r\n          else {\r\n            const ob = {\r\n              Id: el.Id,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalDay: this.datePipe.transform(el.RentalDay, \"MM/dd/YYYY\"),\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Reference: el.Reference,\r\n              NewItem: true\r\n            }\r\n            newItem.push(JSON.parse(JSON.stringify(ob)));\r\n          }\r\n          this.isdirty = true;\r\n          this.isFormDirty.emit(true);\r\n          if (newItem.length > 0) {\r\n            this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n          }\r\n          this.totalOtherRentalCharge += el.OtherItemtotal.toString().includes('(') && el.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;  \r\n          this.getDiscounts();\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }));\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n      const modal = this.modalAddNewItems.nativeElement;\r\n      if (modal.classList.contains('show')) {\r\n        modal.style.display = 'none';\r\n        modal.classList.remove('show');\r\n      }\r\n    }\r\n  }\r\n\r\n  async getBoothsAndItemsForOtherCharges() {\r\n    if (this.OtherChargesPeriod) {\r\n      this.otherRentalCharges = [];\r\n      this.otherItemList = [];\r\n      await this.getOtherRentalItems();\r\n    }\r\n  }\r\n\r\n  isDateSelected(item: any): boolean {\r\n    var isItemSelected = this.selectedOtherItems.some(\r\n      (element) =>\r\n        this.datePipe.transform(element.RentalDay, 'MM/dd/yyyy') ===\r\n        this.datePipe.transform(this.otherChargeMarketDay, 'MM/dd/yyyy') &&\r\n        element.Id === item.Id && element.NewItem == true\r\n    );\r\n\r\n    if (!isItemSelected) {\r\n      isItemSelected = this.selectedOtherCharges.some(\r\n        (element) =>\r\n          this.datePipe.transform(element.RentalDay, 'MM/dd/yyyy') ===\r\n          this.datePipe.transform(this.otherChargeMarketDay, 'MM/dd/yyyy') &&\r\n          element.Id === item.Id\r\n      );\r\n    }\r\n\r\n    !isItemSelected ? item.otherItemChecked = false : item.otherItemChecked = true;\r\n    item.othChgBooths = \"none\";\r\n    return isItemSelected;\r\n  }\r\n\r\n  setDefaultRentalItem(args, selectedItems) {\r\n    selectedItems.Quantity = 0;\r\n    selectedItems.OtherItemtotal = this.customCurrency.transform(\"0\").toString();\r\n    selectedItems.Reference = \"\";\r\n    if (args.srcElement.checked) {\r\n      selectedItems.otherItemChecked = true;\r\n      selectedItems.Quantity = 1\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString());\r\n      this.selectedOtherCharges.push({\r\n        Id: selectedItems.Id,\r\n        OtherItem: selectedItems.OtherItem,\r\n        OtherItemCharge: selectedItems.OtherItemCharge,\r\n        Quantity: selectedItems.Quantity,\r\n        OtherItemtotal: selectedItems.OtherItemtotal,\r\n        othChgBooths: selectedItems.othChgBooths,\r\n        RentalDay: this.datePipe.transform(this.otherChargeMarketDay, \"MM/dd/YYYY\"),\r\n      });\r\n    } else {\r\n      selectedItems.otherItemChecked = false;\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id);\r\n      if (index !== -1) {\r\n        this.selectedOtherCharges.splice(index, 1);\r\n      }\r\n\r\n      this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n        if (response) {\r\n          const masterChargeRecord = response.filter(item => item.OtherItemId == selectedItems.Id);\r\n          if (masterChargeRecord) {\r\n            selectedItems.OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemCharge);\r\n          }\r\n        }\r\n      }, (err) => {\r\n      }));\r\n    }\r\n  }\r\n\r\n  otherItemUpdate(selectedItems) {\r\n    if (selectedItems.select) {\r\n      if (selectedItems.Quantity > 0) {\r\n        const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id && this.datePipe.transform(item.RentalDay, \"MM/dd/YYYY\") == this.datePipe.transform(this.otherChargeMarketDay, \"MM/dd/YYYY\"));\r\n        const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        selectedItems.OtherItemCharge = this.customCurrency.transform(finalCharge.toString())\r\n        selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString())\r\n        if (index !== -1) {\r\n          var obj = {\r\n            Id: selectedItems.Id,\r\n            OtherItem: selectedItems.OtherItem,\r\n            OtherItemCharge: selectedItems.OtherItemCharge,\r\n            Quantity: selectedItems.Quantity,\r\n            OtherItemtotal: selectedItems.OtherItemtotal,\r\n            othChgBooths: selectedItems.othChgBooths,\r\n            RentalDay: this.datePipe.transform(this.otherChargeMarketDay, \"MM/dd/YYYY\"),\r\n            Reference: selectedItems.Reference\r\n          };\r\n          this.selectedOtherCharges[index] = obj;\r\n        }\r\n        else {\r\n          var objNew = {\r\n            Id: selectedItems.Id,\r\n            OtherItem: selectedItems.OtherItem,\r\n            OtherItemCharge: selectedItems.OtherItemCharge,\r\n            Quantity: selectedItems.Quantity,\r\n            OtherItemtotal: selectedItems.OtherItemtotal,\r\n            othChgBooths: selectedItems.othChgBooths,\r\n            RentalDay: this.datePipe.transform(this.otherChargeMarketDay, \"MM/dd/YYYY\"),\r\n            Reference: selectedItems.Reference\r\n          };\r\n          this.selectedOtherCharges.push(objNew);\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  selectedBoothsFromLayout(data) {\r\n    window.scrollTo(0, 0);\r\n    this.selectedMarketDays.forEach(date => {\r\n      this.selectedBooths = this.selectedBooths.filter(e => !e.NewBooth);\r\n    });\r\n    this.selectedBooths = this.selectedBooths.concat(this.sharedDataService.dailyRentalSelectedBooths);\r\n\r\n    data.forEach(el => {\r\n      this.selectedMarketDays.forEach(date => {\r\n        var recordExist = this.sharedDataService.dailyRentalSelectedBooths.filter(e => e.BoothNumber == el.BoothNumber && this.datePipe.transform(e.RentalDay, 'MM/dd/yyyy') == this.datePipe.transform(date, 'MM/dd/yyyy'));\r\n        if (recordExist.length == 0) {\r\n          var index = this.selectedBoothData.findIndex(e => e.BoothNumber == el.BoothNumber && e.BoothTypeId == el.BoothTypeId)\r\n          if (index == -1) {\r\n            this.selectedBoothData.push(\r\n              {\r\n                BoothNumber: el.BoothNumber,\r\n                BoothType: el.BoothType,\r\n                BoothTypeId: el.BoothTypeId,\r\n                BoothDescription: el.BoothDescription,\r\n              });\r\n          }\r\n        }\r\n      });\r\n    });\r\n    this.displayLayout = false;\r\n    // this.hideTopHeaders.emit(false);\r\n    this.getRentalPaymentSettings();    \r\n    if (this.selectedBoothData.length > 0)\r\n      this.validateAndAddSelectedBoothsToGrid();\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.warnExcessPayment = res.WarnExcessPayment;\r\n        this.warnZeroPayment = res.WarnZeroPayment;\r\n        this.displayOtherChargeByBooth = res.DisplayOtherChargesByBooth;\r\n        this.displaySalesTax = res.RentalTaxable;\r\n        this.displayCityTax = res.RentalSecondTaxable;\r\n        this.displayOtherChargeSalesTax = res.OtherRentalTaxable;\r\n        this.displayOtherChargeCityTax = res.OtherRentalSecondTaxable;\r\n        this.gridDailyRental.getColumnByField(\"SalesTax\").visible = this.displaySalesTax;\r\n        this.gridDailyRental.getColumnByField(\"CityTax\").visible = this.displayCityTax;      \r\n        if(this.newVendor){\r\n          this.gridDailyRental.getColumnByField(\"Product\").visible = false;\r\n        }\r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.DisplayPayDueDate = res.DisplayPayDueDate;\r\n        this.DisplaySpecificDate = res.DisplaySpecificDate;\r\n        this.DisplayOptionValue = res.DisplayOptionValue;\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\"\r\n        var secLevelTaxRentHeader = this.gridDailyRental.getColumnByField(\"CityTax\"); \r\n        secLevelTaxRentHeader.headerText = this.secondTaxName;\r\n        this.OtherChargesPeriod = res.OtherChargesPeriod;\r\n        if (this.AllowRentingOtherItems) {\r\n          var secLevelTaxOtherRentHeader = this.gridOtherRental.getColumnByField(\"CityTax\");\r\n          this.gridOtherRental.getColumnByField(\"BoothNo\").visible = res.DisplayOtherChargesByBooth;\r\n          this.gridOtherRental.getColumnByField(\"SalesTax\").visible = this.displayOtherChargeSalesTax;\r\n          this.gridOtherRental.getColumnByField(\"CityTax\").visible = this.displayOtherChargeCityTax;\r\n          secLevelTaxOtherRentHeader.headerText = this.secondTaxName;\r\n        }\r\n        const nextDate = this.getNextDate(this.DisplayOptionValue);\r\n        this.gridDailyRental.refresh();\r\n        if (this.AllowRentingOtherItems) {\r\n          this.gridOtherRental.refresh();\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getNextDate(day: number): Date {\r\n    if (this.DisplaySpecificDate) {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.getFullYear(), today.getMonth(), day);\r\n      // If the nextDate is in the past or today, move to the next month\r\n      if (nextDate < today) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n      }\r\n      // Handle cases where the day is not valid in the next month (e.g., 31st in February)\r\n      while (nextDate.getDate() !== day) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n        nextDate.setDate(day);\r\n      }\r\n      return nextDate;\r\n    }\r\n    else {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.setDate(today.getDate() + day));\r\n      return nextDate;\r\n    }\r\n  }\r\n\r\n  validateAndAddSelectedBoothsToGrid() {\r\n    let noResale = true;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0\r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n\r\n      const currentYear = new Date().getFullYear();\r\n      var selectedBoothRecord = this.selectedBooths.filter(e => e.NewBooth == true && new Date(e.RentalDay).getFullYear() == currentYear);\r\n      if (selectedBoothRecord.length > 0) {\r\n        selectedBoothRecord.forEach(record => {\r\n          const targetDateString = this.datePipe.transform(record.RentalDay, \"MM/dd/yyyy\");\r\n          const dateExist = this.vendorRentalDays.find(el => {\r\n            const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n            return rentalDateString === targetDateString;\r\n          });\r\n          if (!dateExist) {\r\n            const formattedDate = this.datePipe.transform(record.RentalDay, \"MM/dd/yyyy\");\r\n            this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n            this.marketDayCountForResale += 1;\r\n            if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n              return; // exits the forEach loop when the condition is met\r\n            }\r\n          }\r\n        });\r\n      }\r\n\r\n      this.selectedMarketDays.map(date => {\r\n        const targetDateString = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n        const dateExist = this.vendorRentalDays.find(el => {\r\n          const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n          return rentalDateString === targetDateString;\r\n        });\r\n        if (!dateExist) {\r\n          const formattedDate = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n          this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n          this.marketDayCountForResale += 1;\r\n          if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n            return; // exits the forEach loop when the condition is met\r\n          }\r\n        }\r\n      });\r\n\r\n      const obj = {\r\n        VendorID: this.vendorId,\r\n        VendorRentalDate: new Date(),\r\n        MarketId: this.marketId\r\n      };\r\n\r\n      this.subscriptions.push(this.rentalService.getVendorRentalDays(obj).subscribe((res: any[]) => {\r\n        if (this.marketDayCountForResale <= this.DaysSellWithoutResaleNumber || this.marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n          if (res && res.length > 0) {\r\n            res.forEach(el => {\r\n              const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              const dateExist = this.vendorRentalDays.find(data => {\r\n                const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                return rentalDateString === targetDateString;\r\n              });\r\n              if (!dateExist) {\r\n                const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                this.marketDayCountForResale += 1;\r\n              }\r\n            });\r\n          }\r\n        }\r\n\r\n        if (!this.newVendor) {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            const modal = this.modalResaleNo.nativeElement;\r\n            modal.classList.add('show');\r\n            if (modal.classList.contains('show')) {\r\n              modal.style.display = 'block';\r\n              this.ResaleOrBusinessHeader = \"Resale Number\"\r\n              this.resaleNoDisplay = true;\r\n              this.businessLicenseDisplay = false;\r\n            }\r\n            noResale = false;\r\n          }\r\n          else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            if (!this.businessLicenseNumber || !this.businessLicenseExpiryDate) {\r\n              const modal = this.modalResaleNo.nativeElement;\r\n              modal.classList.add('show');\r\n              if (modal.classList.contains('show')) {\r\n                modal.style.display = 'block';\r\n                this.ResaleOrBusinessHeader = \"Business License Number\";\r\n                this.resaleNoDisplay = false;\r\n                this.businessLicenseDisplay = true;\r\n              }\r\n              noResale = false;\r\n            }\r\n            else {\r\n              if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n                Swal.fire({\r\n                  title: $localize`Warning`,\r\n                  text: $localize`Business License is expired! Please contact the market`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              }\r\n              else {\r\n                this.addSelectedBoothsToGrid();\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            noResale = true;\r\n            this.addSelectedBoothsToGrid();\r\n          }\r\n        }\r\n        else {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            this.resaleNoInputRequired.emit(true)\r\n          }\r\n          if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            this.businessLicenseRequired.emit(true);\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }\r\n      }));\r\n    } else {\r\n      this.addSelectedBoothsToGrid();\r\n    }\r\n  }\r\n\r\n  updateOtherTotalRent(data) {\r\n    if (parseFloat(data.Quantity) == 0) {\r\n      data.Quantity = \"1\"\r\n    }\r\n    this.totalSalesTax -= data.SalesTax.toString().includes('(') && data.SalesTax.toString().includes(')') ? -1 * parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.toString().includes('(') && data.CityTax.toString().includes(')') ? -1 * parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n   this.totalOtherRentalCharge -= data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    const index = this.selectedOtherItems.findIndex(item => item.Id === data.Id && this.datePipe.transform(item.RentalDay, 'MM/dd/yyyy') == this.datePipe.transform(this.otherChargeMarketDay, 'MM/dd/yyyy') && item.NewItem == true && item.BoothNo ==data.BoothNo && item.Reference == data.Reference);\r\n    if (index !== -1) {\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: data.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: data.Quantity,\r\n        OtherItemCharge: data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')') ? (-1) * parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n        WRNewVendorRequest: this.newVendor\r\n      }\r\n      this.subscriptions.push(this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        const isNegative = data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        data.OtherItemtotal = this.customCurrency.transform((finalCharge * data.Quantity).toString());\r\n        this.selectedOtherItems[index].OtherItemtotal = data.OtherItemtotal;\r\n        this.selectedOtherItems[index].OtherItemCharge = this.customCurrency.transform(finalCharge.toString());\r\n        this.selectedOtherItems[index].Quantity = data.Quantity;\r\n        this.gridOtherRental.refresh();\r\n\r\n        this.totalOtherRentalCharge += data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;   \r\n        this.getDiscounts();\r\n      }));\r\n    }\r\n  }\r\n\r\n  onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[0-9]/g;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  addSelectedBoothsToGrid() {\r\n    this.selectedBoothsForRental = [];\r\n    if (this.selectedBoothData) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      for (const date of this.selectedMarketDays) {\r\n        this.selectedBoothData.map((el, i) => {\r\n          var obj = {\r\n            RentalDate: new Date(date),\r\n            MarketId: this.marketId,\r\n            BoothTypeId: el.BoothTypeId,\r\n            VendorId: this.vendorId,\r\n            WRNewVendorRequest: this.newVendor\r\n          }\r\n          this.subscriptions.push(this.rentalService.getBoothrentalCharges(obj).subscribe((res: any) => {\r\n            var vendorProducts = !this.newVendor ? this.vendorProducts.filter(x => x.Priority) ? this.vendorProducts.filter(x => x.Priority)[0].ProductId : this.vendorProducts[0].ProductId:\"\";\r\n            var newbooths = [];\r\n            const ob = {\r\n              DailyRentalId: 0,\r\n              BoothNumber: el.BoothNumber,\r\n              BoothType: el.BoothType,\r\n              BoothTypeId: el.BoothTypeId,\r\n              Product: vendorProducts,\r\n              RentalDay: this.datePipe.transform(date, \"MM/dd/YYYY\"),\r\n              Rent: this.customCurrency.transform(res.Rent),\r\n              SalesTax: this.customCurrency.transform(res.SalesTax),\r\n              CityTax: this.customCurrency.transform(res.CityTax),\r\n              NewBooth: true\r\n            }\r\n            this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.getDiscounts();\r\n            newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n            this.selectedBooths = this.selectedBooths.concat(newbooths);\r\n          }, err => {\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }));\r\n          this.isdirty = true;\r\n          this.isFormDirty.emit(true);\r\n        });\r\n      }     \r\n      this.loaderIcon = Promise.resolve(false);\r\n      this.refreshAddBooth();\r\n    }\r\n  }\r\n\r\n  closeLayoutForm() {\r\n    this.displayLayout = false;\r\n    this.selectedMarketDays = [];\r\n  }\r\n\r\n  getMarketVendorSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getMarketVendorSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n      var response = res.body;\r\n      if (response) {\r\n        this.exemptResale = response.ExemptResale;\r\n        this.resaleNo = response.Resale;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBusinessLicenseSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getVendorBusinessLicenseSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.businessLicenseNumber = res.LicenseNumber;\r\n        this.businessLicenseExpiryDate = res.ExpiryDate;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  AddBoothsOnGridOnValidationSucess() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (this.resaleNoDisplay) {\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n      }\r\n\r\n      if (closeModalPopup) {\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n          this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n          }));\r\n      }\r\n    }\r\n    else{\r\n      addToGrid = true;\r\n    }\r\n\r\n    if (addToGrid) {\r\n      if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        var addToGrid = false;\r\n        var closeModalPopup = false;\r\n        if ((!this.businessLicenseNumber || this.businessLicenseNumber.trim() === '') || !this.businessLicenseExpiryDate) {\r\n          this.ResaleOrBusinessHeader = \"Business License Number\"\r\n          const modal = this.modalResaleNo.nativeElement;\r\n          this.resaleNoDisplay = false;   \r\n          this.businessLicenseDisplay = true;\r\n          modal.classList.add('show');\r\n          if (modal.classList.contains('show')) {\r\n            modal.style.display = 'block';\r\n            this.ResaleOrBusinessHeader = \"Business License Number\"                  \r\n          }\r\n        }\r\n        else if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n          this.closeResaleModal();\r\n          Swal.fire({\r\n            text: $localize`Business License is expired! Please contact the market.`,\r\n            icon: \"warning\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n        else {\r\n          addToGrid = true;\r\n          this.closeResaleModal();\r\n          if (this.businessLicenseDisplay) {\r\n              const obj = {\r\n                VendorID: this.vendorId,\r\n                LicenseNameId: 1,\r\n                LicenseName: \"\",\r\n                ExpiryDate: new Date(this.businessLicenseExpiryDate),\r\n                LicenseNumber: this.businessLicenseNumber\r\n              }\r\n\r\n              this.subscriptions.push(this.rentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n              }));\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }       \r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n    }\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  closeResaleModal(){\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  loadSelectedBooths() {     \r\n    if (this.sharedDataService.paymentSharedData.DailyRentalBooth.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.DailyRentalBooth.forEach((item) => {\r\n        var newbooths = [];\r\n        var ob = {\r\n          DailyRentalId: item.DailyRentalId,\r\n          BoothType: item.BoothType,\r\n          BoothNumber: item.BoothNumber,\r\n          BoothTypeId: item.BoothTypeId,\r\n          Product: item.ProductId,\r\n          OtherItemCharge: this.datePipe.transform(item.OtherItemCharge),\r\n          OtherItemName: item.OtherItem,\r\n          RentalDay: this.datePipe.transform(item.RentalDay, 'MM/dd/yyyy'),\r\n          Rent: this.customCurrency.transform(item.RentalCharge),\r\n          SalesTax: this.customCurrency.transform(item.SalesTax),\r\n          CityTax: this.customCurrency.transform(item.SecLevelTax),\r\n          NewBooth: true\r\n        };\r\n        newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n        this.selectedBooths = this.selectedBooths.concat(newbooths);\r\n      });\r\n    //  this.gridDailyRental.refresh();\r\n    }\r\n    if (this.sharedDataService.paymentSharedData.DailyRentalOtherCharges.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.DailyRentalOtherCharges.forEach((el) => {\r\n        var newItem =[];\r\n        var ob = {\r\n          Id: el.OtherItemId,\r\n          OtherItem: el.OtherItemName,\r\n          OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n          Quantity: el.Quantity,\r\n          OtherItemtotal: this.customCurrency.transform(el.OtherItemCharge),\r\n          RentalDay: this.datePipe.transform(el.RentalDay, \"MM/dd/YYYY\"),\r\n          SalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n          CityTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n          BoothNo: el.BoothNumber,\r\n          Reference: el.Reference,\r\n          NewItem: true\r\n        }\r\n        newItem.push(JSON.parse(JSON.stringify(ob)));\r\n\r\n        if (newItem.length > 0) {\r\n          this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n        }\r\n      });\r\n   //   this.gridOtherRental.refresh();\r\n    }\r\n\r\n    this.totalRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.RentalCharge);\r\n    this.totalOtherRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.OtherCharge.toString());\r\n    this.totalSalesTax = parseFloat(this.sharedDataService.paymentSharedData.SalesTax.toString());\r\n    this.totalSecondLeveltax = parseFloat(this.sharedDataService.paymentSharedData.SecLevelTax.toString());\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    this.sharedDataService.paymentSharedData = \"\";\r\n  }\r\n\r\n  deleteSelectedBooth(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Booth?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentalDay == data.RentalDay);\r\n        if (index !== -1) {\r\n          this.selectedBooths.splice(index, 1);\r\n        }\r\n\r\n        const temp = {\r\n          TempRecordNo: this.tempRecordNo.toString(),\r\n          BoothNumber: data.BoothNumber,\r\n          StartDate: new Date(data.RentalDay),\r\n          RentalType: 1\r\n        }\r\n        this.subscriptions.push(\r\n          this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          })\r\n        );\r\n        this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.gridDailyRental.refresh();\r\n        this.getDiscounts();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteOtherRentalCharges(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Other Charges?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalDay == data.RentalDay && oth.NewItem);\r\n        if (index !== -1) {\r\n          this.selectedOtherItems.splice(index, 1);\r\n        }\r\n\r\n        var selectedItems = this.otherRentalCharges.findIndex(item => item.Id == data.Id);\r\n        if (selectedItems != -1) {\r\n          this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n            if (response) {\r\n              const masterChargeRecord = response.filter(item => item.OtherItemId == data.Id);\r\n              if (masterChargeRecord) {\r\n                this.otherRentalCharges[selectedItems].Quantity = 0;\r\n                this.otherRentalCharges[selectedItems].othChgBooths = \"none\";\r\n                this.otherRentalCharges[selectedItems].OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemCharge);\r\n                this.otherRentalCharges[selectedItems].OtherItemtotal = this.customCurrency.transform('0');\r\n                this.otherRentalCharges[selectedItems].Reference = \"\"\r\n              }\r\n            }\r\n          }, (err) => {\r\n          }));\r\n        }\r\n\r\n        this.totalOtherRentalCharge -= data.OtherItemtotal.includes('(') && data.OtherItemtotal.includes(')') ? -1 * parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n      }\r\n    });\r\n  }\r\n\r\n  disableSavePayment(){\r\n      var vendorBalance = this.priorBalance + this.totalCharge;\r\n      if ((vendorBalance > 0) || (this.priorBalance < 0 && vendorBalance <= 0)){\r\n        return false\r\n      }\r\n      else\r\n        return true\r\n  }\r\n\r\n  getDiscounts() {\r\n    var totalRentalCharge = this.totalRentalCharge;\r\n    var totalSalesTax = this.totalSalesTax;\r\n    var totalSecondLeveltax = this.totalSecondLeveltax;\r\n    var totalOtherRentalCharge = this.totalOtherRentalCharge;\r\n    var priorBalance = 0;\r\n    var totalChargeWithDue = this.priorBalance + (totalRentalCharge)\r\n      + (totalSalesTax)\r\n      + (totalSecondLeveltax)\r\n      + (totalOtherRentalCharge)\r\n\r\n    var totalCharge = (totalRentalCharge) + (totalSalesTax) + (totalSecondLeveltax) + (totalOtherRentalCharge)\r\n    //   totalCharge = totalCharge.toString().includes('(') && totalCharge.toString().includes(')') ? -1 * parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.vendorDiscountPlans.length > 0 && totalCharge > 0) {\r\n      var discountTotalAmount = 0;\r\n      var totalAmountForDiscount = 0;\r\n      for (const disc of this.vendorDiscountPlans) {\r\n        disc.CheckAll = disc.AutoSelected;\r\n        if (disc.CheckAll && disc.Daily) {\r\n          var currentDiscountValue = 0;\r\n          if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n            if (!disc.IsExceedAmount || (disc.IsExceedAmount && totalCharge > disc.ExceedAmount)) {\r\n              const discountValue = disc.DiscountValue;\r\n              totalAmountForDiscount = totalRentalCharge\r\n              if (disc.OtherItems) {\r\n                totalAmountForDiscount += totalOtherRentalCharge\r\n              }\r\n              if (disc.DiscountType == 'Percentage') {\r\n                discountTotalAmount += totalAmountForDiscount * (discountValue / 100);\r\n                currentDiscountValue = totalAmountForDiscount * (discountValue / 100);\r\n              }\r\n              else {\r\n                discountTotalAmount += discountValue;\r\n                currentDiscountValue = discountValue;\r\n              }\r\n            }\r\n            else {\r\n              disc.CheckAll = false;\r\n            }\r\n          }\r\n          else {\r\n            disc.CheckAll = false;\r\n          }\r\n          disc.AppliedDiscount = this.customCurrency.transform(currentDiscountValue.toString());\r\n        }\r\n        else {\r\n          disc.AppliedDiscount = this.customCurrency.transform(\"0\");\r\n        }\r\n\r\n        this.totalDiscountCharge = discountTotalAmount.toString();\r\n      }\r\n    }\r\n    else {\r\n      // this.rentalForm.controls['vendorBalances'].patchValue({\r\n      //   totalDiscountCharge: this.customCurrency.transform(\"0\"),\r\n      //   totalCharge: this.customCurrency.transform((totalChargeWithDue - 0).toString())\r\n      // });\r\n    }\r\n  }\r\n\r\n  cancelRental() {\r\n    if (this.isdirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isFormDirty.emit(false);\r\n          this.isCancelClicked.emit('1');\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n      this.isFormDirty.emit(false);\r\n      this.isCancelClicked.emit('1');\r\n    }\r\n  }\r\n\r\n  rentOnlineNextTab(){\r\n    this.saveRentalWithPayment();\r\n    this.bookingFormCompleted.emit(true);\r\n  }\r\n\r\n  saveRentalWithPayment(){\r\n    this.isdirty = false;\r\n    this.isFormDirty.emit(false);\r\n    var bookingReceipt = this.selectedBooths.some(e=>e.NewBooth == true) || this.selectedOtherItems.some(e=>e.NewItem == true);\r\n    var paymentDueDate = null;\r\n    var totalDiscountCharge = 0\r\n    \r\n    var obj = {\r\n      RentalType: 1,\r\n      VendorId: this.vendorId,\r\n      PriorBalance:this.priorBalance,\r\n      RentalCharge: this.totalRentalCharge,\r\n      SalesTax: this.totalSalesTax,\r\n      SecLevelTax: this.totalSecondLeveltax,\r\n      OtherCharge: this.totalOtherRentalCharge,\r\n      TotalBalanceDue: this.totalCharge,\r\n      RentalNotes: \"\",\r\n      RentalMethod: \"\",\r\n      DailyRentalBooth: [],\r\n      DailyRentalOtherCharges: [],\r\n      TempRecordNo: this.tempRecordNo,\r\n      ReceiptSettings: \"\",\r\n      PaymentOnly:!bookingReceipt,\r\n      ExemptResaleNo:false,\r\n      ExemptResaleReason: \"\",\r\n      ResaleNo: this.resaleNo,\r\n      PaymentDueDate: this.DisplayPayDueDate ? paymentDueDate : null,\r\n      AppliedDiscountModel: [],\r\n      DiscountAmount: this.totalDiscountCharge ?? 0\r\n    }\r\n\r\n    var objSelectedBooth = [];\r\n    if (this.selectedBooths.length > 0) {\r\n      this.selectedBooths.forEach((item) => {\r\n        if (item.NewBooth) {\r\n          objSelectedBooth.push({\r\n            DailyRentalId: item.DailyRentalId,\r\n            BoothNumber: item.BoothNumber,\r\n            BoothTypeId: item.BoothTypeId,\r\n            ProductId: item.Product,\r\n            BoothType: item.BoothType,\r\n            RentalDay: new Date(item.RentalDay),\r\n            RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n            SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n            SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          })\r\n        }\r\n      });\r\n    }\r\n\r\n    if (objSelectedBooth.length > 0)\r\n      obj.DailyRentalBooth = objSelectedBooth;\r\n\r\n    var objSelectedOtherCharge = [];\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.selectedOtherItems.forEach((item) => {\r\n        if (item.NewItem) {\r\n          objSelectedOtherCharge.push({\r\n            OtherItemId: item.Id,\r\n            OtherItemName: item.OtherItem,\r\n            OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n            Quantity: item.Quantity,\r\n            RentalDay: new Date(item.RentalDay),\r\n            BoothNumber: item.BoothNo,\r\n            OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n            SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n            SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n            Reference: item.Reference\r\n          })\r\n        }\r\n      });\r\n    }\r\n    if (objSelectedOtherCharge.length > 0)\r\n      obj.DailyRentalOtherCharges = objSelectedOtherCharge;\r\n\r\n    var objDiscountData = [];\r\n    if(this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0){\r\n      this.vendorDiscountPlans.forEach((item) => {\r\n        if(item.CheckAll){\r\n          objDiscountData.push({\r\n            PlanId: item.PlanSeqId,\r\n            DiscountAmount:item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n            OtherCharges: item.OtherItems,\r\n            SalesTax: item.SalesTaxApplied,\r\n            SecondLevelTax: item.SecondLevelTaxApplied,\r\n            DiscountType:item.DiscountType==  DiscountType.Percentage ? \"0\" : \"1\",\r\n            DiscountValue : item.DiscountValue,\r\n            SalesTaxAmount:item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n            SecondLevelTaxAmount:item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n          })\r\n        }\r\n      });\r\n    }\r\n    if (objDiscountData.length > 0)\r\n      obj.AppliedDiscountModel = objDiscountData;\r\n    if (!this.newVendor) {\r\n      this.sharedDataService.paymentSharedData = obj;\r\n      var url = 'vendor-payments/' + this.marketId + '/' + this.vendorId;\r\n      this.router.navigate([url]);\r\n    }\r\n    else{\r\n      this.rentalBookingData.emit(obj);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"rentalForm\">\r\n    <div *ngIf=\"!displayLayout\">\r\n        <div class=\"row\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4\"></div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 mblRightToLeft mt-1\">\r\n                        <label class=\"mt-2 mb-0\">Select Layout Part</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mblRightToLeft mt-2\">\r\n                        <select class=\"form-control respLayoutPart\" formControlName=\"marketParts\">\r\n                            <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">{{item.PartDescription}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-3 col-xl-3 mblRightToLeft mt-2\">\r\n                        <button class=\"btn btn-primary py-2\" (click)=\"openLayout()\">Select Booth</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        * Select Market Day(s) Here\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush\">\r\n                        <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Monday\" formControlName=\"marketWeekMonday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Monday\" i18n>\r\n                                    Monday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Tuesday\" formControlName=\"marketWeekTuesday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Tuesday\" i18n>\r\n                                    Tuesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Wednesday\" formControlName=\"marketWeekWednesday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Wednesday\" i18n>\r\n                                    Wednesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Thursday\" formControlName=\"marketWeekThursday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Thursday\" i18n>\r\n                                    Thursday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Friday\" formControlName=\"marketWeekFriday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Friday\" i18n>\r\n                                    Friday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Saturday\" formControlName=\"marketWeekSaturday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Saturday\" i18n>\r\n                                    Saturday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"Sunday\" formControlName=\"marketWeekSunday\"\r\n                                (change)=\"selectedWeeklyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"Sunday\" i18n>\r\n                                    Sunday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        Weekly Market(s):\r\n                    </div>\r\n                    <div class=\"mt-1\">\r\n                        <select class=\"form-control\" (change)=\"checkSelectedDates()\" formControlName=\"rentalStartDate\">\r\n                            <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalStartDays\">\r\n                                {{item.RentalStartDays}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"mt-1\">\r\n                        <select class=\"form-control\" (change)=\"checkSelectedDates()\" formControlName=\"rentalEndDate\">\r\n                            <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalEndDays\">\r\n                                {{item.RentalEndDays}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"row mt-1 mb-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Date</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"weeklyRentalStartDates\">\r\n                                <option *ngFor=\"let item of weeklyRentalStartDates;\" [value]=\"item.startDate\">\r\n                                    {{item.startDate}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"vendorDetails mt-2\">\r\n                    <ejs-grid #gridWeeklyRental [dataSource]='selectedWeeklyBooths'\r\n                        class=\"Table_Height_store table-striped table-ipad\" [gridLines]='lines' height=\"150\"\r\n                        (created)=\"created($event)\" allowSorting='true' [sortSettings]='sortOptions'\r\n                        [textWrapSettings]=\"textWrapSettings\" allowTextWrap=\"true\">\r\n                        <e-columns>\r\n                            <e-column field='BoothNumber' headerText='Booth#' width=130 textAlign='left'>\r\n                            </e-column>\r\n                            <e-column field='BoothType' headerText='Booth Type' textAlign='left' width=140>\r\n                            </e-column>\r\n                            <e-column field='Product' headerText='Product' textAlign='left' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.Product\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"productChange(data)\">\r\n                                            <option *ngFor=\"let item of vendorProducts\" [value]=\"item.ProductId\">\r\n                                                {{item.ProductName}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Sunday' headerText='Sun' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\" [(ngModel)]=\"data.Sunday\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Monday' headerText='Mon' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Monday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Tuesday' headerText='Tue' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Tuesday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Wednesday' headerText='Wed' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Wednesday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Thursday' headerText='Thu' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Thursday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Friday' headerText='Fri' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Friday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Saturday' headerText='Sat' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Saturday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentStartPeriod' headerText='Rent Start Period' textAlign='left' width=190>\r\n                            </e-column>\r\n                            <e-column field='RentEndPeriod' headerText='Rent End Period' textAlign='left' width=190>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\"\r\n                                        (click)=\"rentalExtension(RentalExtension,data)\">{{data.RentEndPeriod}}</span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Rent' headerText='Rent' textAlign='right' width=130>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteSelectedBooth(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n                <div class=\"row\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <div class=\"col-12 text-right\" style=\"margin-top: 18px\">\r\n                        <button class=\"btn btn-primary\" class=\"btn btn-primary btnAdd\" data-toggle=\"modal\"\r\n                            data-target=\"#modalWeeklyOtherCharges\">Select Other Item</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <ejs-grid #gridOtherRental [dataSource]='selectedOtherItems'\r\n                        class=\"\" height='150' allowSorting='true'\r\n                        [sortSettings]='sortOtherItemsOptions'>\r\n                        <e-columns>\r\n                            <e-column field='OtherItem' headerText='Item' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='Recurring' headerText='Rec' textAlign='left' width=140>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Recurring\"\r\n                                                    (change)=\"updateOtherItem(data)\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='OtherItemCharge' headerText='Charge' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column field='Quantity' headerText='Qty' textAlign='left' width=120>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control pl-2\" style=\"text-align: center;\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Quantity\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (blur)=\"updateOtherItem(data)\"\r\n                                            (keydown)=\"onCheckNumKeyPress($event)\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='BoothNo' headerText='Booth#' textAlign='left' width=120>\r\n                            </e-column>\r\n                            <e-column field='RentalWeek' headerText='Week' textAlign='left' width=160>\r\n                            </e-column>\r\n                            <e-column field='OtherItemtotal' headerText='Total' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=160>\r\n                            </e-column>\r\n                            <e-column field='Reference' headerText='Reference' textAlign='left' width=170>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" (blur)=\"updateOtherItem(data)\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Reference\"\r\n                                            [ngModelOptions]=\"{standalone: true}\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteOtherRentalCharges(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n\r\n                <div class=\"vendorDetails1 mt-2\">\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"!newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"saveRentalWithPayment()\">Pay</button>\r\n                    </div>\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"rentOnlineNextTab()\">Next</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <!-- Modal for Adding Other Charges -->\r\n        <div class=\"modal fade bd-example-modal-xl\" #modalWeeklyOtherCharges id=\"modalWeeklyOtherCharges\" tabindex=\"-1\"\r\n            role=\"dialog\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n            <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\r\n                <div class=\"modal-content contentNewBooths\">\r\n                    <div class=\"modal-header modal-headerNewBooths\">\r\n                        <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Other Charges</h5>\r\n                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                            <span aria-hidden=\"true\">&times;</span>\r\n                        </button>\r\n                    </div>\r\n                    <div class=\"modal-body modal-bodyNewBooths\" formGroupName=\"otherItemsScreen\">\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label i18n>Rental Week</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <select class=\"form-control\" formControlName=\"otherChargeMarketWeek\"\r\n                                    (change)=\"getBoothsAndItemsForOtherCharges()\">\r\n                                    <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalStartDays\">\r\n                                        {{item.RentalStartDays}}</option>\r\n                                </select>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label>Search Value</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <input type=\"text\" class=\"form-control\" formControlName=\"otherItemSearchText\"\r\n                                    (keyup)=\"searchOtherItem()\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-2\"\r\n                                style=\"height: 50vh; overflow-y: scroll;\">\r\n                                <div class=\"availableBoothsHeading pt-1 pb-1\">\r\n                                    <label i18n>Other Charges</label>\r\n                                </div>\r\n                                <div class=\"scroll_outer\">\r\n                                    <table class=\"table table-striped table-hover followup-table mb-0\">\r\n                                        <thead>\r\n                                            <tr>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"40\" i18n></th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"200\" i18n>Items</th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"50\" i18n>Rec</th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"100\"\r\n                                                    *ngIf=\"displayOtherChargeByBooth\" i18n>Booth#</th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Charges\r\n                                                </th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Qty</th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Total</th>\r\n                                                <th class=\"text-left tblAvailableBooths\" width=\"160\" i18n>Reference\r\n                                                </th>\r\n                                            </tr>\r\n                                        </thead>\r\n                                        <tbody>\r\n                                            <tr *ngFor=\"let item of otherRentalCharges\">\r\n                                                <td class=\"text-left\" style=\"width: 10%;\">\r\n                                                    <label class=\"pure-material-checkbox\">\r\n                                                        <input type=\"checkbox\" [checked]=\"isDateSelected(item)\"\r\n                                                            (change)=\"setDefaultRentalItem($event,item)\"\r\n                                                            [(ngModel)]=\"item.isOtherItemChecked\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\">\r\n                                                        <span></span>\r\n                                                    </label>\r\n                                                </td>\r\n                                                <td class=\"text-left\" style=\"width: 35%;\">{{item.OtherItem}}</td>\r\n                                                <td class=\"text-left\">\r\n                                                    <div class=\"checkbox-wrapper mt-2\" style=\"width: 15%;\">\r\n                                                        <label class=\"pure-material-checkbox \">\r\n                                                            <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                                [(ngModel)]=\"item.Recurring\"\r\n                                                                [ngModelOptions]=\"{standalone: true}\"\r\n                                                                (change)=\"otherItemUpdate(item)\"\r\n                                                                [disabled]=\"!item.otherItemChecked\">\r\n                                                            <span></span>\r\n                                                        </label>\r\n                                                    </div>\r\n                                                </td>\r\n                                                <td class=\"text-left tblAvailableBooths\" style=\"width: 35%;\"\r\n                                                    *ngIf=\"displayOtherChargeByBooth\">\r\n                                                    <select class=\"form-control\" [(ngModel)]=\"item.othChgBooths\"\r\n                                                        [ngModelOptions]=\"{standalone: true}\"\r\n                                                        (change)=\"otherItemUpdate(item)\"\r\n                                                        [disabled]=\"!item.otherItemChecked\">\r\n                                                        <option value=\"none\">None</option>\r\n                                                        <option *ngFor=\"let booth of boothsForOtherCharge\"\r\n                                                            [value]=\"booth.BoothNumber\">{{booth.BoothNumber}}\r\n                                                        </option>\r\n                                                    </select>\r\n                                                </td>\r\n                                                <td class=\"text-left\" style=\"width: 30%;\">\r\n                                                    <input type=\"text\" class=\"form-control text-right pr-1\"\r\n                                                        [(ngModel)]=\"item.OtherItemCharge\"\r\n                                                        [ngModelOptions]=\"{standalone: true}\"\r\n                                                        (change)=\"otherItemUpdate(item)\" disabled=true>\r\n                                                </td>\r\n                                                <td class=\"text-left\" style=\"width: 25%;\"><input type=\"number\"\r\n                                                        class=\"form-control text-right\" [(ngModel)]=\"item.Quantity\"\r\n                                                        [ngModelOptions]=\"{standalone: true}\" min=\"1\"\r\n                                                        (ngModelChange)=\"otherItemUpdate(item)\"\r\n                                                        [disabled]=\"!item.otherItemChecked\" onkeydown=\"return false\">\r\n                                                </td>\r\n                                                <td class=\"text-right\" style=\"width: 20%;\">{{item.OtherItemtotal}}\r\n                                                </td>\r\n                                                <td class=\"text-left\" style=\"width: 35%;\">\r\n                                                    <input type=\"text\" class=\"form-control\" [(ngModel)]=\"item.Reference\"\r\n                                                        [ngModelOptions]=\"{standalone: true}\"\r\n                                                        (keyup)=\"otherItemUpdate(item)\"\r\n                                                        [disabled]=\"!item.otherItemChecked\">\r\n                                                </td>\r\n                                            </tr>\r\n                                        </tbody>\r\n                                    </table>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"modal-footer d-inline pt-2\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right\">\r\n                                <button class=\"btn btn-primary mr-1\" (click)=\"addOtherCharges()\" data-dismiss=\"modal\"\r\n                                    aria-label=\"Close\" i18n>OK</button>\r\n                                <button class=\"btn btn-outline-primary\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                                    i18n>Cancel</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- Ends Modal for Adding Other Charges -->\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"displayLayout\">\r\n    <app-rentallayout-online [marketId]=\"marketId\" [layoutParts]=\"layoutParts\" [LayoutData]=\"weeklyLayoutData\"\r\n        rentalType=\"W\" (selectedBoothsFromLayout)=\"selectedBoothsFromLayout($event)\" (CloseLayout)=\"closeLayoutForm()\"\r\n        (removeBoothCharges)=\"removeBoothCharges($event)\"></app-rentallayout-online>\r\n</div>\r\n\r\n\r\n<!-- Modal for Resale Number -->\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>{{ResaleOrBusinessHeader}}</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"resaleNoDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n                \r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"businessLicenseDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Business License Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseNumberInp\">Business License Number</label>\r\n                            <input type=\"text\" id=\"businesLicenseNumberInp\" class=\"form-control\" [(ngModel)]=\"businessLicenseNumber\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseExpDateInp\">Business Expiry Date</label>\r\n                            <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false id=\"businesLicenseExpDateInp\"\r\n                                [(ngModel)]=\"businessLicenseExpiryDate\" i18n-placeholder=\"Business License Expiry Date\"\r\n                                placeholder=\"Business License Expiry Date\" [min]=\"minExpiryDate\"></ejs-datepicker>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n\r\n                                (click)=\"AddBoothsOnGridOnValidationSucess()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- Modal for Resale Number -->\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GridComponent, GridLine, SortSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { catchError, forkJoin, of, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport Swal from 'sweetalert2';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-weeklyrental-online',\r\n  templateUrl: './weeklyrental-online.component.html',\r\n  styleUrls: ['./weeklyrental-online.component.scss', '../rent-online.component.scss']\r\n})\r\nexport class WeeklyrentalOnlineComponent implements OnInit, OnDestroy {\r\n  rentalForm : FormGroup;\r\n  marketId;\r\n  vendorId;\r\n  sunday = false;\r\n  monday = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  public lines: GridLine;\r\n  secondTaxName =\"\";\r\n  RentalTaxPercentage = 0;\r\n  OtherRentalTaxPercentage = 0;\r\n  RentalSecondTaxPercentage = 0;\r\n  OtherRentalSecondTaxPercentage = 0;\r\n  public textWrapSettings: any = { wrapMode: 'Both' }; // Enable text wrapping\r\n  exemptResaleReason = \"\";\r\n  @ViewChild('modalWeeklyOtherCharges', { static: false }) modalWeeklyOtherCharges: ElementRef;\r\n  @ViewChild('gridOtherRental', { static: false }) public gridOtherRental: GridComponent;\r\n  @ViewChild('gridWeeklyRental', { static: false }) public gridWeeklyRental: GridComponent;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  selectedMarketDays=[];\r\n  parts=[];\r\n  weeklyRentalStartDates = [];\r\n  defaultPart;\r\n  weeklyMarketDays = [];\r\n  excludedMarketDays=[];\r\n  selectedWeeklyBoothData = [];\r\n  isWeeklyboothSelected=false;\r\n  marketDayCountForResale = 0 \r\n  vendorProducts=[];\r\n  defaultProduct;\r\n  layoutParts=0;\r\n  totalRentalCharge = 0.00;\r\n  displayOtherChargeByBooth = false;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  tempRecordNo=0;\r\n  defaultPartId;\r\n  displayLayout =false;\r\n  weeklyLayoutData;\r\n  selectedDates= [];\r\n  ResaleNumberRequired  = false;\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  resaleNoOption = \"1\";\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  ResaleOrBusinessHeader = \"\";\r\n  resaleNoDisplay = false;\r\n  businessLicenseDisplay = false;\r\n  otherRentalCharges=[];\r\n  selectedBoothsForRental =[];\r\n  otherItemList=[];\r\n  selectedOtherCharges=[];\r\n  vendorDiscountPlans =[];\r\n  ApplyBookingFee = false;\r\n  selectedOtherItems=[];\r\n  ApplyBookingFeeId;\r\n  bookingFeeAmount;\r\n  priorBalance = 0.00;\r\n  totalDiscountCharge;\r\n  boothsForOtherCharge = [];\r\n  businessLicenseNumber;\r\n  selectedWeeklyBooths = []\r\n  businessLicenseExpiryDate;\r\n  resaleOptionSelected = false;\r\n  warnExcessPayment = false;\r\n  warnZeroPayment = false;  \r\n  displayOtherChargeSalesTax=false;\r\n  displayOtherChargeCityTax=false;\r\n  displaySalesTax=false;\r\n  displayCityTax = false;\r\n  DisplayPayDueDate = false;\r\n  DisplaySpecificDate = false;\r\n  DisplayOptionValue = 0;\r\n  AllowRentingOtherItems = false;\r\n  OtherChargesPeriod = false;\r\n  isdirty = false;\r\n  @Input() newVendor;\r\n  @Output() bookingFormCompleted = new EventEmitter<any>(); \r\n  @Output() rentalBookingData = new EventEmitter<any>();\r\n  @Output() isFormDirty = new EventEmitter<any>(); \r\n  @Output() isCancelClicked = new EventEmitter<any>(); \r\n  @Output() resaleNoInputRequired = new EventEmitter<any>();\r\n  @Output() businessLicenseRequired = new EventEmitter<any>();\r\n  public loaderIcon: Promise<boolean>;\r\n  sortOptions: SortSettingsModel = {\r\n    columns: [{ field: 'RentalStartDate', direction: 'Ascending' },{ field: 'BoothNumber', direction: 'Ascending' }]\r\n  };\r\n  sortOtherItemsOptions: SortSettingsModel = {\r\n    columns: [{ field: 'OtherItem', direction: 'Ascending' },{ field: 'BoothNo', direction: 'Ascending' }]\r\n  };\r\n  private subscriptions: Subscription[] = [];\r\n  constructor(private renderer: Renderer2,\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    private datePipe: DatePipe,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private sharedDataService: SharedDataService,\r\n    public vendorService: VendorService,\r\n    private marketInfoService: MarketInfoService){\r\n      this.rentalForm = this.formbuilder.group({\r\n        marketWeekSunday: [0],\r\n        marketWeekMonday: [0],\r\n        marketWeekTuesday: [0],\r\n        marketWeekWednesday: [0],\r\n        marketWeekThursday: [0],\r\n        marketWeekFriday: [0],\r\n        marketWeekSaturday: [0],\r\n        marketParts:[''],\r\n        rentalStartDate:[],\r\n        rentalEndDate:[],\r\n        weeklyRentalStartDates:[],\r\n        otherItemsScreen: this.formbuilder.group({\r\n          otherChargeMarketWeek: [''],\r\n          otherItemSearchText: ['']\r\n        })\r\n      })\r\n    }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.getMarketDays();\r\n    this.getRentalPaymentSettings();\r\n    this.getParts();\r\n    this.getMarketVendorSettings();\r\n    this.getVendorBusinessLicenseSettings();\r\n    this.generateTempRecordNumber();\r\n    this.getVendorProducts();\r\n    this.getVendorBalances();\r\n    this.getOtherRentalItems();\r\n    if (this.sharedDataService.paymentSharedData)\r\n      this.loadSelectedBooths();\r\n  }\r\n\r\n  generateTempRecordNumber() {\r\n    this.rentalService.generateTempRecordNumber(this.marketId).subscribe((response) => {\r\n       if (response) {\r\n         this.tempRecordNo = response;\r\n       }\r\n     });\r\n   }\r\n\r\n   onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[0-9]/g;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  cancelRental() {\r\n    if (this.isdirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isFormDirty.emit(false);\r\n          this.isCancelClicked.emit('3');\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n      this.isFormDirty.emit(false);\r\n      this.isCancelClicked.emit('3');\r\n    }\r\n  }\r\n\r\n  updateOtherItem(data) {\r\n    if (parseFloat(data.Quantity) == 0) {\r\n      data.Quantity = \"1\"\r\n    }\r\n    this.totalSalesTax -= data.SalesTax.toString().includes('(') && data.SalesTax.toString().includes(')') ? -1 * parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.toString().includes('(') && data.CityTax.toString().includes(')') ? -1 * parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalOtherRentalCharge -= data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n\r\n    var index;\r\n    if (data.NewItem == true)\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.NewItem == true && oth.BoothNo == data.BoothNo);\r\n    else\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.MonthlyRentalIds == data.MonthlyRentalIds && oth.BoothNo == data.BoothNo);\r\n\r\n    if (index !== -1) {\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: data.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: data.Quantity,\r\n        OtherItemCharge: data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')') ? (-1) * parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n        WRNewVendorRequest: this.newVendor\r\n      }\r\n      this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        const isNegative = data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        data.OtherItemtotal = this.customCurrency.transform((finalCharge * data.Quantity).toString());\r\n        this.selectedOtherItems[index].OtherItemtotal = data.OtherItemtotal;\r\n        this.selectedOtherItems[index].OtherItemCharge = this.customCurrency.transform((finalCharge).toString());\r\n        this.selectedOtherItems[index].Recurring = data.Recurring;\r\n        this.selectedOtherItems[index].Reference = data.Reference;\r\n        this.selectedOtherItems[index].Quantity = data.Quantity;\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n        this.totalOtherRentalCharge += data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      });\r\n    }\r\n  }\r\n\r\n   getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.warnExcessPayment = res.WarnExcessPayment;\r\n        this.warnZeroPayment = res.WarnZeroPayment;\r\n        this.displayOtherChargeByBooth = res.DisplayOtherChargesByBooth;      \r\n        this.displayCityTax = res.RentalSecondTaxable;\r\n        this.displaySalesTax = res.RentalTaxable;\r\n        this.gridWeeklyRental.getColumnByField(\"SalesTax\").visible = this.displaySalesTax;\r\n        this.gridWeeklyRental.getColumnByField(\"CityTax\").visible = this.displayCityTax;       \r\n        this.gridWeeklyRental.refreshColumns(); \r\n        this.displayOtherChargeSalesTax = res.OtherRentalTaxable;\r\n        this.displayOtherChargeCityTax = res.OtherRentalSecondTaxable;        \r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;      \r\n        this.DisplayPayDueDate = res.DisplayPayDueDate;\r\n        this.DisplaySpecificDate = res.DisplaySpecificDate;\r\n        this.DisplayOptionValue = res.DisplayOptionValue;\r\n        const nextDate = this.getNextDate(this.DisplayOptionValue);\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\"\r\n        var secLevelTaxRentHeader = this.gridWeeklyRental.getColumnByField(\"CityTax\"); \r\n        secLevelTaxRentHeader.headerText = this.secondTaxName;      \r\n        this.RentalTaxPercentage = res.RentalTaxPercentage;\r\n        this.OtherRentalTaxPercentage = res.OtherRentalTaxPercentage;\r\n        this.RentalSecondTaxPercentage = res.RentalSecondTaxPercentage;\r\n        this.OtherRentalSecondTaxPercentage = res.OtherRentalSecondTaxPercentage;\r\n        this.OtherChargesPeriod = res.OtherChargesPeriod;\r\n        if(this.newVendor){\r\n          this.gridWeeklyRental.getColumnByField(\"Product\").visible = false;\r\n        }\r\n        this.gridWeeklyRental.refresh();\r\n        if (this.AllowRentingOtherItems) {\r\n          this.gridOtherRental.getColumnByField(\"BoothNo\").visible = res.DisplayOtherChargesByBooth;\r\n          this.gridOtherRental.getColumnByField(\"SalesTax\").visible = this.displayOtherChargeSalesTax;\r\n          this.gridOtherRental.getColumnByField(\"CityTax\").visible = this.displayOtherChargeCityTax;\r\n          var secLevelTaxOtherRentHeader = this.gridOtherRental.getColumnByField(\"CityTax\");\r\n          secLevelTaxOtherRentHeader.headerText = this.secondTaxName;\r\n          this.gridOtherRental.refreshColumns();\r\n          this.gridOtherRental.refresh();\r\n        }        \r\n      }      \r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getNextDate(day: number): Date {\r\n    if (this.DisplaySpecificDate) {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.getFullYear(), today.getMonth(), day);\r\n      // If the nextDate is in the past or today, move to the next month\r\n      if (nextDate < today) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n      }\r\n      // Handle cases where the day is not valid in the next month (e.g., 31st in February)\r\n      while (nextDate.getDate() !== day) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n        nextDate.setDate(day);\r\n      }\r\n      return nextDate;\r\n    }\r\n    else{\r\n      const today = new Date();\r\n      let nextDate = new Date(today.setDate(today.getDate() + day));\r\n      return nextDate;\r\n    }\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    var rentalDatePeriod = '';\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'])\r\n      rentalDatePeriod = this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'].split('-')[0];\r\n    this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId, rentalDatePeriod).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          if (el.WebRental) {\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherItemWeeklyCharge),\r\n              Quantity: 0,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              Recurring: el.Recurring,\r\n              othChgBooths: \"none\"\r\n            }\r\n            this.otherRentalCharges.push(ob);\r\n            this.otherItemList.push(ob);\r\n          }\r\n        });\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMarketVendorSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getMarketVendorSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n      var response = res.body;\r\n      if (response) {\r\n        this.exemptResale = response.ExemptResale;\r\n        this.resaleNo = response.Resale;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBusinessLicenseSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getVendorBusinessLicenseSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.businessLicenseNumber = res.LicenseNumber;\r\n        this.businessLicenseExpiryDate = res.ExpiryDate;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWebRentalSetting(){\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {  \r\n        this.defaultPart = res.DefaultLayoutPart;   \r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.ApplyBookingFee = res.ApplyBookingFee;\r\n        this.ApplyBookingFeeId = res.ApplyBookingFeeId;\r\n        this.AllowRentingOtherItems = res.AllowRentingOtherItems;\r\n        if (this.ApplyBookingFee) {\r\n          this.subscriptions.push(this.rentalService.getBookingFeeById(this.marketId, this.ApplyBookingFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.bookingFeeAmount = resFee.OtherItemCharge;\r\n            }\r\n          }));\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  refreshAddBooth() {    \r\n    this.getMarketDays();\r\n    this.selectedWeeklyBoothData = [];\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      this.selectedBoothsForRental.forEach(ele => {\r\n        const temp = {\r\n          TempRecordNo: this.tempRecordNo.toString(),\r\n          BoothNumber: ele.BoothNumber,\r\n          StartDate: new Date(ele.StartDate),\r\n          RentalType: 5,\r\n          EndDate: new Date(ele.EndDate),\r\n          Sunday: this.rentalForm.value['marketWeekSunday'] ?? false,\r\n          Monday: this.rentalForm.value['marketWeekMonday'] ?? false,\r\n          Tuesday: this.rentalForm.value['marketWeekTuesday'] ?? false,\r\n          Wednesday: this.rentalForm.value['marketWeekWednesday'] ?? false,\r\n          Thursday: this.rentalForm.value['marketWeekThursday'] ?? false,\r\n          Friday: this.rentalForm.value['marketWeekFriday'] ?? false,\r\n          Saturday: this.rentalForm.value['marketWeekSaturday'] ?? false\r\n        }\r\n        this.subscriptions.push(\r\n          this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          })\r\n        );\r\n      });\r\n    }\r\n    this.selectedBoothsForRental = [];\r\n    this.rentalForm.reset();\r\n    this.rentalForm.patchValue({\r\n      rentalStartDate: this.weeklyMarketDays[0].RentalStartDays,\r\n      rentalEndDate: this.weeklyMarketDays[0].RentalEndDays,\r\n      marketParts: this.defaultPart\r\n    })\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.vendorDiscountPlans =[];\r\n  forkJoin({\r\n    vendorBalanceRes: this.rentalService.getVendorBalances(this.vendorId, this.marketId),\r\n    discountPlansRes:    this.vendorService.GetDiscountPlan(this.vendorId,this.marketId)\r\n  }).subscribe(\r\n    ({ vendorBalanceRes, discountPlansRes }: any) => {\r\n      if (vendorBalanceRes) {\r\n        this.priorBalance = vendorBalanceRes.PriorBalance;\r\n      }\r\n      if(discountPlansRes){\r\n        if (discountPlansRes) {\r\n          for (const el of discountPlansRes) {\r\n            if (el.Weekly && el.OnlineTransactions) {\r\n              const ob = {\r\n                PlanSeqId: el.PlanSeqId,\r\n                PlanId: el.PlanId,\r\n                PlanName: el.PlanName,\r\n                EffectiveFrom: this.datePipe.transform(el.EffectiveFrom, 'MM/dd/yyyy'),\r\n                ExpiryDate: this.datePipe.transform(el.ExpiryDate, 'MM/dd/yyyy'),\r\n                DiscountType: el.DiscountType == 0 ? DiscountType.Percentage : DiscountType.FixedAmount,\r\n                DiscountValue: el.DiscountValue,\r\n                OtherItems: el.OtherItems,\r\n                Daily: el.Daily,\r\n                Weekly: el.Weekly,\r\n                Monthly: el.Monthly,\r\n                CombinedWeekly: el.CombinedWeekly,\r\n                CombinedMonthly: el.CombinedMonthly,\r\n                IsExceedAmount: el.IsExceedAmount,\r\n                ExceedAmount: el.ExceedAmount,\r\n                BalanceDue: el.BalanceDue,\r\n                Notes: el.Notes,\r\n                QDR: el.QDR,\r\n                CheckAll: el.Selected,\r\n                AutoSelected: el.Selected,\r\n                DisableDiscount: el.Selected,\r\n                AppliedDiscount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SecondLevelTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxApplied: el.SalesTax,\r\n                SecondLevelTaxApplied: el.SecondLevelTax,\r\n              }\r\n              this.vendorDiscountPlans.push(ob);\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        //  this.disableDiscountAmount = this.vendorDiscountPlans.length > 0 ? false : true;\r\n        }\r\n        this.getDiscounts();\r\n      }\r\n    })\r\n  }\r\n\r\n  getDiscounts() {\r\n    var totalRentalCharge = this.totalRentalCharge;\r\n    var totalSalesTax = this.totalSalesTax;\r\n    var totalSecondLeveltax = this.totalSecondLeveltax;\r\n    var totalOtherRentalCharge = this.totalOtherRentalCharge;\r\n    var priorBalance = 0;\r\n    var totalChargeWithDue = this.priorBalance + (totalRentalCharge)\r\n      + (totalSalesTax)\r\n      + (totalSecondLeveltax)\r\n      + (totalOtherRentalCharge)\r\n\r\n    var totalCharge = (totalRentalCharge) + (totalSalesTax) + (totalSecondLeveltax) + (totalOtherRentalCharge)\r\n    //   totalCharge = totalCharge.toString().includes('(') && totalCharge.toString().includes(')') ? -1 * parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.vendorDiscountPlans.length > 0 && totalCharge > 0) {\r\n      var discountTotalAmount = 0;\r\n      var totalAmountForDiscount = 0;\r\n      for (const disc of this.vendorDiscountPlans) {\r\n        disc.CheckAll = disc.AutoSelected;\r\n        if (disc.CheckAll && disc.Weekly) {\r\n          var currentDiscountValue = 0;\r\n          if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n            if (!disc.IsExceedAmount || (disc.IsExceedAmount && totalCharge > disc.ExceedAmount)) {\r\n              const discountValue = disc.DiscountValue;\r\n              totalAmountForDiscount = totalRentalCharge\r\n              if (disc.OtherItems) {\r\n                totalAmountForDiscount += totalOtherRentalCharge\r\n              }\r\n              if (disc.DiscountType == 'Percentage') {\r\n                discountTotalAmount += totalAmountForDiscount * (discountValue / 100);\r\n                currentDiscountValue = totalAmountForDiscount * (discountValue / 100);\r\n              }\r\n              else {\r\n                discountTotalAmount += discountValue;\r\n                currentDiscountValue = discountValue;\r\n              }\r\n            }\r\n            else {\r\n              disc.CheckAll = false;\r\n            }\r\n          }\r\n          else {\r\n            disc.CheckAll = false;\r\n          }\r\n          disc.AppliedDiscount = this.customCurrency.transform(currentDiscountValue.toString());\r\n        }\r\n        else {\r\n          disc.AppliedDiscount = this.customCurrency.transform(\"0\");\r\n        }\r\n\r\n        this.totalDiscountCharge = parseFloat(discountTotalAmount.toFixed(2)).toString()\r\n      }\r\n    }\r\n  }\r\n\r\n  created(args) {\r\n    if(this.newVendor){\r\n      this.gridWeeklyRental.getColumnByField(\"Product\").visible = false;\r\n    }\r\n  }\r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);    \r\n        this.gridWeeklyRental.getColumnByField(\"Sunday\").visible = this.sunday;\r\n        this.gridWeeklyRental.getColumnByField(\"Monday\").visible = this.monday;\r\n        this.gridWeeklyRental.getColumnByField(\"Tuesday\").visible = this.tuesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Wednesday\").visible = this.wednesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Thursday\").visible = this.thursay;\r\n        this.gridWeeklyRental.getColumnByField(\"Friday\").visible = this.friday;\r\n        this.gridWeeklyRental.getColumnByField(\"Saturday\").visible = this.saturday;       \r\n        this.getWeeklyMarkets();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWeeklyMarkets() {\r\n    this.marketInfoService.getWeeklyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.weeklyMarketDays = response;\r\n        this.rentalForm.patchValue({\r\n          rentalStartDate: response[0].RentalStartDays,\r\n          rentalEndDate: response[0].RentalEndDays,\r\n        });\r\n        this.rentalForm.controls['otherItemsScreen'].patchValue({\r\n          otherChargeMarketWeek: response[0].RentalStartDays\r\n        });\r\n        this.selectedWeeklyMarketDays();\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  checkSelectedDates() {\r\n    const rentalStartDate = new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.rentalForm.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.rentalForm.get('rentalEndDate').setValue(this.rentalForm.value['rentalStartDate']);\r\n    }\r\n    this.selectedWeeklyMarketDays();    \r\n  }\r\n\r\n  selectedWeeklyMarketDays(){\r\n    this.selectedMarketDays = [];\r\n    this.rentalForm.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.rentalForm.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.rentalForm.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.rentalForm.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.rentalForm.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.rentalForm.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.rentalForm.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n\r\n    const rentalStartDate = new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.rentalForm.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.rentalForm.get('rentalEndDate').setValue(this.rentalForm.value['rentalStartDate']);\r\n    }\r\n    const today: Date = new Date(new Date().toDateString())\r\n    this.weeklyRentalStartDates = [];\r\n    this.selectedMarketDays.map((el, i) => {\r\n      const startDate = new Date(this.rentalForm.value['rentalStartDate'].split(\"-\")[0]);\r\n      const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (currentDay <= endDate) {\r\n        if (currentDay >= today) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n            this.weeklyRentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.weeklyRentalStartDates.sort(compareDates);\r\n\r\n      if (this.weeklyRentalStartDates.length)\r\n        this.rentalForm.get('weeklyRentalStartDates').setValue(this.weeklyRentalStartDates[0].startDate);     \r\n    });   \r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  setDefaultRentalItem(args, selectedItems) {\r\n    selectedItems.Quantity = 0\r\n    selectedItems.OtherItemtotal = 0\r\n    if (args.srcElement.checked) {\r\n      selectedItems.Quantity = 1\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString());\r\n      this.selectedOtherCharges.push({\r\n        Id: selectedItems.Id,\r\n        OtherItem: selectedItems.OtherItem,\r\n        OtherItemCharge: selectedItems.OtherItemCharge,\r\n        Quantity: selectedItems.Quantity,\r\n        OtherItemtotal: selectedItems.OtherItemtotal,\r\n        othChgBooths: selectedItems.othChgBooths,\r\n        Recurring: selectedItems.Recurring,\r\n        RentalWeek:this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']\r\n      });\r\n    } else {\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id);\r\n      if (index !== -1) {\r\n        this.selectedOtherCharges.splice(index, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  async getBoothsAndItemsForOtherCharges() {\r\n    this.boothsForOtherCharge = [];\r\n    this.selectedOtherCharges = [];\r\n    if (this.OtherChargesPeriod) {\r\n      this.otherRentalCharges = [];\r\n      this.otherItemList = [];\r\n      await this.getOtherRentalItems();\r\n    }\r\n    const uniqueBoothNumbers = new Map<number, boolean>();\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) {\r\n      this.selectedWeeklyBooths.forEach((item) => {\r\n        if (item.RentStartPeriod == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) {\r\n          const boothNumber = item.BoothNumber;\r\n          if (!uniqueBoothNumbers.has(boothNumber)) {\r\n            this.boothsForOtherCharge.push({ BoothNumber: item.BoothNumber })\r\n            uniqueBoothNumbers.set(boothNumber, true);\r\n          }\r\n        }\r\n      });\r\n    }\r\n    this.boothsForOtherCharge.sort((a, b) => {\r\n      if (a.BoothNumber < b.BoothNumber) {\r\n        return -1;\r\n      }\r\n      if (a.BoothNumber > b.BoothNumber) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  addOtherCharges() {\r\n    if (this.selectedOtherCharges) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedOtherCharges.map((el, i) => {\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: el.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: el.Quantity,\r\n          OtherItemCharge: el.OtherItemCharge.includes('(') && el.OtherItemCharge.includes(')') ? (-1) * parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n        const index = this.selectedOtherItems.findIndex(item => item.Id === el.Id && item.RentalWeek == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'] && item.BoothNo == el.othChgBooths);\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          var newItem = [];\r\n          if (index !== -1) {\r\n            var otherItemTotal = this.selectedOtherItems[index].OtherItemtotal;\r\n            var salesTax = this.selectedOtherItems[index].SalesTax;\r\n            var cityTax = this.selectedOtherItems[index].CityTax;\r\n            this.totalOtherRentalCharge -= otherItemTotal.toString().includes('(') && otherItemTotal.toString().includes(')') ? -1 * parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= salesTax.toString().includes('(') && salesTax.toString().includes(')') ? -1 * parseFloat(salesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(salesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= cityTax.toString().includes('(') && cityTax.toString().includes(')') ? -1 * parseFloat(cityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(cityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n           \r\n            const ob = {\r\n              Id: el.Id,\r\n              WeekOtherRentalId: 0,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              OtherItem: el.OtherItem,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalWeek: el.RentalWeek,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              WeeklyOtherRentalIds:''\r\n            }\r\n            this.selectedOtherItems[index] = ob;\r\n            this.gridOtherRental.refresh();\r\n          }\r\n          else {\r\n            const ob = {\r\n              Id: el.Id,\r\n              WeekOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalWeek: el.RentalWeek,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              WeeklyOtherRentalIds: ''\r\n            }\r\n            newItem.push(JSON.parse(JSON.stringify(ob)));\r\n            this.isdirty = true;\r\n            this.isFormDirty.emit(true);\r\n          }\r\n          this.totalOtherRentalCharge += el.OtherItemtotal.toString().includes('(') && el.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.getDiscounts();\r\n          if (newItem.length > 0) {\r\n            this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n          }\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  isDateSelected(item: any): boolean {\r\n    var  isItemSelected = this.selectedOtherItems.some(\r\n      (element) =>\r\n        (element.RentalWeek === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) &&\r\n        element.Id === item.Id && element.NewItem == true\r\n    );\r\n\r\n    if(!isItemSelected){\r\n      isItemSelected = this.selectedOtherCharges.some(\r\n        (element) =>\r\n          (element.RentalWeek === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'])  &&\r\n          element.Id === item.Id\r\n      );\r\n    }\r\n\r\n    !isItemSelected? item.otherItemChecked = false : item.otherItemChecked = true;\r\n    item.othChgBooths = \"none\";\r\n    return isItemSelected;\r\n  }\r\n\r\n  checkMarketDaysSelected() {\r\n    const sunday = this.rentalForm.value['marketWeekSunday'];\r\n    const monday = this.rentalForm.value['marketWeekMonday'];\r\n    const tuesday = this.rentalForm.value['marketWeekTuesday'];\r\n    const wednesday = this.rentalForm.value['marketWeekWednesday'];\r\n    const thursday = this.rentalForm.value['marketWeekThursday'];\r\n    const friday = this.rentalForm.value['marketWeekFriday'];\r\n    const saturday = this.rentalForm.value['marketWeekSaturday'];\r\n    return sunday || monday || tuesday || wednesday || thursday || friday || saturday;\r\n  }\r\n\r\n  openLayout() {\r\n    this.layoutParts = this.rentalForm.value['marketParts'];\r\n    var marketDaysSelected = this.checkMarketDaysSelected();\r\n    if (!marketDaysSelected) {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please select a market day!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else {\r\n      if (this.selectedMarketDays.length > 0) {    \r\n        this.selectedDates=[];  \r\n        this.selectedMarketDays.map((el, i) => {\r\n          const startDate = new Date(this.rentalForm.value['rentalStartDate'].split(\"-\")[0]);\r\n          const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n          const selectedDayOfWeek = el-1;         \r\n          let currentDay = new Date(startDate);      \r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              this.selectedDates.push(this.datePipe.transform(new Date(currentDay),'MM/dd/yyyy'));\r\n            }      \r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n        });\r\n      }\r\n       this.weeklyLayoutData = {\r\n        Sunday: this.rentalForm.value['marketWeekSunday'],\r\n        Monday: this.rentalForm.value['marketWeekMonday'],\r\n        Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n        Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n        Thursday: this.rentalForm.value['marketWeekThursday'],\r\n        Friday: this.rentalForm.value['marketWeekFriday'],\r\n        Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        weeklyRentalStartDate: this.rentalForm.value['rentalStartDate'],\r\n        weeklyRentalEndDate: this.rentalForm.value['rentalEndDate'],\r\n        weeklyRentalMarketDays :  this.selectedMarketDays,\r\n        selectedDates :this.selectedDates,\r\n        weeklyRentalFirstDay:new Date(this.rentalForm.value['rentalStartDate'].split(\"-\")[0]),\r\n        weeklyRentalSelectedBooths:this.selectedWeeklyBooths.filter(e => e.NewBooth == true),\r\n        tempRecordNo: this.tempRecordNo\r\n      }\r\n      this.displayLayout = true;\r\n    }\r\n  }\r\n\r\n  selectedBoothsFromLayout(data) {\r\n    window.scrollTo(0, 0);\r\n    this.selectedWeeklyBoothData = data;\r\n    this.displayLayout = false;\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);\r\n        this.gridWeeklyRental.getColumnByField(\"Sunday\").visible = this.sunday;\r\n        this.gridWeeklyRental.getColumnByField(\"Monday\").visible = this.monday;\r\n        this.gridWeeklyRental.getColumnByField(\"Tuesday\").visible = this.tuesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Wednesday\").visible = this.wednesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Thursday\").visible = this.thursay;\r\n        this.gridWeeklyRental.getColumnByField(\"Friday\").visible = this.friday;\r\n        this.gridWeeklyRental.getColumnByField(\"Saturday\").visible = this.saturday;\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n    this.validateAndAddSelectedBoothsToGrid();\r\n  }\r\n\r\n  validateAndAddSelectedBoothsToGrid() {\r\n    let noResale = true;\r\n    var rentalDates = [];\r\n    var marketDay;\r\n    var vendorRentalDays = [];\r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n      var rentalstartDate = \"\";\r\n      var selectedBoothRecord = this.selectedWeeklyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n      if (selectedBoothRecord.length > 0) {\r\n        selectedBoothRecord.forEach(record => {\r\n          var selectedDaysOfWeek;\r\n          record.Sunday == true ? selectedDaysOfWeek = 0 :\r\n            record.Monday == true ? selectedDaysOfWeek = 1 :\r\n              record.Tuesday == true ? selectedDaysOfWeek = 2 :\r\n                record.Wednesday == true ? selectedDaysOfWeek = 3 :\r\n                  record.Thursday == true ? selectedDaysOfWeek = 4 :\r\n                    record.Friday == true ? selectedDaysOfWeek = 5 :\r\n                      record.Saturday == true ? selectedDaysOfWeek = 6 : 0;\r\n          const startDate = new Date(record.RentStartPeriod.split('-')[0]);\r\n          const endDate = new Date(record.RentEndPeriod.split('-')[1]);\r\n          while (new Date(startDate) <= new Date(endDate)) {\r\n            if (startDate.getDay() === selectedDaysOfWeek) {\r\n              rentalDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n            }\r\n            startDate.setDate(startDate.getDate() + 1);\r\n          }        \r\n\r\n        rentalDates.map(date => {\r\n          const targetDateString = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n          const dateExist = vendorRentalDays.find(el => {\r\n            const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n            return rentalDateString === targetDateString;\r\n          });\r\n          if (!dateExist) {\r\n            const formattedDate = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n            vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n            this.marketDayCountForResale += 1;\r\n            if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n              return; // exits the forEach loop when the condition is met\r\n            }\r\n          }\r\n        });\r\n      });\r\n      }\r\n            \r\n      rentalDates=[];\r\n      for(const el of this.selectedMarketDays){\r\n        switch (el) {\r\n          case 1: marketDay = 'Sun'\r\n            break;\r\n          case 2: marketDay = 'Mon'\r\n            break;\r\n          case 3: marketDay = 'Tue'\r\n            break;\r\n          case 4: marketDay = 'Wed'\r\n            break;\r\n          case 5: marketDay = 'Thu'\r\n            break;\r\n          case 6: marketDay = 'Fri'\r\n            break;\r\n          case 7: marketDay = 'Sat'\r\n            break;\r\n        }  \r\n        const startDate = new Date(this.rentalForm.value['weeklyRentalStartDates']);\r\n        const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n        const selectedDayOfWeek = el - 1;\r\n        let currentDay = new Date(startDate);\r\n        const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n        while (currentDay <= endDate) {\r\n          var exludedDate = excludedDates.some(date => {\r\n            return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n          });\r\n          if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n            if (!rentalstartDate) {\r\n              rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n            }\r\n            rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n          currentDay.setDate(currentDay.getDate() + 1);\r\n        }\r\n      }\r\n      const apiCalls = rentalDates.map(date => {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          VendorRentalDate: new Date(date.startDate)\r\n        };\r\n\r\n        return this.rentalService.getVendorRentalDays(obj).pipe(\r\n          catchError(error => {\r\n            console.error('API call failed for date:', date.startDate, error);\r\n            return of([]); // Return an empty array in case of error\r\n          })\r\n        );\r\n      });\r\n\r\n      forkJoin(apiCalls).subscribe((responses: any[][]) => {\r\n        responses.forEach((res, index) => {\r\n          if (this.marketDayCountForResale <= this.DaysSellWithoutResaleNumber) {\r\n          const date = rentalDates[index].startDate;\r\n          if (res && res.length > 0) {\r\n            res.forEach(el => {\r\n              const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              const dateExist = vendorRentalDays.find(data => {\r\n                const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                return rentalDateString === targetDateString;\r\n              });\r\n              if (!dateExist) {\r\n                const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                this.marketDayCountForResale += 1;\r\n              }\r\n            });\r\n          }\r\n\r\n          const targetDateString = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n          const dateExist = vendorRentalDays.find(el => {\r\n            const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n            return rentalDateString === targetDateString;\r\n          });\r\n          if (!dateExist) {\r\n            const formattedDate = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n            vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n            this.marketDayCountForResale += 1;\r\n          }\r\n        }\r\n        });\r\n\r\n        if (!this.newVendor) {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            const modal = this.modalResaleNo.nativeElement;\r\n            modal.classList.add('show');\r\n            if (modal.classList.contains('show')) {\r\n              modal.style.display = 'block';\r\n              this.ResaleOrBusinessHeader = \"Resale Number\"\r\n              this.resaleNoDisplay = true;\r\n              this.businessLicenseDisplay = false;\r\n            }\r\n            noResale = false;\r\n          }\r\n          else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            if (!this.businessLicenseNumber || !this.businessLicenseExpiryDate) {\r\n              const modal = this.modalResaleNo.nativeElement;\r\n              modal.classList.add('show');\r\n              if (modal.classList.contains('show')) {\r\n                modal.style.display = 'block';\r\n                this.ResaleOrBusinessHeader = \"Business License Number\";\r\n                this.resaleNoDisplay = false;\r\n                this.businessLicenseDisplay = true;\r\n              }\r\n              noResale = false;\r\n            }\r\n            else {\r\n              if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n                Swal.fire({\r\n                  title: $localize`Warning`,\r\n                  text: $localize`Business License is expired! Please contact the market`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              }\r\n              else {\r\n                this.addSelectedBoothsToGrid();\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            noResale = true;\r\n            this.addSelectedBoothsToGrid();\r\n          }\r\n        }\r\n        else {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            this.resaleNoInputRequired.emit(true)\r\n          }\r\n          if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            this.businessLicenseRequired.emit(true);\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }\r\n      });\r\n    } else {\r\n      this.addSelectedBoothsToGrid();\r\n    }\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  AddBoothsOnGridOnValidationSucess() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (this.resaleNoDisplay) {\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n      }\r\n\r\n      if (closeModalPopup) {\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n        }));\r\n      }\r\n    }\r\n    else{\r\n      addToGrid = true;\r\n    }\r\n\r\n    if (addToGrid) {\r\n      if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        var addToGrid = false;\r\n        var closeModalPopup = false;\r\n        if ((!this.businessLicenseNumber || this.businessLicenseNumber.trim() === '') || !this.businessLicenseExpiryDate) {\r\n          this.ResaleOrBusinessHeader = \"Business License Number\"\r\n          const modal = this.modalResaleNo.nativeElement;\r\n          this.resaleNoDisplay = false;   \r\n          this.businessLicenseDisplay = true;\r\n          modal.classList.add('show');\r\n          if (modal.classList.contains('show')) {\r\n            modal.style.display = 'block';\r\n            this.ResaleOrBusinessHeader = \"Business License Number\"                  \r\n          }\r\n        }\r\n        else if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n          this.closeResaleModal();\r\n          Swal.fire({\r\n            text: $localize`Business License is expired! Please contact the market.`,\r\n            icon: \"warning\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n        else {\r\n          addToGrid = true;\r\n          this.closeResaleModal();\r\n          if (this.businessLicenseDisplay) {\r\n            const obj = {\r\n              VendorID: this.vendorId,\r\n              LicenseNameId: 1,\r\n              LicenseName: \"\",\r\n              ExpiryDate: new Date(this.businessLicenseExpiryDate),\r\n              LicenseNumber: this.businessLicenseNumber\r\n            }\r\n  \r\n            this.subscriptions.push(this.rentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n            }));\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }       \r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n    }\r\n  }\r\n\r\n  closeResaleModal(){\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  closeLayoutForm() {\r\n    this.displayLayout = false;\r\n    this.getMarketDays();\r\n  }\r\n\r\n  searchOtherItem() {\r\n    this.otherRentalCharges = this.otherItemList;\r\n    const otherItemSearchText = this.rentalForm.controls['otherItemsScreen'].value['otherItemSearchText'];\r\n    if (otherItemSearchText != '') {\r\n      this.otherRentalCharges = this.otherItemList.filter((ele) => ele.OtherItem.toString().toLowerCase().indexOf(otherItemSearchText.toLowerCase()) !== -1);\r\n    }\r\n  }\r\n\r\n  addSelectedBoothsToGrid() {\r\n    this.selectedBoothsForRental = [];\r\n    if (this.selectedWeeklyBoothData) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedWeeklyBoothData.map((el, i) => {\r\n        var obj = {\r\n          BoothTypeId: el.BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]),\r\n          RentalEndPeriod: new Date(this.rentalForm.value['rentalEndDate'].split('-')[1]),\r\n          RentalMarketDay: el.MarketDay,\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n\r\n        this.rentalService.getBoothRentalWeeklyCharges(this.marketId,obj).subscribe((res: any) => {\r\n          var newbooths = [];\r\n          var vendorProducts = !this.newVendor ? this.vendorProducts.filter(x => x.Priority) ? this.vendorProducts.filter(x => x.Priority)[0].ProductId : this.vendorProducts[0].ProductId:\"\";\r\n          const ob = {\r\n            WeeklyRentalId: 0,\r\n            BoothNumber: el.BoothNumber,\r\n            BoothType: el.BoothType,\r\n            BoothDescription: el.BoothDescription,\r\n            BoothTypeId: el.BoothTypeId,\r\n            Product: vendorProducts,\r\n            RentStartPeriod: this.rentalForm.value['rentalStartDate'],\r\n            RentEndPeriod: this.rentalForm.value['rentalEndDate'],\r\n            Rent: this.customCurrency.transform(res.Rent),\r\n            SalesTax: this.customCurrency.transform(res.SalesTax),\r\n            CityTax: this.customCurrency.transform(res.CityTax),\r\n            Sunday: el.Sunday,\r\n            Monday: el.Monday,\r\n            Tuesday: el.Tuesday,\r\n            Wednesday: el.Wednesday,\r\n            Thursday: el.Thursday,\r\n            Friday: el.Friday,\r\n            Saturday: el.Saturday,\r\n            Reservation: true,\r\n            Drop: false,\r\n            January: this.customCurrency.transform(res.JanRent),\r\n            February: this.customCurrency.transform(res.FebRent),\r\n            March: this.customCurrency.transform(res.MarRent),\r\n            April: this.customCurrency.transform(res.AprRent),\r\n            May: this.customCurrency.transform(res.MayRent),\r\n            June: this.customCurrency.transform(res.JunRent),\r\n            July: this.customCurrency.transform(res.JulRent),\r\n            August: this.customCurrency.transform(res.AugRent),\r\n            September: this.customCurrency.transform(res.SepRent),\r\n            October: this.customCurrency.transform(res.OctRent),\r\n            November: this.customCurrency.transform(res.NovRent),\r\n            December: this.customCurrency.transform(res.DecRent),\r\n            JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n            MarchMonthPresent: res.MarchMonthPresent,\r\n            AprilMonthPresent: res.AprilMonthPresent,\r\n            MayMonthPresent: res.MayMonthPresent,\r\n            JuneMonthPresent: res.JuneMonthPresent,\r\n            JulyMonthPresent: res.JulyMonthPresent,\r\n            AugustMonthPresent: res.AugustMonthPresent,\r\n            SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n            OctoberMonthPresent: res.OctoberMonthPresent,\r\n            NovemberMonthPresent: res.NovemberMonthPresent,\r\n            DecemberMonthPresent: res.DecemberMonthPresent,\r\n            NewBooth: true,\r\n            ExtendRental: false,\r\n            RentalMarketDay: el.MarketDay,\r\n            TaxModel: res.TaxModel\r\n          }\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n          this.getDiscounts();\r\n          this.gridWeeklyRental.refresh();\r\n          this.selectedWeeklyBooths = this.selectedWeeklyBooths.concat(newbooths);\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n        this.isdirty = true;\r\n        this.isFormDirty.emit(true);\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n     // this.refreshAddBooth();\r\n    }\r\n  }\r\n\r\n  loadSelectedBooths() {\r\n    var newItem = [];\r\n    if (this.sharedDataService.paymentSharedData.ReturnData.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.ReturnData.forEach((item) => {\r\n        var newbooths = [];\r\n        var ob = {\r\n          BoothNumber: item.BoothNumber,\r\n          BoothType: item.BoothType,\r\n          BoothTypeId: item.BoothTypeId,\r\n          BoothDescription: item.BoothDescription,\r\n          Product: item.Product,\r\n          RentStartPeriod: item.RentStartPeriod,\r\n          RentEndPeriod: item.RentEndPeriod,\r\n          Rent: item.Rent,\r\n          SalesTax: item.SalesTax,\r\n          CityTax: item.CityTax,\r\n          PerDiem: false,\r\n          Sunday: item.Sunday,\r\n          Monday: item.Monday,\r\n          Tuesday: item.Tuesday,\r\n          Wednesday: item.Wednesday,\r\n          Thursday: item.Thursday,\r\n          Friday: item.Friday,\r\n          Saturday: item.Saturday,\r\n          Reservation: item.Reservation,\r\n          Drop: item.Drop,\r\n          January: item.January,\r\n          February: item.February,\r\n          March: item.March,\r\n          April: item.April,\r\n          May: item.May,\r\n          June: item.June,\r\n          July: item.July,\r\n          August: item.August,\r\n          September: item.September,\r\n          October: item.October,\r\n          November: item.November,\r\n          December: item.December,\r\n          JanuaryMonthPresent: item.JanuaryMonthPresent,\r\n          FebruaryMonthPresent: item.FebruaryMonthPresent,\r\n          MarchMonthPresent: item.MarchMonthPresent,\r\n          AprilMonthPresent: item.AprilMonthPresent,\r\n          MayMonthPresent: item.MayMonthPresent,\r\n          JuneMonthPresent: item.JuneMonthPresent,\r\n          JulyMonthPresent: item.JulyMonthPresent,\r\n          AugustMonthPresent: item.AugustMonthPresent,\r\n          SeptemberMonthPresent: item.SeptemberMonthPresent,\r\n          OctoberMonthPresent: item.OctoberMonthPresent,\r\n          NovemberMonthPresent: item.NovemberMonthPresent,\r\n          DecemberMonthPresent: item.DecemberMonthPresent,\r\n          NewBooth: true,\r\n          Status: \"N\",\r\n          TaxModel: item.TaxModel\r\n        }\r\n        newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n        this.selectedWeeklyBooths = this.selectedWeeklyBooths.concat(newbooths);\r\n      });\r\n    }\r\n    if (this.sharedDataService.paymentSharedData.WeeklyRentalOtherCharges.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.WeeklyRentalOtherCharges.forEach((el) => {\r\n        if (el.WeekOtherRentalId == 0) {\r\n          newItem = [];\r\n          var ob = {\r\n            Id: el.OtherItemId,\r\n            WeekOtherRentalId: el.WeekOtherRentalId,\r\n            OtherItem: el.OtherItemName,\r\n            OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n            Quantity: el.Quantity,\r\n            OtherItemtotal: this.customCurrency.transform(el.OtherItemCharge),\r\n            RentalWeek: el.RentalWeek + \"-\" + this.datePipe.transform(new Date(el.RentalWeek).setDate(new Date(el.RentalWeek).getDate() + 6), 'MMM d, y'),\r\n            SalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n            CityTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n            BoothNo: el.BoothNumber,\r\n            Reference: el.Reference,\r\n            NewItem: true\r\n          }\r\n          newItem.push(JSON.parse(JSON.stringify(ob)));\r\n        }\r\n\r\n        if (newItem.length > 0) {\r\n          this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n        }\r\n      });\r\n    }\r\n\r\n    this.totalRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.RentalCharge);\r\n    this.totalOtherRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.OtherCharge.toString());\r\n    this.totalSalesTax = parseFloat(this.sharedDataService.paymentSharedData.SalesTax.toString());\r\n    this.totalSecondLeveltax = parseFloat(this.sharedDataService.paymentSharedData.SecLevelTax.toString());\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    this.sharedDataService.paymentSharedData = \"\";\r\n    this.getDiscounts();\r\n  }\r\n\r\n  rentOnlineNextTab(){\r\n    this.saveRentalWithPayment();\r\n    this.bookingFormCompleted.emit(true);\r\n  }\r\n\r\n  saveRentalWithPayment() {\r\n    this.isdirty = false;\r\n    this.isFormDirty.emit(false);\r\n    var obj = {\r\n      VendorId: this.vendorId,\r\n      RentalType: 3,\r\n      PriorBalance: this.priorBalance,\r\n      RentalCharge: this.totalRentalCharge,\r\n      SalesTax: this.totalSalesTax,\r\n      SecLevelTax: this.totalSecondLeveltax,\r\n      OtherCharge: this.totalOtherRentalCharge,\r\n      RentalNotes: \"\",\r\n      PaymentDone: false,\r\n      ExemptResaleNo: this.resaleNoOption == \"2\" ? true : false,\r\n      ExemptResaleReason: this.exemptResaleReason,\r\n      ResaleNo: this.resaleNo,\r\n      PaymentDueDate: null,\r\n      AppliedDiscountModel: [],\r\n      ReturnData: [],\r\n      ReceiptSettings: \"\",\r\n      PaymentOnly: false,\r\n      WeeklyRentalBooth: [],\r\n      WeeklyRentalOtherCharges: [],\r\n      DiscountAmount: this.totalDiscountCharge ?? 0,\r\n      BookingFee: this.bookingFeeAmount ?? 0\r\n    }\r\n\r\n    var objSelectedBooth = [];\r\n    var objReturnData = [];\r\n    if (this.selectedWeeklyBooths.length > 0) {\r\n      this.selectedWeeklyBooths.forEach((item, i) => {\r\n        //if (item.NewBooth) {\r\n        objSelectedBooth.push({\r\n          WeeklyRentalId: item.WeeklyRentalId,\r\n          BoothNumber: item.BoothNumber,\r\n          BoothTypeId: item.BoothTypeId,\r\n          ProductId: item.Product,\r\n          BoothType: item.BoothType,\r\n          RentalStartDate: new Date(item.RentStartPeriod.split('-')[0]),\r\n          RentalEndDate: new Date(item.RentEndPeriod.split('-')[1]),\r\n          BoothReserved: item.Reservation,\r\n          DoNotRenew: item.Drop,\r\n          Monday: item.Monday,\r\n          Tuesday: item.Tuesday,\r\n          Wednesday: item.Wednesday,\r\n          Thursday: item.Thursday,\r\n          Friday: item.Friday,\r\n          Saturday: item.Saturday,\r\n          Sunday: item.Sunday,\r\n          RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n          FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n          MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n          AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n          MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n          JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n          JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n          AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n          SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n          OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n          NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n          DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n          BookingLog: i + 1,\r\n          TaxModel: item.TaxModel\r\n        })\r\n\r\n        if (item.NewBooth) {\r\n          objReturnData.push({\r\n            WeeklyRentalId: 0,\r\n            BoothNumber: item.BoothNumber,\r\n            BoothType: item.BoothType,\r\n            BoothTypeId: item.BoothTypeId,\r\n            BoothDescription: item.BoothDescription,\r\n            Product: item.Product,\r\n            RentStartPeriod: item.RentStartPeriod,\r\n            RentEndPeriod: item.RentEndPeriod,\r\n            Rent: item.Rent,\r\n            SalesTax: item.SalesTax,\r\n            CityTax: item.CityTax,\r\n            PerDiem: false,\r\n            Sunday: item.Sunday,\r\n            Monday: item.Monday,\r\n            Tuesday: item.Tuesday,\r\n            Wednesday: item.Wednesday,\r\n            Thursday: item.Thursday,\r\n            Friday: item.Friday,\r\n            Saturday: item.Saturday,\r\n            Reservation: item.Reservation,\r\n            Drop: item.Drop,\r\n            January: item.January,\r\n            February: item.February,\r\n            March: item.March,\r\n            April: item.April,\r\n            May: item.May,\r\n            June: item.June,\r\n            July: item.July,\r\n            August: item.August,\r\n            September: item.September,\r\n            October: item.October,\r\n            November: item.November,\r\n            December: item.December,\r\n            JanuaryMonthPresent: item.January ? true : false,\r\n            FebruaryMonthPresent: item.February ? true : false,\r\n            MarchMonthPresent: item.March ? true : false,\r\n            AprilMonthPresent: item.April ? true : false,\r\n            MayMonthPresent: item.May ? true : false,\r\n            JuneMonthPresent: item.June ? true : false,\r\n            JulyMonthPresent: item.July ? true : false,\r\n            AugustMonthPresent: item.August ? true : false,\r\n            SeptemberMonthPresent: item.September ? true : false,\r\n            OctoberMonthPresent: item.October ? true : false,\r\n            NovemberMonthPresent: item.November ? true : false,\r\n            DecemberMonthPresent: item.December ? true : false,\r\n            NewBooth: true,\r\n            Status: \"N\",\r\n            TaxModel: item.TaxModel\r\n          });\r\n        }\r\n        // }\r\n      });\r\n    }\r\n\r\n    if (objSelectedBooth.length > 0)\r\n      obj.WeeklyRentalBooth = objSelectedBooth;\r\n\r\n    if (objReturnData.length > 0) {\r\n      obj.ReturnData = objReturnData;\r\n    }\r\n\r\n    var objSelectedOtherCharge = [];\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.selectedOtherItems.forEach((item) => {\r\n        objSelectedOtherCharge.push({\r\n          OtherItemId: item.Id,\r\n          WeekOtherRentalId: item.WeekOtherRentalId,\r\n          OtherItemName: item.OtherItem,\r\n          OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n          Quantity: item.Quantity,\r\n          RentalWeek: item.RentalWeek.split('-')[0],\r\n          BoothNumber: item.BoothNo,\r\n          Recurring: item.Recurring,\r\n          OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          Reference: item.Reference,\r\n          WeeklyOtherRentalIds: item.WeeklyOtherRentalIds\r\n        })\r\n      });\r\n    }\r\n    if (objSelectedOtherCharge.length > 0)\r\n      obj.WeeklyRentalOtherCharges = objSelectedOtherCharge;\r\n\r\n    var objDiscountData = [];\r\n    if (this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0) {\r\n      this.vendorDiscountPlans.forEach((item) => {\r\n        if (item.CheckAll) {\r\n          objDiscountData.push({\r\n            PlanId: item.PlanSeqId,\r\n            DiscountAmount: item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n            OtherCharges: item.OtherItems,\r\n            SalesTax: item.SalesTaxApplied,\r\n            SecondLevelTax: item.SecondLevelTaxApplied,\r\n            DiscountType: item.DiscountType == DiscountType.Percentage ? \"0\" : \"1\",\r\n            DiscountValue: item.DiscountValue,\r\n            SalesTaxAmount: item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n            SecondLevelTaxAmount: item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n          })\r\n        }\r\n      });\r\n    }\r\n    if (objDiscountData.length > 0)\r\n      obj.AppliedDiscountModel = objDiscountData;\r\n\r\n    if (!this.newVendor) {\r\n      this.sharedDataService.paymentSharedData = obj;\r\n      var url = 'vendor-payments/' + this.marketId;\r\n      this.router.navigate([url]);\r\n    }\r\n    else {\r\n      this.rentalBookingData.emit(obj);\r\n    }\r\n\r\n    var temp = {\r\n      TempRecordNo: this.tempRecordNo.toString(),\r\n      BoothNumber: \"\"\r\n    }\r\n    this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n    }));\r\n  }\r\n\r\n  disableSavePayment() {\r\n    var vendorBalance = this.priorBalance + this.totalCharge;\r\n    if (vendorBalance > 0) {\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n\r\n  deleteOtherRentalCharges(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Other Charges?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalWeek == data.RentalWeek);\r\n        if (index !== -1) {\r\n          this.selectedOtherItems.splice(index, 1);\r\n        }\r\n        var selectedItems = this.otherRentalCharges.findIndex(item => item.Id == data.Id);\r\n        if (selectedItems != -1) {\r\n          this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n            if (response) {\r\n              const masterChargeRecord = response.filter(item => item.OtherItemId == data.Id);\r\n              if (masterChargeRecord) {\r\n                this.otherRentalCharges[selectedItems].Quantity = 0;\r\n                this.otherRentalCharges[selectedItems].othChgBooths = \"none\";\r\n                this.otherRentalCharges[selectedItems].OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemWeeklyCharge);\r\n                this.otherRentalCharges[selectedItems].OtherItemtotal = this.customCurrency.transform('0');\r\n                this.otherRentalCharges[selectedItems].Reference = \"\"\r\n                this.otherRentalCharges[selectedItems].Recurring = masterChargeRecord[0].Recurring\r\n              }\r\n            }\r\n          }, (err) => {\r\n          });\r\n        }\r\n\r\n        this.totalOtherRentalCharge -= data.OtherItemtotal.includes('(') && data.OtherItemtotal.includes(')') ? -1 * parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSelectedBooth(data) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Are you sure you want to delete the selected Booth?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          const index = this.selectedWeeklyBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentStartPeriod == data.RentStartPeriod && selectedBooth.RentEndPeriod == data.RentEndPeriod\r\n            && selectedBooth.Sunday == data.Sunday && selectedBooth.Monday == data.Monday && selectedBooth.Tuesday == data.Tuesday && selectedBooth.Wednesday == data.Wednesday\r\n            && selectedBooth.Thursday == data.Thursday && selectedBooth.Friday == data.Friday && selectedBooth.Saturday == data.Saturday\r\n          );\r\n          if (index !== -1) {\r\n            this.selectedWeeklyBooths.splice(index, 1);\r\n            var selectedRentalDates = [];\r\n              var marketDay;            \r\n            \r\n              const startDate = new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]);\r\n              const endDate = new Date(this.rentalForm.value['rentalEndDate'].split('-')[1]);\r\n              var selectedDayOfWeek =0;\r\n              selectedDayOfWeek = data.Sunday ? 0\r\n                                 : data.Monday ? 1 \r\n                                 : data.Tuesday ? 2\r\n                                 : data.Wednesday ? 3\r\n                                 : data.Thursday ? 4\r\n                                 : data.Friday ? 5\r\n                                 : data.Saturday ? 6\r\n                                 :0\r\n              while (new Date(startDate) <= new Date(endDate)) {\r\n                if (startDate.getDay() === selectedDayOfWeek) {\r\n                  selectedRentalDates.push(this.datePipe.transform(new Date(startDate), 'MMM d, y'));\r\n                }\r\n                startDate.setDate(startDate.getDate() + 1);\r\n              }\r\n\r\n            if (this.tempRecordNo) {\r\n              const temp = {\r\n                TempRecordNo: this.tempRecordNo.toString(),\r\n                BoothNumber: data.BoothNumber,\r\n                StartDate: new Date(selectedRentalDates[0]),\r\n                RentalType: 3,\r\n                EndDate: new Date(selectedRentalDates[selectedRentalDates.length -1]),\r\n                Sunday: data.Sunday,\r\n                Monday: data.Monday,\r\n                Tuesday: data.Tuesday,\r\n                Wednesday: data.Wednesday,\r\n                Thursday: data.Thursday,\r\n                Friday: data.Friday,\r\n                Saturday: data.Saturday\r\n              }\r\n              this.subscriptions.push(\r\n                this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }  \r\n          }\r\n          this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.gridWeeklyRental.refresh();\r\n          this.getDiscounts();\r\n        }\r\n      });\r\n  } \r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"rentalForm\">\r\n    <div *ngIf=\"!displayLayout\">\r\n        <div class=\"row\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4\"></div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 mblRightToLeft mt-1\">\r\n                        <label class=\"mt-2 mb-0\">Select Layout Part</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mblRightToLeft mt-2\">\r\n                        <select class=\"form-control respLayoutPart\" formControlName=\"marketParts\">\r\n                            <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">{{item.PartDescription}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-3 col-xl-3 mblRightToLeft mt-2\">\r\n                        <button class=\"btn btn-primary py-2\" (click)=\"openLayout()\">Select Booth</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        * Select Market Day(s) Here\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush\">\r\n                        <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkMonday\" formControlName=\"marketWeekMonday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkMonday\" i18n>\r\n                                    Monday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkTuesday\" formControlName=\"marketWeekTuesday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkTuesday\" i18n>\r\n                                    Tuesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkWednesday\" formControlName=\"marketWeekWednesday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkWednesday\" i18n>\r\n                                    Wednesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkThursday\" formControlName=\"marketWeekThursday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkThursday\" i18n>\r\n                                    Thursday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkFriday\" formControlName=\"marketWeekFriday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkFriday\" i18n>\r\n                                    Friday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSaturday\" formControlName=\"marketWeekSaturday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSaturday\" i18n>\r\n                                    Saturday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSunday\" formControlName=\"marketWeekSunday\"\r\n                                (change)=\"selectedMonthlyMarketDays()\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSunday\" i18n>\r\n                                    Sunday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        Monthly Market(s):\r\n                    </div>\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Month</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"rentalStartMonth\"\r\n                                (change)=\"checkRentalMonths()\">\r\n                                <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                    {{item.RentalMonths}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label>Rental End Month</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"rentalEndMonth\"\r\n                                (change)=\"checkRentalMonths()\">\r\n                                <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                    {{item.RentalMonths}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Date</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"monthlyRentalStartDates\">\r\n                                <option *ngFor=\"let item of monthlyRentalStartDates;\" [value]=\"item.startDate\">\r\n                                    {{item.startDate}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"vendorDetails mt-2\">\r\n                    <ejs-grid #gridMonthlyRental [dataSource]='selectedMonthlyBooths' (created)=\"created($event)\"\r\n                        class=\"Table_Height_store table-striped table-ipad\" [gridLines]='lines' height=\"150\"\r\n                        [allowSelection]=\"true\" allowSorting='true' [sortSettings]='sortOptions' [textWrapSettings]=\"textWrapSettings\" allowTextWrap=\"true\">\r\n                        <e-columns>\r\n                            <e-column field='BoothNumber' headerText='Booth#' textAlign='left' width=130>\r\n                            </e-column>\r\n                            <e-column field='BoothDescription' headerText='Booth Description' textAlign='left' width=210>\r\n                            </e-column>\r\n                            <e-column field='Product' headerText='Product' textAlign='left' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.Product\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"productChange(data)\">\r\n                                            <option *ngFor=\"let item of vendorProducts\" [value]=\"item.ProductId\">\r\n                                                {{item.ProductName}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentStartPeriod' textAlign='left' headerText='Rent Start Period' width=210>\r\n                            </e-column>\r\n                            <e-column field='RentEndPeriod' textAlign='left' headerText='Rent End Period' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\"\r\n                                        (click)=\"rentalExtension(RentalExtension,data)\">{{data.RentEndPeriod}}</span>\r\n                                </ng-template>\r\n                            </e-column>                           \r\n                            <e-column field='Rent' headerText='Rent' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=170>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=170>\r\n                            </e-column>                           \r\n                            <e-column field='RentalEndDate' headerText='Rental End Date' textAlign='left' width=190>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='left' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteSelectedBooth(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n                <div class=\"row\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <div class=\"col-12 text-right\" style=\"margin-top: 18px\">\r\n                        <button class=\"btn btn-primary\" data-toggle=\"modal\"\r\n                        data-target=\"#modalMonthlyOtherCharges\">Select Other Item</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <ejs-grid #gridOtherRental [dataSource]='selectedOtherItems'\r\n                        class=\"Table_Height_store table-striped table-ipad\" height='150' allowSorting='true'\r\n                        [sortSettings]='sortOtherItemsOptions'>\r\n                        <e-columns>\r\n                            <e-column field='OtherItem' headerText='Item' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='Recurring' headerText='Rec' textAlign='left' width=130>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Recurring\"\r\n                                                    (change)=\"updateOtherItem(data)\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='OtherItemCharge' headerText='Charge' textAlign='right' width=140>                               \r\n                            </e-column>\r\n                            <e-column field='Quantity' headerText='Qty' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control pr-1\" style=\"text-align: center;\"\r\n                                            [(ngModel)]=\"data.Quantity\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (blur)=\"updateOtherItem(data)\"\r\n                                            (keydown)=\"onCheckNumKeyPress($event)\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='BoothNo' headerText='Booth#' textAlign='left' width=100>\r\n                            </e-column>\r\n                            <e-column field='RentalMonth' headerText='Month' width=240 textAlign='left'>\r\n                            </e-column>\r\n                            <e-column field='OtherItemtotal' headerText='Total' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='Reference' headerText='Reference' textAlign='left' width=160>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" (blur)=\"updateOtherItem(data)\"\r\n                                            [(ngModel)]=\"data.Reference\" [ngModelOptions]=\"{standalone: true}\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='left' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteOtherRentalCharges(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n\r\n                <div class=\"vendorDetails1 mt-2\">\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"!newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"saveRentalWithPayment()\">Pay</button>\r\n                    </div>\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\" (click)=\"rentOnlineNextTab()\">Next</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n\r\n        <!-- Modal for Adding Other Charges -->\r\n        <div class=\"modal fade bd-example-modal-xl\" #modalMonthlyOtherCharges id=\"modalMonthlyOtherCharges\"\r\n            tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n            <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\r\n                <div class=\"modal-content contentNewBooths\">\r\n                    <div class=\"modal-header modal-headerNewBooths\">\r\n                        <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Other Charges</h5>\r\n                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                            <span aria-hidden=\"true\">&times;</span>\r\n                        </button>\r\n                    </div>\r\n                    <div class=\"modal-body modal-bodyNewBooths\" formGroupName=\"otherItemsScreen\">\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label i18n>Rental Month</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <select class=\"form-control\" formControlName=\"otherChargeMarketMonth\"\r\n                                    (change)=\"getBoothsAndItemsForOtherCharges()\">\r\n                                    <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                        {{item.RentalMonths}}</option>\r\n                                </select>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label i18n>Search Value</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <input type=\"text\" class=\"form-control\" formControlName=\"otherItemSearchText\"\r\n                                    (keyup)=\"searchOtherItem()\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                \r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\" style=\"height: 46vh;overflow-y: scroll;\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-0\">\r\n                                <div class=\"availableBoothsHeading pt-1 pb-1\">\r\n                                    <label i18n>Other Charges</label>\r\n                                </div>\r\n                                <div class=\"scroll_outer\">\r\n                                        <table class=\"table table-striped table-hover followup-table mb-0\">\r\n                                            <thead>\r\n                                                <tr>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"40\"></th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"200\" i18n>Items</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"40\" i18n>Rec</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"100\"\r\n                                                        *ngIf=\"displayOtherChargeByBooth\" i18n>Booth#</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"120\" i18n>Charges\r\n                                                    </th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"100\" i18n>Qty</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"120\" i18n>Total</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"160\" i18n>Reference\r\n                                                    </th>\r\n                                                </tr>\r\n                                            </thead>\r\n                                            <tbody>\r\n                                                <tr *ngFor=\"let item of otherRentalCharges\">\r\n                                                    <td class=\"text-left\" style=\"width: 10%;\">\r\n                                                        <label class=\"pure-material-checkbox\">\r\n                                                            <input type=\"checkbox\" [checked]=\"isDateSelected(item)\"\r\n                                                                (change)=\"setDefaultRentalItem($event,item)\"\r\n                                                                [(ngModel)]=\"item.isOtherItemChecked\"\r\n                                                                [ngModelOptions]=\"{standalone: true}\">\r\n                                                            <span></span>\r\n                                                        </label>\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 35%;\">{{item.OtherItem}}</td>\r\n                                                    <td class=\"text-left\">\r\n                                                        <div class=\"checkbox-wrapper mt-2\" style=\"width: 15%;\">\r\n                                                            <label class=\"pure-material-checkbox \">\r\n                                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                                    [(ngModel)]=\"item.Recurring\"\r\n                                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                                    (change)=\"otherItemUpdate(item)\"\r\n                                                                    [disabled]=\"!item.otherItemChecked\">\r\n                                                                <span></span>\r\n                                                            </label>\r\n                                                        </div>\r\n                                                    </td>\r\n                                                    <td class=\"text-left tblAvailableBooths\" style=\"width: 35%;\"\r\n                                                        *ngIf=\"displayOtherChargeByBooth\">\r\n                                                        <select class=\"form-control\" [(ngModel)]=\"item.othChgBooths\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (change)=\"otherItemUpdate(item)\"\r\n                                                            [disabled]=\"!item.otherItemChecked\">\r\n                                                            <option value=\"none\">None</option>\r\n                                                            <option *ngFor=\"let booth of boothsForOtherCharge\"\r\n                                                                [value]=\"booth.BoothNumber\">{{booth.BoothNumber}}\r\n                                                            </option>\r\n                                                        </select>\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 30%;\">\r\n                                                        <input type=\"text\" class=\"form-control text-right pr-1\"\r\n                                                            [disabled]=\"!item.otherItemChecked  || !overrideOtherChargesRent\"\r\n                                                            [(ngModel)]=\"item.OtherItemCharge\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (change)=\"otherItemUpdate(item)\">\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 25%;\"><input type=\"number\"\r\n                                                            class=\"form-control\" [(ngModel)]=\"item.Quantity\"\r\n                                                            [disabled]=\"!item.otherItemChecked\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\" min=\"1\"\r\n                                                            (ngModelChange)=\"otherItemUpdate(item)\"\r\n                                                            onkeydown=\"return false\">\r\n                                                    </td>\r\n                                                    <td class=\"text-right\" style=\"width: 20%;\">{{item.OtherItemtotal}}\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 35%;\">\r\n                                                        <input type=\"text\" class=\"form-control\"\r\n                                                            [(ngModel)]=\"item.Reference\"\r\n                                                            [disabled]=\"!item.otherItemChecked\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (keyup)=\"otherItemUpdate(item)\">\r\n                                                    </td>\r\n                                                </tr>\r\n                                            </tbody>\r\n                                        </table>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"modal-footer pt-0 pb-2\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 MblRightToLeft mt-2\">\r\n                                <button class=\"btn btn-primary mr-1\" (click)=\"addOtherCharges()\" data-dismiss=\"modal\"\r\n                                    aria-label=\"Close\" i18n>OK</button>\r\n                                <button class=\"btn btn-outline-primary\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                                    i18n>Cancel</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- Ends Modal for Adding Other Charges -->\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"displayLayout\">\r\n    <app-rentallayout-online [marketId]=\"marketId\" [layoutParts]=\"layoutParts\" [LayoutData]=\"MonthlyLayoutData\"\r\n        rentalType=\"M\" (selectedBoothsFromLayout)=\"selectedBoothsFromLayout($event)\" (CloseLayout)=\"closeLayoutForm()\"\r\n        (removeBoothCharges)=\"removeBoothCharges($event)\"></app-rentallayout-online>\r\n</div>\r\n\r\n<!-- Modal for Resale Number -->\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>{{ResaleOrBusinessHeader}}</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"resaleNoDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\" maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n                \r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"businessLicenseDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Business License Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseNumberInp\">Business License Number</label>\r\n                            <input type=\"text\" id=\"businesLicenseNumberInp\" class=\"form-control\" [(ngModel)]=\"businessLicenseNumber\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseExpDateInp\">Business Expiry Date</label>\r\n                            <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false id=\"businesLicenseExpDateInp\"\r\n                                [(ngModel)]=\"businessLicenseExpiryDate\" i18n-placeholder=\"Business License Expiry Date\"\r\n                                placeholder=\"Business License Expiry Date\" [min]=\"minExpiryDate\"></ejs-datepicker>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n\r\n                                (click)=\"AddBoothsOnGridOnValidationSucess()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- Modal for Resale Number -->\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GridComponent, GridLine, SortSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport Swal from 'sweetalert2';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-monthlyrental-online',\r\n  templateUrl: './monthlyrental-online.component.html',\r\n  styleUrls: ['./monthlyrental-online.component.scss', '../rent-online.component.scss']\r\n})\r\n\r\nexport class MonthlyrentalOnlineComponent implements OnInit, OnDestroy {\r\n  rentalForm : FormGroup;\r\n  marketId;\r\n  vendorId;\r\n  sunday = false;\r\n  monday = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  selectedMarketDays=[];\r\n  selectedOtherItems = []\r\n  parts = [];\r\n  monthlyMarketDays = [];\r\n  excludedMarketDays=[];\r\n  selectedMonthlyBooths = []\r\n  displaySalesTax = false;\r\n  displayCityTax = false;\r\n  tempRecordNo = 0;\r\n  otherRentalCharges = [];\r\n  otherItemList = [];\r\n  vendorProducts = [];\r\n  defaultProduct;\r\n  vendorDiscountPlans =[];\r\n  priorBalance = 0.00;\r\n  AllowRentingOtherItems = false;\r\n  layoutParts = 0;\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  selectedDates = [];\r\n  private subscriptions: Subscription[] = [];\r\n  MonthlyLayoutData;\r\n  combinedMonthlyBookingEndDate;\r\n  displayLayout = false;\r\n  totalDiscountCharge;\r\n  isdirty = false;\r\n  @Input() newVendor;\r\n  @Output() bookingFormCompleted = new EventEmitter<any>(); \r\n  @Output() rentalBookingData = new EventEmitter<any>();\r\n  @Output() isFormDirty = new EventEmitter<any>(); \r\n  @Output() isCancelClicked = new EventEmitter<any>(); \r\n  @Output() resaleNoInputRequired = new EventEmitter<any>();\r\n  @Output() businessLicenseRequired = new EventEmitter<any>();\r\n  ApplyBookingFee = false;\r\n  ApplyBookingFeeId;\r\n  boothsForOtherCharge = [];\r\n  bookingFeeAmount;\r\n  displayOtherChargeByBooth = false;\r\n  displayOtherChargeSalesTax = false;\r\n  displayOtherChargeCityTax = false;\r\n  ResaleNumberRequired  = false;\r\n  DaysSellWithoutResaleNumber;\r\n  monthlyRentalStartDates;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  resaleNoOption = \"1\";\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  resaleNoDisplay = false;\r\n  businessLicenseDisplay = false;\r\n  ResaleOrBusinessHeader = \"\";\r\n  businessLicenseNumber;\r\n  defaultPart;\r\n  businessLicenseExpiryDate;\r\n  vendorRentalDays = [];\r\n  marketDayCountForResale = 0;\r\n  resaleOptionSelected = false;\r\n  selectedBoothsForRental=[];\r\n  perDiemRentApplicable = false;\r\n  selectedOtherCharges = [];\r\n  selectedMonthlyBoothData = [];\r\n  public lines: GridLine;\r\n  rentalStartDates;\r\n  warnExcessPayment = false;\r\n  warnZeroPayment = false;\r\n  RentalTaxPercentage = 0;\r\n  OtherRentalTaxPercentage = 0;\r\n  RentalSecondTaxPercentage = 0;\r\n  OtherRentalSecondTaxPercentage = 0;\r\n  DisplayPayDueDate = false;\r\n  DisplaySpecificDate = false;\r\n  OtherChargesPeriod = false;\r\n  DisplayOptionValue = 0;\r\n  secondTaxName=\"\";\r\n  public textWrapSettings: any = { wrapMode: 'Both' }; // Enable text wrapping\r\n  sortOptions: SortSettingsModel = {\r\n    columns: [{ field: 'RentalStartDate', direction: 'Ascending' }, { field: 'BoothNumber', direction: 'Ascending' }]\r\n  };\r\n  sortOtherItemsOptions: SortSettingsModel = {\r\n    columns: [{ field: 'OtherItem', direction: 'Ascending' }, { field: 'BoothNo', direction: 'Ascending' }]\r\n  };\r\n  public loaderIcon: Promise<boolean>;\r\n  @ViewChild('gridMonthlyRental', { static: false }) public gridMonthlyRental: GridComponent;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  @ViewChild('modalMonthlyOtherCharges', { static: false }) modalMonthlyOtherCharges: ElementRef;\r\n  @ViewChild('gridOtherRental', { static: false }) public gridOtherRental: GridComponent;\r\n   constructor(private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    public vendorService: VendorService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private datePipe: DatePipe,\r\n    private sharedDataService: SharedDataService,\r\n    private marketInfoService: MarketInfoService){\r\n      this.rentalForm = this.formbuilder.group({\r\n        marketWeekSunday: [0],\r\n        marketWeekMonday: [0],\r\n        marketWeekTuesday: [0],\r\n        marketWeekWednesday: [0],\r\n        marketWeekThursday: [0],\r\n        marketWeekFriday: [0],\r\n        marketWeekSaturday: [0],\r\n        marketParts:[''],\r\n        rentalStartMonth:[''],\r\n        rentalEndMonth: [''],\r\n        monthlyRentalStartDates:[],\r\n        otherItemsScreen: this.formbuilder.group({\r\n          otherChargeMarketMonth: [''],\r\n          otherItemSearchText: ['']\r\n        })\r\n      })\r\n    }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.getMarketDays();\r\n    this.getRentalPaymentSettings();\r\n    this.getVendorProducts();\r\n    this.getParts();\r\n    this.getMarketVendorSettings();\r\n    this.getVendorBusinessLicenseSettings();\r\n    this.generateTempRecordNumber();\r\n    this.getVendorBalances();\r\n    this.getOtherRentalItems();\r\n    if (this.sharedDataService.paymentSharedData)\r\n      this.loadSelectedBooths();\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMarketVendorSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getMarketVendorSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n      var response = res.body;\r\n      if (response) {\r\n        this.exemptResale = response.ExemptResale;\r\n        this.resaleNo = response.Resale;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBusinessLicenseSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getVendorBusinessLicenseSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.businessLicenseNumber = res.LicenseNumber;\r\n        this.businessLicenseExpiryDate = res.ExpiryDate;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.subscriptions.push(this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.warnExcessPayment = res.WarnExcessPayment;\r\n        this.warnZeroPayment = res.WarnZeroPayment;\r\n        this.displayOtherChargeByBooth = res.DisplayOtherChargesByBooth;\r\n        this.displayCityTax = res.RentalSecondTaxable;\r\n        this.displaySalesTax = res.RentalTaxable;\r\n        this.perDiemRentApplicable = res.PerDiemRentApplicable;\r\n        this.gridMonthlyRental.getColumnByField(\"SalesTax\").visible = this.displaySalesTax;\r\n        this.gridMonthlyRental.getColumnByField(\"CityTax\").visible = this.displayCityTax;\r\n        if(this.newVendor){\r\n          this.gridMonthlyRental.getColumnByField(\"Product\").visible = false;\r\n        }\r\n        this.gridMonthlyRental.refreshColumns();\r\n        this.displayOtherChargeSalesTax = res.OtherRentalTaxable;\r\n        this.displayOtherChargeCityTax = res.OtherRentalSecondTaxable;       \r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.DisplayPayDueDate = res.DisplayPayDueDate;\r\n        this.DisplaySpecificDate = res.DisplaySpecificDate;\r\n        this.DisplayOptionValue = res.DisplayOptionValue;\r\n        const nextDate = this.getNextDate(this.DisplayOptionValue);\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\"\r\n        var secLevelTaxRentHeader = this.gridMonthlyRental.getColumnByField(\"CityTax\"); \r\n        secLevelTaxRentHeader.headerText = this.secondTaxName;       \r\n        this.RentalTaxPercentage = res.RentalTaxPercentage;\r\n        this.OtherRentalTaxPercentage = res.OtherRentalTaxPercentage;\r\n        this.RentalSecondTaxPercentage = res.RentalSecondTaxPercentage;\r\n        this.OtherRentalSecondTaxPercentage = res.OtherRentalSecondTaxPercentage;\r\n        this.OtherChargesPeriod = res.OtherChargesPeriod;\r\n        this.gridMonthlyRental.refresh();\r\n        if (this.AllowRentingOtherItems) {\r\n          var secLevelTaxOtherRentHeader = this.gridOtherRental.getColumnByField(\"CityTax\");\r\n          secLevelTaxOtherRentHeader.headerText = this.secondTaxName;\r\n          this.gridOtherRental.getColumnByField(\"BoothNo\").visible = res.DisplayOtherChargesByBooth;\r\n          this.gridOtherRental.getColumnByField(\"SalesTax\").visible = this.displayOtherChargeSalesTax;\r\n          this.gridOtherRental.getColumnByField(\"CityTax\").visible = this.displayOtherChargeCityTax;\r\n          this.gridOtherRental.refreshColumns();\r\n          this.gridOtherRental.refresh();\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err =>{\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n  }\r\n\r\n  getNextDate(day: number): Date {\r\n    if (this.DisplaySpecificDate) {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.getFullYear(), today.getMonth(), day);\r\n      // If the nextDate is in the past or today, move to the next month\r\n      if (nextDate < today) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n      }\r\n      // Handle cases where the day is not valid in the next month (e.g., 31st in February)\r\n      while (nextDate.getDate() !== day) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n        nextDate.setDate(day);\r\n      }\r\n      return nextDate;\r\n    }\r\n    else{\r\n      const today = new Date();\r\n      let nextDate = new Date(today.setDate(today.getDate() + day));\r\n      return nextDate;\r\n    }\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    var formattedDate;\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n      var input = this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'];\r\n      const date = new Date(`${input} 1`);\r\n      formattedDate = this.datePipe.transform(`${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`, 'MM/dd/yyyy');\r\n    }\r\n    this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId, formattedDate).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          if (el.WebRental) {\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherItemCombinedMonthlyCharge),\r\n              Quantity: 0,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              othChgBooths: \"none\"\r\n            }\r\n            this.otherRentalCharges.push(ob);\r\n            this.otherItemList.push(ob);\r\n          }\r\n        });\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[0-9]/g;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  updateOtherItem(data) {\r\n    if (parseFloat(data.Quantity) == 0) {\r\n      data.Quantity = \"1\"\r\n    }\r\n\r\n    this.totalSalesTax -= data.SalesTax.toString().includes('(') && data.SalesTax.toString().includes(')') ? -1 * parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.toString().includes('(') && data.CityTax.toString().includes(')') ? -1 * parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalOtherRentalCharge -= data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n\r\n    var index;\r\n    if (data.NewItem == true)\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.NewItem == true && oth.BoothNo == data.BoothNo);\r\n    else\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.MonthlyRentalIds == data.MonthlyRentalIds && oth.BoothNo == data.BoothNo);\r\n\r\n    if (index !== -1) {\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: data.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: data.Quantity,\r\n        OtherItemCharge: data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')') ? (-1) * parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n        WRNewVendorRequest: this.newVendor\r\n      }\r\n      this.subscriptions.push(this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString()),\r\n          this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString())\r\n        const isNegative = data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        data.OtherItemtotal = this.customCurrency.transform((finalCharge * data.Quantity).toString());\r\n        this.selectedOtherItems[index].OtherItemtotal = data.OtherItemtotal;\r\n        this.selectedOtherItems[index].OtherItemCharge = this.customCurrency.transform((finalCharge).toString());\r\n        this.selectedOtherItems[index].Recurring = data.Recurring;\r\n        this.selectedOtherItems[index].Reference = data.Reference;\r\n        this.selectedOtherItems[index].Quantity = data.Quantity;\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString()),\r\n          this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString()),\r\n          this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n        this.totalOtherRentalCharge += data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      }));\r\n    }\r\n  }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.defaultProduct = this.vendorProducts[0].ProductId;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  generateTempRecordNumber() {\r\n    this.subscriptions.push(this.rentalService.generateTempRecordNumber(this.marketId).subscribe((response) => {\r\n      if (response.Success) {\r\n        this.tempRecordNo = response.Message;\r\n      }\r\n    }));\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.vendorDiscountPlans =[];\r\n  forkJoin({\r\n    vendorBalanceRes: this.rentalService.getVendorBalances(this.vendorId, this.marketId),\r\n    discountPlansRes:    this.vendorService.GetDiscountPlan(this.vendorId,this.marketId)\r\n  }).subscribe(\r\n    ({ vendorBalanceRes, discountPlansRes }: any) => {\r\n      if (vendorBalanceRes) {\r\n        this.priorBalance = vendorBalanceRes.PriorBalance;\r\n      }\r\n      if(discountPlansRes){\r\n        if (discountPlansRes) {\r\n          for (const el of discountPlansRes) {\r\n            if (el.Monthly && el.OnlineTransactions) {\r\n              const ob = {\r\n                PlanSeqId: el.PlanSeqId,\r\n                PlanId: el.PlanId,\r\n                PlanName: el.PlanName,\r\n                EffectiveFrom: this.datePipe.transform(el.EffectiveFrom, 'MM/dd/yyyy'),\r\n                ExpiryDate: this.datePipe.transform(el.ExpiryDate, 'MM/dd/yyyy'),\r\n                DiscountType: el.DiscountType == 0 ? DiscountType.Percentage : DiscountType.FixedAmount,\r\n                DiscountValue: el.DiscountValue,\r\n                OtherItems: el.OtherItems,\r\n                Daily: el.Daily,\r\n                Weekly: el.Weekly,\r\n                Monthly: el.Monthly,\r\n                CombinedWeekly: el.CombinedWeekly,\r\n                CombinedMonthly: el.CombinedMonthly,\r\n                IsExceedAmount: el.IsExceedAmount,\r\n                ExceedAmount: el.ExceedAmount,\r\n                BalanceDue: el.BalanceDue,\r\n                Notes: el.Notes,\r\n                QDR: el.QDR,\r\n                CheckAll: el.Selected,\r\n                AutoSelected: el.Selected,\r\n                DisableDiscount: el.Selected,\r\n                AppliedDiscount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SecondLevelTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxApplied: el.SalesTax,\r\n                SecondLevelTaxApplied: el.SecondLevelTax,\r\n              }\r\n              this.vendorDiscountPlans.push(ob);\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        //  this.disableDiscountAmount = this.vendorDiscountPlans.length > 0 ? false : true;\r\n        }\r\n        this.getDiscounts();\r\n      }\r\n    })\r\n  }\r\n\r\n  getDiscounts() {\r\n    var totalRentalCharge = this.totalRentalCharge;\r\n    var totalSalesTax = this.totalSalesTax;\r\n    var totalSecondLeveltax = this.totalSecondLeveltax;\r\n    var totalOtherRentalCharge = this.totalOtherRentalCharge;\r\n    var priorBalance = 0;\r\n    var totalChargeWithDue = this.priorBalance + (totalRentalCharge)\r\n      + (totalSalesTax)\r\n      + (totalSecondLeveltax)\r\n      + (totalOtherRentalCharge)\r\n\r\n    var totalCharge = (totalRentalCharge) + (totalSalesTax) + (totalSecondLeveltax) + (totalOtherRentalCharge)\r\n    //   totalCharge = totalCharge.toString().includes('(') && totalCharge.toString().includes(')') ? -1 * parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.vendorDiscountPlans.length > 0 && totalCharge > 0) {\r\n      var discountTotalAmount = 0;\r\n      var totalAmountForDiscount = 0;\r\n      for (const disc of this.vendorDiscountPlans) {\r\n        disc.CheckAll = disc.AutoSelected;\r\n        if (disc.CheckAll && disc.Monthly) {\r\n          var currentDiscountValue = 0;\r\n          if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n            if (!disc.IsExceedAmount || (disc.IsExceedAmount && totalCharge > disc.ExceedAmount)) {\r\n              const discountValue = disc.DiscountValue;\r\n              totalAmountForDiscount = totalRentalCharge\r\n              if (disc.OtherItems) {\r\n                totalAmountForDiscount += totalOtherRentalCharge\r\n              }\r\n              if (disc.DiscountType == 'Percentage') {\r\n                discountTotalAmount += totalAmountForDiscount * (discountValue / 100);\r\n                currentDiscountValue = totalAmountForDiscount * (discountValue / 100);\r\n              }\r\n              else {\r\n                discountTotalAmount += discountValue;\r\n                currentDiscountValue = discountValue;\r\n              }\r\n            }\r\n            else {\r\n              disc.CheckAll = false;\r\n            }\r\n          }\r\n          else {\r\n            disc.CheckAll = false;\r\n          }\r\n          disc.AppliedDiscount = this.customCurrency.transform(currentDiscountValue.toString());\r\n        }\r\n        else {\r\n          disc.AppliedDiscount = this.customCurrency.transform(\"0\");\r\n        }\r\n\r\n        this.totalDiscountCharge = parseFloat(discountTotalAmount.toFixed(2)).toString()\r\n      }\r\n    }\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.defaultPart = res.DefaultLayoutPart;\r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.ApplyBookingFee = res.ApplyBookingFee;\r\n        this.ApplyBookingFeeId = res.ApplyBookingFeeId;\r\n        this.AllowRentingOtherItems = res.AllowRentingOtherItems;\r\n        if (this.ApplyBookingFee) {\r\n          this.subscriptions.push(this.rentalService.getBookingFeeById(this.marketId, this.ApplyBookingFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.bookingFeeAmount = resFee.OtherItemCharge;\r\n            }\r\n          }));\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);  \r\n        this.getMonthlyMarketDays();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMonthlyMarketDays() {\r\n    this.subscriptions.push(this.marketInfoService.getMonthlyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.monthlyMarketDays = response;\r\n        this.rentalForm.patchValue({\r\n          rentalStartMonth: response[0].RentalMonths,\r\n          rentalEndMonth: response[0].RentalMonths,\r\n        });\r\n        this.rentalForm.controls['otherItemsScreen'].patchValue({\r\n          otherChargeMarketMonth: response[0].RentalMonths\r\n        });  \r\n        this.selectedMonthlyMarketDays();  \r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  isDateSelected(item: any): boolean {\r\n    var isItemSelected = this.selectedOtherItems.some(\r\n       (element) =>\r\n         (element.RentalMonth === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) &&\r\n         element.Id === item.Id && element.NewItem == true\r\n     );\r\n \r\n     if(!isItemSelected){\r\n       isItemSelected = this.selectedOtherCharges.some(\r\n         (element) =>\r\n           (element.RentalMonth === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'])  &&\r\n           element.Id === item.Id\r\n       );\r\n     }\r\n \r\n     !isItemSelected? item.otherItemChecked = false : item.otherItemChecked = true;\r\n     item.othChgBooths = \"none\";\r\n     return isItemSelected;\r\n   }\r\n\r\n  checkRentalMonths() {\r\n    if (this.rentalForm.value['rentalStartMonth'] && this.rentalForm.value['rentalEndMonth']) {\r\n      const startMonth = this.rentalForm.value['rentalStartMonth'];\r\n      const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n      if (endMonthYear < startYear || (endMonthYear == startYear && endMonthIndex < startMonthIndex)) {\r\n        this.rentalForm.get('rentalEndMonth').setValue(startMonth);\r\n      }    \r\n      this.selectedMonthlyMarketDays();      \r\n    }\r\n  }  \r\n\r\n  selectedMonthlyMarketDays() {\r\n    this.selectedMarketDays = [];\r\n    this.rentalForm.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.rentalForm.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.rentalForm.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.rentalForm.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.rentalForm.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.rentalForm.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.rentalForm.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n    this.monthlyRentalStartDates = [];\r\n    this.selectedMarketDays.map((el, i) => {      \r\n      const currentDate = new Date();\r\n      const currentYear = currentDate.getFullYear();\r\n      const currentMonth = currentDate.getMonth();\r\n      const startMonth = this.rentalForm.value['rentalStartMonth'];\r\n      const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(startMonthDate);\r\n      var startDate;\r\n      if (startYear === currentYear.toString() && startMonthIndex === currentMonth)\r\n        startDate = currentDate\r\n      else\r\n        startDate = new Date(startYear, startMonthIndex, 1);\r\n      const endDate = new Date(startYear, endMonthIndex + 1, 0);;\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (new Date(this.datePipe.transform(currentDay,'MM/dd/yyyy')) <= new Date(this.datePipe.transform(endDate,'MM/dd/yyyy'))) {\r\n        var exludedDate = excludedDates.some(date => {\r\n          return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n        });\r\n        if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n          this.monthlyRentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.monthlyRentalStartDates.sort(compareDates);\r\n      if (this.monthlyRentalStartDates && this.monthlyRentalStartDates.length > 0) {\r\n        this.rentalForm.get('monthlyRentalStartDates').setValue(this.monthlyRentalStartDates[0].startDate)\r\n      }\r\n    });\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  checkMarketDaysSelected() {\r\n    const sunday = this.rentalForm.value['marketWeekSunday'];\r\n    const monday = this.rentalForm.value['marketWeekMonday'];\r\n    const tuesday = this.rentalForm.value['marketWeekTuesday'];\r\n    const wednesday = this.rentalForm.value['marketWeekWednesday'];\r\n    const thursday = this.rentalForm.value['marketWeekThursday'];\r\n    const friday = this.rentalForm.value['marketWeekFriday'];\r\n    const saturday = this.rentalForm.value['marketWeekSaturday'];\r\n    return sunday || monday || tuesday || wednesday || thursday || friday || saturday;\r\n  }\r\n\r\n  openLayout() {\r\n    this.layoutParts = this.rentalForm.value['marketParts'];\r\n    var marketDaysSelected = this.checkMarketDaysSelected();\r\n    if (!marketDaysSelected) {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please select a market day!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else {\r\n      if (this.selectedMarketDays.length > 0) {\r\n        this.selectedDates = [];\r\n        this.selectedMarketDays.map((el, i) => {      \r\n\r\n        const startDate = new Date(this.rentalForm.value['monthlyRentalStartDates']);\r\n        const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n        const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n        const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n        const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n\r\n        const selectedDayOfWeek = el - 1;\r\n        let currentDay = new Date(startDate);\r\n        while (currentDay <= endDate) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n            this.selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n          }\r\n          currentDay.setDate(currentDay.getDate() + 1);\r\n        }\r\n\r\n        const compareDates = (a, b): number => {\r\n          const dateA = new Date(a.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          const dateB = new Date(b.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          return dateA - dateB;\r\n        };\r\n        const sortedDates = this.selectedDates.sort(compareDates);\r\n      });\r\n      }\r\n      const rentalStartDateYear = new Date(this.rentalForm.value['rentalStartMonth'].split('-')[0]).getFullYear();\r\n      const rentalStartDateMonth = new Date(this.rentalForm.value['rentalStartMonth'].split('-')[0]).getMonth() + 1;\r\n      const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n      this.MonthlyLayoutData = {\r\n        Sunday: this.rentalForm.value['marketWeekSunday'],\r\n        Monday: this.rentalForm.value['marketWeekMonday'],\r\n        Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n        Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n        Thursday: this.rentalForm.value['marketWeekThursday'],\r\n        Friday: this.rentalForm.value['marketWeekFriday'],\r\n        Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        monthlyRentalStartDate: this.rentalForm.value['rentalStartMonth'],\r\n        monthlyRentalEndDate: this.rentalForm.value['rentalEndMonth'],\r\n        monthlyRentalMarketDays: this.selectedMarketDays,\r\n        selectedDates: this.selectedDates,\r\n        monthlyRentalSelectedBooths: this.selectedMonthlyBooths.filter(e => e.NewBooth == true),\r\n        RentalStartDate: this.datePipe.transform(new Date(this.rentalForm.value['monthlyRentalStartDates']), 'MM/dd/yyyy'),\r\n        RentalEndDate: this.datePipe.transform(new Date(this.monthlyRentalStartDates[this.monthlyRentalStartDates.length-1].startDate), 'MM/dd/yyyy'),\r\n        RentalStartDateYearMonth:rentalStartDateYearMonth,\r\n        tempRecordNo: this.tempRecordNo\r\n      }      \r\n      this.displayLayout = true;\r\n    }\r\n  }\r\n\r\n  validateAndAddSelectedBoothsToGrid() {\r\n    let noResale = true;\r\n    var rentalDates = [];\r\n    var marketDay;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0 \r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n      var rentalstartDate = \"\";\r\n      var selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n      if (selectedBoothRecord.length > 0) {\r\n        selectedBoothRecord.forEach(record => {\r\n          var selectedDaysOfWeek;\r\n          record.Sunday == true ? selectedDaysOfWeek = 0 :\r\n            record.Monday == true ? selectedDaysOfWeek = 1 :\r\n              record.Tuesday == true ? selectedDaysOfWeek = 2 :\r\n                record.Wednesday == true ? selectedDaysOfWeek = 3 :\r\n                  record.Thursday == true ? selectedDaysOfWeek = 4 :\r\n                    record.Friday == true ? selectedDaysOfWeek = 5 :\r\n                      record.Saturday == true ? selectedDaysOfWeek = 6 : 0;\r\n          const startDate = new Date(record.RentalStartDate);\r\n          const endDate = new Date(record.RentalEndDate);\r\n          let currentDay = new Date(startDate);\r\n          const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n          while (currentDay <= endDate) {\r\n            var exludedDate = excludedDates.some(date => {\r\n              return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n            });\r\n            if (currentDay.getDay() === selectedDaysOfWeek && !exludedDate) {\r\n              if (!rentalstartDate) {\r\n                rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n              }\r\n              rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n        });      \r\n      }\r\n\r\n      for (const el of this.selectedMarketDays) {\r\n       switch (el) {\r\n          case 1: marketDay = 'Sun'\r\n            break;\r\n          case 2: marketDay = 'Mon'\r\n            break;\r\n          case 3: marketDay = 'Tue'\r\n            break;\r\n          case 4: marketDay = 'Wed'\r\n            break;\r\n          case 5: marketDay = 'Thu'\r\n            break;\r\n          case 6: marketDay = 'Fri'\r\n            break;\r\n          case 7: marketDay = 'Sat'\r\n            break;\r\n        }        \r\n      \r\n       // rentalDates=[];\r\n        const startDate = new Date(this.rentalForm.value['monthlyRentalStartDates']);\r\n        const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n        const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n        const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n        const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n         const selectedDayOfWeek = el - 1;\r\n        let currentDay = new Date(startDate);\r\n        const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n        while (currentDay <= endDate) {\r\n          var exludedDate = excludedDates.some(date => {\r\n            return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n          });\r\n          if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n            if (!rentalstartDate) {\r\n              rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n            }\r\n            rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n          currentDay.setDate(currentDay.getDate() + 1);\r\n        }\r\n      }\r\n\r\n      rentalDates.map(date => {\r\n        const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n        const dateExist = this.vendorRentalDays.find(el => {\r\n          const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n          return rentalDateString === targetDateString;\r\n        });\r\n        if (!dateExist) {\r\n          const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n          this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n          this.marketDayCountForResale += 1;\r\n          if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n            return; // exits the forEach loop when the condition is met\r\n          }\r\n        }\r\n      });\r\n\r\n      const obj = {\r\n        VendorID: this.vendorId,\r\n        VendorRentalDate: new Date()\r\n      };\r\n\r\n      this.subscriptions.push(this.rentalService.getVendorRentalDays(obj).subscribe((res: any[]) => {\r\n          if (this.marketDayCountForResale <= this.DaysSellWithoutResaleNumber || this.marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n         // const date = rentalDates[index].startDate;\r\n          if (res && res.length > 0) {\r\n            res.forEach(el => {\r\n              const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              const dateExist = this.vendorRentalDays.find(data => {\r\n                const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                return rentalDateString === targetDateString;\r\n              });\r\n              if (!dateExist) {\r\n                const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                this.marketDayCountForResale += 1;\r\n              }\r\n            });\r\n          }\r\n        }\r\n\r\n        if (!this.newVendor) {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            const modal = this.modalResaleNo.nativeElement;\r\n            modal.classList.add('show');\r\n            if (modal.classList.contains('show')) {\r\n              modal.style.display = 'block';\r\n              this.ResaleOrBusinessHeader = \"Resale Number\"\r\n              this.resaleNoDisplay = true;\r\n              this.businessLicenseDisplay = false;\r\n            }\r\n            noResale = false;\r\n          }\r\n          else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            if (!this.businessLicenseNumber || !this.businessLicenseExpiryDate) {\r\n              const modal = this.modalResaleNo.nativeElement;\r\n              modal.classList.add('show');\r\n              if (modal.classList.contains('show')) {\r\n                modal.style.display = 'block';\r\n                this.ResaleOrBusinessHeader = \"Business License Number\";\r\n                this.resaleNoDisplay = false;\r\n                this.businessLicenseDisplay = true;\r\n              }\r\n              noResale = false;\r\n            }\r\n            else {\r\n              if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n                Swal.fire({\r\n                  title: $localize`Warning`,\r\n                  text: $localize`Business License is expired! Please contact the market`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              }\r\n              else {\r\n                this.addSelectedBoothsToGrid();\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            noResale = true;\r\n            this.addSelectedBoothsToGrid();\r\n          }\r\n        }\r\n        else {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            this.resaleNoInputRequired.emit(true)\r\n          }\r\n          if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            this.businessLicenseRequired.emit(true);\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }\r\n      }));\r\n    } else {\r\n      this.addSelectedBoothsToGrid();\r\n    }\r\n  }\r\n\r\n  refreshAddBooth() {\r\n    this.getMarketDays();\r\n    this.selectedMonthlyBoothData = [];\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      this.selectedBoothsForRental.forEach(ele => {\r\n        const temp = {\r\n          TempRecordNo: this.tempRecordNo.toString(),\r\n          BoothNumber: ele.BoothNumber,\r\n          StartDate: new Date(ele.StartDate),\r\n          RentalType: 4,\r\n          EndDate: new Date(ele.EndDate),\r\n          Sunday: this.rentalForm.value['marketWeekSunday'],\r\n          Monday: this.rentalForm.value['marketWeekMonday'],\r\n          Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n          Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n          Thursday: this.rentalForm.value['marketWeekThursday'],\r\n          Friday: this.rentalForm.value['marketWeekFriday'],\r\n          Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        }\r\n        this.subscriptions.push(\r\n          this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          })\r\n        );\r\n      });\r\n    }\r\n    this.selectedBoothsForRental = [];\r\n    this.rentalForm.reset();\r\n    this.rentalForm.patchValue({\r\n      rentalStartMonth: this.monthlyMarketDays[0].RentalMonths,\r\n      rentalEndMonth: this.monthlyMarketDays[0].RentalMonths,\r\n      marketParts: this.defaultPart\r\n    })\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  AddBoothsOnGridOnValidationSucess() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (this.resaleNoDisplay) {\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n      }\r\n\r\n      if (closeModalPopup) {\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n        }));\r\n      }\r\n    }\r\n    else{\r\n      addToGrid = true;\r\n    }\r\n\r\n    if (addToGrid) {\r\n      if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        var addToGrid = false;\r\n        var closeModalPopup = false;\r\n        if ((!this.businessLicenseNumber || this.businessLicenseNumber.trim() === '') || !this.businessLicenseExpiryDate) {\r\n          this.ResaleOrBusinessHeader = \"Business License Number\"\r\n          const modal = this.modalResaleNo.nativeElement;\r\n          this.resaleNoDisplay = false;   \r\n          this.businessLicenseDisplay = true;\r\n          modal.classList.add('show');\r\n          if (modal.classList.contains('show')) {\r\n            modal.style.display = 'block';\r\n            this.ResaleOrBusinessHeader = \"Business License Number\"                  \r\n          }\r\n        }\r\n        else if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n          this.closeResaleModal();\r\n          Swal.fire({\r\n            text: $localize`Business License is expired! Please contact the market.`,\r\n            icon: \"warning\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n        else {\r\n          addToGrid = true;\r\n          this.closeResaleModal();\r\n          if (this.businessLicenseDisplay) {\r\n            const obj = {\r\n              VendorID: this.vendorId,\r\n              LicenseNameId: 1,\r\n              LicenseName: \"\",\r\n              ExpiryDate: new Date(this.businessLicenseExpiryDate),\r\n              LicenseNumber: this.businessLicenseNumber\r\n            }\r\n  \r\n            this.subscriptions.push(this.rentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n            }));\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }       \r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n    }\r\n  }\r\n\r\n  addSelectedBoothsToGrid() {    \r\n    this.selectedBoothsForRental = [];\r\n    if (this.selectedMonthlyBoothData) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedMonthlyBoothData.map((el, i) => {\r\n        const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n        const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n        const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n        const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);      \r\n\r\n        var obj = {\r\n          BoothTypeId: el.BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(this.rentalForm.value['monthlyRentalStartDates']),\r\n          RentalEndPeriod:endDate,\r\n          RentalMarketDay: el.MarketDay,\r\n          PerDiemApplicable: this.perDiemRentApplicable? true: false,\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.getBoothRentalMontlyCharges(this.marketId,obj).subscribe((res: any) => {\r\n          var newbooths = [];\r\n          var vendorProducts = !this.newVendor ? this.vendorProducts.filter(x => x.Priority) ? this.vendorProducts.filter(x => x.Priority)[0].ProductId : this.vendorProducts[0].ProductId:\"\";\r\n          const ob = {\r\n            MonthlyRentalId: 0,\r\n            BoothNumber: el.BoothNumber,\r\n            BoothType: el.BoothType,\r\n            BoothTypeId: el.BoothTypeId,\r\n            BoothDescription: el.BoothDescription,\r\n            Product: vendorProducts,\r\n            RentStartPeriod: this.rentalForm.value['rentalStartMonth'],\r\n            RentEndPeriod: this.rentalForm.value['rentalEndMonth'],\r\n            RentalStartDate :el.RentalStartDate,\r\n            RentalEndDate : el.RentalEndDate,\r\n            MktDays: el.NoOfMarketDays,\r\n            PerDiem: this.perDiemRentApplicable? true: false,\r\n            PerDiemRent:this.customCurrency.transform(res.PerdiemRent),\r\n            Rent: this.customCurrency.transform(res.Rent),\r\n            SalesTax: this.customCurrency.transform(res.SalesTax),\r\n            CityTax: this.customCurrency.transform(res.CityTax),\r\n            Sunday: el.Sunday,\r\n            Monday: el.Monday,\r\n            Tuesday: el.Tuesday,\r\n            Wednesday: el.Wednesday,\r\n            Thursday: el.Thursday,\r\n            Friday: el.Friday,\r\n            Saturday: el.Saturday,\r\n            Reservation: true,\r\n            Drop: false,\r\n            January: this.customCurrency.transform(res.JanRent),\r\n            February: this.customCurrency.transform(res.FebRent),\r\n            March: this.customCurrency.transform(res.MarRent),\r\n            April: this.customCurrency.transform(res.AprRent),\r\n            May: this.customCurrency.transform(res.MayRent),\r\n            June: this.customCurrency.transform(res.JunRent),\r\n            July: this.customCurrency.transform(res.JulRent),\r\n            August: this.customCurrency.transform(res.AugRent),\r\n            September: this.customCurrency.transform(res.SepRent),\r\n            October: this.customCurrency.transform(res.OctRent),\r\n            November: this.customCurrency.transform(res.NovRent),\r\n            December: this.customCurrency.transform(res.DecRent),\r\n            NewBooth: true,\r\n            RentalMarketDay: el.MarketDay,\r\n            JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n            MarchMonthPresent: res.MarchMonthPresent,\r\n            AprilMonthPresent: res.AprilMonthPresent,\r\n            MayMonthPresent: res.MayMonthPresent,\r\n            JuneMonthPresent: res.JuneMonthPresent,\r\n            JulyMonthPresent: res.JulyMonthPresent,\r\n            AugustMonthPresent: res.AugustMonthPresent,\r\n            SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n            OctoberMonthPresent: res.OctoberMonthPresent,\r\n            NovemberMonthPresent: res.NovemberMonthPresent,\r\n            DecemberMonthPresent: res.DecemberMonthPresent,\r\n            DisableJanMonth: res.JanRent || res.JanRent == 0?false:true, \r\n            DisableFebMonth: res.FebRent || res.FebRent == 0?false:true, \r\n            DisableMarMonth: res.MarRent || res.MarRent == 0?false:true, \r\n            DisableAprMonth: res.AprRent || res.AprRent == 0?false:true, \r\n            DisableMayMonth: res.MayRent || res.MayRent == 0?false:true, \r\n            DisableJunMonth: res.JunRent || res.JunRent == 0?false:true, \r\n            DisableJulMonth: res.JulRent || res.JulRent == 0?false:true, \r\n            DisableAugMonth: res.AugRent || res.AugRent == 0?false:true, \r\n            DisableSepMonth: res.SepRent || res.SepRent == 0?false:true, \r\n            DisableOctMonth: res.OctRent || res.OctRent == 0?false:true, \r\n            DisableNovMonth: res.NovRent || res.NovRent == 0?false:true, \r\n            DisableDecMonth: res.DecRent || res.DecRent == 0?false:true,\r\n            Status: \"N\",         \r\n            StartDateList:el.StartDateList,\r\n            DiasbleStartDate: false, \r\n            RentalStartDateYearMonth:el.RentalStartDateYearMonth,\r\n            ExtendRental: false,\r\n            TaxModel: res.TaxModel\r\n          }\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n         \r\n          this.getDiscounts();\r\n          this.getMarketDays();\r\n          newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n          this.selectedMonthlyBooths = this.selectedMonthlyBooths.concat(newbooths);\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }));\r\n        this.isdirty = true;\r\n        this.isFormDirty.emit(true);\r\n      });      \r\n      this.gridMonthlyRental.refresh();    \r\n      this.loaderIcon = Promise.resolve(false);\r\n    //  this.refreshAddBooth();\r\n    }\r\n  }\r\n\r\n  closeResaleModal(){\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  searchOtherItem() {\r\n    this.otherRentalCharges = this.otherItemList;\r\n    const otherItemSearchText = this.rentalForm.controls['otherItemsScreen'].value['otherItemSearchText'];\r\n    if (otherItemSearchText != '') {\r\n      this.otherRentalCharges = this.otherItemList.filter((ele) => ele.OtherItem.toString().toLowerCase().indexOf(otherItemSearchText.toLowerCase()) !== -1);\r\n    }\r\n  }\r\n\r\n  created(args) {\r\n    if(this.newVendor){\r\n      this.gridMonthlyRental.getColumnByField(\"Product\").visible = false;\r\n    }\r\n  }\r\n\r\n  loadSelectedBooths() {    \r\n    var newItem =[];\r\n    if (this.sharedDataService.paymentSharedData.ReturnData.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.ReturnData.forEach((item) => {\r\n        var extendedBoothIndex = this.selectedMonthlyBooths.findIndex(e=>e.MonthlyRentalId == item.MonthlyRentalId && item.ExtendRental)       \r\n        var newbooths=[];\r\n        if (extendedBoothIndex == -1) {\r\n          var ob = {\r\n            BoothNumber: item.BoothNumber,\r\n            BoothType: item.BoothType,\r\n            BoothTypeId: item.BoothTypeId,\r\n            BoothDescription: item.BoothDescription,\r\n            Product: item.Product,\r\n            RentStartPeriod: item.RentStartPeriod,\r\n            RentEndPeriod: item.RentEndPeriod,\r\n            RentalSavedEndDate: item.RentalSavedEndDate,\r\n            RentalStartDate: item.RentalStartDate,\r\n            RentalEndDate: item.RentalEndDate,\r\n            MktDays: item.MktDays,\r\n            Rent: item.Rent,\r\n            SalesTax: item.SalesTax,\r\n            CityTax: item.CityTax,\r\n            PerDiem: item.PerDiem,\r\n            PerDiemRent: item.PerDiemRent,\r\n            Sunday: item.Sunday,\r\n            Monday: item.Monday,\r\n            Tuesday: item.Tuesday,\r\n            Wednesday: item.Wednesday,\r\n            Thursday: item.Thursday,\r\n            Friday: item.Friday,\r\n            Saturday: item.Saturday,\r\n            Reservation: item.Reservation,\r\n            Drop: item.Drop,\r\n            January: item.January,\r\n            February: item.February,\r\n            March: item.March,\r\n            April: item.April,\r\n            May: item.May,\r\n            June: item.June,\r\n            July: item.July,\r\n            August: item.August,\r\n            September: item.September,\r\n            October: item.October,\r\n            November: item.November,\r\n            December: item.December,\r\n            JanuaryMonthPresent: item.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: item.FebruaryMonthPresent,\r\n            MarchMonthPresent: item.MarchMonthPresent,\r\n            AprilMonthPresent: item.AprilMonthPresent,\r\n            MayMonthPresent: item.MayMonthPresent,\r\n            JuneMonthPresent: item.JuneMonthPresent,\r\n            JulyMonthPresent: item.JulyMonthPresent,\r\n            AugustMonthPresent: item.AugustMonthPresent,\r\n            SeptemberMonthPresent: item.SeptemberMonthPresent,\r\n            OctoberMonthPresent: item.OctoberMonthPresent,\r\n            NovemberMonthPresent: item.NovemberMonthPresent,\r\n            DecemberMonthPresent: item.DecemberMonthPresent,\r\n            NewBooth: true,\r\n            Status: \"N\",\r\n            StartDateList: item.StartDateList,\r\n            DisableStartDate: false,\r\n            TaxModel: item.TaxModel\r\n          }\r\n          newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n        }\r\n        else {\r\n          this.selectedMonthlyBooths[extendedBoothIndex].RentEndPeriod = item.RentEndPeriod;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].RentalSavedEndDate = item.RentalSavedEndDate;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].RentalEndDate = item.RentalEndDate;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].MktDays = item.MktDays;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Rent = item.Rent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].SalesTax = item.SalesTax;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].CityTax = item.CityTax;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].PerDiem = item.PerDiem;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].PerDiemRent = item.PerDiemRent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Sunday = item.Sunday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Monday = item.Monday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Tuesday = item.Tuesday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Wednesday = item.Wednesday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Thursday = item.Thursday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Friday = item.Friday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Saturday = item.Saturday;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Reservation = item.Reservation;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Drop = item.Drop;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].January = item.January;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].February = item.February;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].March = item.March;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].April = item.April;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].May = item.May;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].June = item.June;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].July = item.July;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].August = item.August;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].September = item.September;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].October = item.October;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].November = item.November;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].December = item.December;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].JanuaryMonthPresent = item.JanuaryMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].FebruaryMonthPresent = item.FebruaryMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].MarchMonthPresent = item.MarchMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].AprilMonthPresent = item.AprilMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].MayMonthPresent = item.MayMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].JuneMonthPresent = item.JuneMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].JulyMonthPresent = item.JulyMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].AugustMonthPresent = item.AugustMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].SeptemberMonthPresent = item.SeptemberMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].OctoberMonthPresent = item.OctoberMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].NovemberMonthPresent = item.NovemberMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DecemberMonthPresent = item.DecemberMonthPresent;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableJanMonth = item.JanRent || item.JanRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableFebMonth = item.FebRent || item.FebRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableMarMonth = item.MarRent || item.MarRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableAprMonth = item.AprRent || item.AprRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableMayMonth = item.MayRent || item.MayRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableJunMonth = item.JunRent || item.JunRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableJulMonth = item.JulRent || item.JulRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableAugMonth = item.AugRent || item.AugRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableSepMonth = item.SepRent || item.SepRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableOctMonth = item.OctRent || item.OctRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableNovMonth = item.NovRent || item.NovRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableDecMonth = item.DecRent || item.DecRent == 0 ? false : true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].NewBooth = false;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].Status = \"N\";\r\n          this.selectedMonthlyBooths[extendedBoothIndex].StartDateList = item.StartDateList;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].DisableStartDate = true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].ExtendRental = true;\r\n          this.selectedMonthlyBooths[extendedBoothIndex].TaxModel = item.TaxModel;\r\n        }\r\n        this.selectedMonthlyBooths = this.selectedMonthlyBooths.concat(newbooths);    \r\n      });\r\n    }\r\n    if (this.sharedDataService.paymentSharedData.MonthlyOtherRentalCharges.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.MonthlyOtherRentalCharges.forEach((el) => {\r\n        if (el.MonthOtherRentalId == 0) {\r\n          const year = el.YearMonth.substr(0, 4);\r\n          const month = el.YearMonth.substr(4, 2);\r\n          const monthInWord = this.datePipe.transform(new Date(year, month - 1), 'MMMM');\r\n          const extractedYearMonth = `${monthInWord} ${year}`;\r\n          newItem = [];\r\n          var ob = {\r\n            Id: el.OtherItemId,\r\n            MonthOtherRentalId: el.MonthOtherRentalId,\r\n            OtherItem: el.OtherItemName,\r\n            OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n            Quantity: el.Quantity,\r\n            OtherItemtotal: this.customCurrency.transform(el.OtherItemCharge),\r\n            RentalMonth: extractedYearMonth,\r\n            Recurring: el.Recurring,\r\n            SalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n            CityTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n            BoothNo: el.BoothNumber,\r\n            Reference: el.Reference,\r\n            NewItem: true\r\n          }\r\n          newItem.push(JSON.parse(JSON.stringify(ob)));\r\n        }      \r\n\r\n        if (newItem.length > 0) {\r\n          this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n        }\r\n      });\r\n    }\r\n    this.totalRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.RentalCharge);\r\n    this.totalOtherRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.OtherCharge.toString());\r\n    this.totalSalesTax = parseFloat(this.sharedDataService.paymentSharedData.SalesTax.toString());\r\n    this.totalSecondLeveltax = parseFloat(this.sharedDataService.paymentSharedData.SecLevelTax.toString());\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    this.sharedDataService.paymentSharedData = \"\";\r\n    this.getDiscounts();\r\n  }\r\n\r\n  setDefaultRentalItem(args, selectedItems) {\r\n    selectedItems.Quantity = 0\r\n    selectedItems.OtherItemtotal = 0\r\n    if (args.srcElement.checked) {\r\n      selectedItems.otherItemChecked = true;\r\n      selectedItems.Quantity = 1\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString());\r\n      this.selectedOtherCharges.push({\r\n        Id: selectedItems.Id,\r\n        OtherItem: selectedItems.OtherItem,\r\n        OtherItemCharge: selectedItems.OtherItemCharge,\r\n        Quantity: selectedItems.Quantity,\r\n        OtherItemtotal: selectedItems.OtherItemtotal,\r\n        othChgBooths: selectedItems.othChgBooths,\r\n        Recurring: selectedItems.Recurring,\r\n        Reference:selectedItems.Reference,\r\n        RentalMonth: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']\r\n      });\r\n    } else {\r\n      selectedItems.otherItemChecked = false;\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id);\r\n      if (index !== -1) {\r\n        this.selectedOtherCharges.splice(index, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  selectedBoothsFromLayout(data) {\r\n    window.scrollTo(0, 0);\r\n    this.selectedMonthlyBoothData = data;\r\n    this.displayLayout = false;  \r\n    this.getWebRentalSetting();\r\n    this.validateAndAddSelectedBoothsToGrid();\r\n  }\r\n\r\n  closeLayoutForm() {\r\n    this.displayLayout = false;\r\n    this.getMarketDays();\r\n  }\r\n\r\n  async getBoothsAndItemsForOtherCharges() {\r\n    this.boothsForOtherCharge = [];\r\n    this.selectedOtherCharges = [];\r\n    if (this.OtherChargesPeriod) {\r\n      this.otherRentalCharges = [];\r\n      this.otherItemList = [];\r\n      await this.getOtherRentalItems();\r\n    }\r\n    const uniqueBoothNumbers = new Map<number, boolean>();\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n      this.selectedMonthlyBooths.forEach((item) => {\r\n        if (item.RentStartPeriod == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n          const boothNumber = item.BoothNumber;\r\n          if (!uniqueBoothNumbers.has(boothNumber)) {\r\n            this.boothsForOtherCharge.push({ BoothNumber: item.BoothNumber })\r\n            uniqueBoothNumbers.set(boothNumber, true); // Set the booth number in the Map\r\n          }\r\n        }\r\n      });\r\n    }\r\n    this.boothsForOtherCharge.sort((a, b) => {\r\n      if (a.BoothNumber < b.BoothNumber) {\r\n        return -1;\r\n      }\r\n      if (a.BoothNumber > b.BoothNumber) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });    \r\n  }\r\n\r\n  disableSavePayment() {\r\n    var vendorBalance = this.priorBalance + this.totalCharge;\r\n    if (vendorBalance > 0) {\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n\r\n  addOtherCharges() {\r\n    if (this.selectedOtherCharges) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedOtherCharges.map((el, i) => {\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: el.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: el.Quantity,\r\n          OtherItemCharge: el.OtherItemCharge.includes('(') && el.OtherItemCharge.includes(')') ? (-1) * parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n        const index = this.selectedOtherItems.findIndex(item => item.Id === el.Id && item.RentalMonth == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'] && item.NewItem == true && item.BoothNo === el.othChgBooths && item.Reference == el.Reference);\r\n        this.subscriptions.push(this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          var newItem = [];\r\n          if (index !== -1) {\r\n            var otherItemTotal = this.selectedOtherItems[index].OtherItemtotal;\r\n            var salesTax = this.selectedOtherItems[index].SalesTax;\r\n            var cityTax = this.selectedOtherItems[index].CityTax;\r\n            this.totalOtherRentalCharge -= otherItemTotal.toString().includes('(') && otherItemTotal.toString().includes(')') ? -1 * parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= salesTax.toString().includes('(') && salesTax.toString().includes(')') ? -1 * parseFloat(salesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(salesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= cityTax.toString().includes('(') && cityTax.toString().includes(')') ? -1 * parseFloat(cityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(cityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            \r\n            const ob = {\r\n              Id: el.Id,\r\n              MonthOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalMonth: el.RentalMonth,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              MonthlyRentalIds:''\r\n            }\r\n            this.selectedOtherItems[index] = ob;\r\n            this.gridOtherRental.refresh();\r\n          }\r\n          else {\r\n            const ob = {\r\n              Id: el.Id,\r\n              MonthOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalMonth: el.RentalMonth,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              MonthlyRentalIds : ''\r\n            }\r\n            newItem.push(JSON.parse(JSON.stringify(ob)));\r\n            this.isdirty = true;\r\n            this.isFormDirty.emit(true);\r\n          }\r\n\r\n          this.totalOtherRentalCharge += el.OtherItemtotal.toString().includes('(') && el.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          \r\n          this.getDiscounts();\r\n          if (newItem.length > 0) {\r\n            this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n          }\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }));\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n      const modal = this.modalMonthlyOtherCharges.nativeElement;\r\n      if (modal.classList.contains('show')) {\r\n        modal.style.display = 'none';\r\n        modal.classList.remove('show');\r\n      }\r\n    }\r\n  }\r\n\r\n  cancelRental() {\r\n    if (this.isdirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isFormDirty.emit(false);\r\n          this.isCancelClicked.emit('2');\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n      this.isFormDirty.emit(false);\r\n      this.isCancelClicked.emit('2');\r\n    }\r\n  }\r\n\r\n  rentOnlineNextTab(){\r\n    this.saveRentalWithPayment();\r\n    this.bookingFormCompleted.emit(true);\r\n  }\r\n\r\n  saveRentalWithPayment() {\r\n    this.isdirty = false;\r\n    this.isFormDirty.emit(false);\r\n    this.loaderIcon = Promise.resolve(true);\r\n    var obj = {\r\n      VendorId: this.vendorId,\r\n      RentalType: 2,\r\n      PriorBalance: this.priorBalance,\r\n      RentalCharge: this.totalRentalCharge,\r\n      SalesTax: this.totalSalesTax,\r\n      SecLevelTax: this.totalSecondLeveltax,\r\n      OtherCharge: this.totalOtherRentalCharge,\r\n      RentalNotes: \"\",\r\n      PaymentDone: false,\r\n      ExemptResaleNo: false,\r\n      ExemptResaleReason: \"\",\r\n      ResaleNo: this.resaleNo,\r\n      PaymentDueDate: null,\r\n      MonthlyRentalBooth: [],\r\n      MonthlyOtherRentalCharges: [],\r\n      ReturnData: [],\r\n      ReceiptSettings: \"\",\r\n      PaymentOnly: false,\r\n      AppliedDiscountModel: [],\r\n      DiscountAmount: this.totalDiscountCharge ?? 0,\r\n      BookingFee: this.bookingFeeAmount ?? 0\r\n    }\r\n\r\n    var objSelectedBooth = [];\r\n    var objReturnData = [];\r\n    if (this.selectedMonthlyBooths.length > 0) {\r\n      this.selectedMonthlyBooths.forEach((item, i) => {\r\n        const rentalStartDateYear = new Date(item.RentalEndDate).getFullYear();\r\n        const rentalStartDateMonth = new Date(item.RentalEndDate).getMonth() + 1;\r\n        const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n        objSelectedBooth.push({\r\n          MonthlyRentalId: item.MonthlyRentalId,\r\n          BoothNumber: item.BoothNumber,\r\n          BoothTypeId: item.BoothTypeId,\r\n          ProductId: item.Product,\r\n          BoothType: item.BoothType,        \r\n          RentalStartDate: new Date(item.RentalStartDate),\r\n          RentalEndDate: new Date(item.RentalEndDate),\r\n          RentalYearMonth: rentalStartDateYearMonth,\r\n          BoothReserved: item.Reservation,\r\n          DoNotRenew: item.Drop,\r\n          PerDiem: item.PerDiem,\r\n          Monday: item.Monday,\r\n          Tuesday: item.Tuesday,\r\n          Wednesday: item.Wednesday,\r\n          Thursday: item.Thursday,\r\n          Friday: item.Friday,\r\n          Saturday: item.Saturday,\r\n          Sunday: item.Sunday,\r\n          PerDiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n          RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n          FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n          MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n          AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n          MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n          JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n          JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n          AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n          SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n          OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n          NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n          DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n          BookingLog: i + 1,\r\n          TaxModel: item.TaxModel\r\n        })\r\n\r\n        if (item.NewBooth || item.ExtendRental) {\r\n          objReturnData.push({\r\n            MonthlyRentalId: item.MonthlyRentalId,\r\n            BoothNumber: item.BoothNumber,\r\n            BoothType: item.BoothType,\r\n            BoothTypeId: item.BoothTypeId,\r\n            BoothDescription: item.BoothDescription,\r\n            Product: item.Product,\r\n            RentStartPeriod: item.RentStartPeriod,\r\n            RentEndPeriod: item.RentEndPeriod,\r\n            RentalSavedEndDate: item.RentalEndDate,\r\n            RentalStartDate: item.RentalStartDate,\r\n            RentalEndDate: item.RentalEndDate,\r\n            MktDays: item.MktDays,\r\n            Rent: item.Rent,\r\n            SalesTax: item.SalesTax,\r\n            CityTax: item.CityTax,\r\n            PerDiem: item.PerDiem,\r\n            PerDiemRent: item.PerDiemRent,\r\n            Sunday: item.Sunday,\r\n            Monday: item.Monday,\r\n            Tuesday: item.Tuesday,\r\n            Wednesday: item.Wednesday,\r\n            Thursday: item.Thursday,\r\n            Friday: item.Friday,\r\n            Saturday: item.Saturday,\r\n            Reservation: item.Reservation,\r\n            Drop: item.Drop,\r\n            January: item.January,\r\n            February: item.February,\r\n            March: item.March,\r\n            April: item.April,\r\n            May: item.May,\r\n            June: item.June,\r\n            July: item.July,\r\n            August: item.August,\r\n            September: item.September,\r\n            October: item.October,\r\n            November: item.November,\r\n            December: item.December,\r\n            JanuaryMonthPresent: item.January ? true : false,\r\n            FebruaryMonthPresent: item.February ? true : false,\r\n            MarchMonthPresent: item.March ? true : false,\r\n            AprilMonthPresent: item.April ? true : false,\r\n            MayMonthPresent: item.May ? true : false,\r\n            JuneMonthPresent: item.June ? true : false,\r\n            JulyMonthPresent: item.July ? true : false,\r\n            AugustMonthPresent: item.August ? true : false,\r\n            SeptemberMonthPresent: item.September ? true : false,\r\n            OctoberMonthPresent: item.October ? true : false,\r\n            NovemberMonthPresent: item.November ? true : false,\r\n            DecemberMonthPresent: item.December ? true : false,\r\n            JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n            FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n            MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n            AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n            MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n            JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n            JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n            AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n            SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n            OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n            NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n            DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n            NewBooth: true,\r\n            Status: \"N\",\r\n            StartDateList: item.StartDateList,\r\n            DisableStartDate: false,\r\n            ExtendRental: item.ExtendRental,\r\n            TaxModel: item.TaxModel\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    if (objSelectedBooth.length > 0)\r\n      obj.MonthlyRentalBooth = objSelectedBooth;\r\n\r\n    if (objReturnData.length > 0) {\r\n      obj.ReturnData = objReturnData;\r\n    }\r\n\r\n    var objSelectedOtherCharge = [];\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.selectedOtherItems.forEach((item) => {\r\n        const otherRentalYear = new Date(item.RentalMonth.split('-')[0]).getFullYear();\r\n        const otherRentalMonth = new Date(item.RentalMonth.split('-')[0]).getMonth() + 1;\r\n        const otherRentalYearMonth = `${otherRentalYear}${otherRentalMonth < 10 ? '0' : ''}${otherRentalMonth}`;\r\n\r\n        objSelectedOtherCharge.push({\r\n          OtherItemId: item.Id,\r\n          MonthOtherRentalId: item.MonthOtherRentalId,\r\n          Quantity: item.Quantity,\r\n          YearMonth: otherRentalYearMonth,\r\n          OtherItemName: item.OtherItem,\r\n          OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n          BoothNumber: item.BoothNo,\r\n          Recurring: item.Recurring,\r\n          Reference: item.Reference,\r\n          OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          MonthlyRentalIds: item.MonthlyRentalIds\r\n        })\r\n      });\r\n    }\r\n    if (objSelectedOtherCharge.length > 0)\r\n      obj.MonthlyOtherRentalCharges = objSelectedOtherCharge;\r\n\r\n    var objDiscountData = [];\r\n    if (this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0) {\r\n      this.vendorDiscountPlans.forEach((item) => {\r\n        if (item.CheckAll) {\r\n          objDiscountData.push({\r\n            PlanId: item.PlanSeqId,\r\n            DiscountAmount: item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n            OtherCharges: item.OtherItems,\r\n            SalesTax: item.SalesTaxApplied,\r\n            SecondLevelTax: item.SecondLevelTaxApplied,\r\n            DiscountType: item.DiscountType == DiscountType.Percentage ? \"0\" : \"1\",\r\n            DiscountValue: item.DiscountValue,\r\n            SalesTaxAmount: item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n            SecondLevelTaxAmount: item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n          })\r\n        }\r\n      });\r\n    }\r\n    if (objDiscountData.length > 0)\r\n      obj.AppliedDiscountModel = objDiscountData;   \r\n\r\n    if (!this.newVendor) {\r\n      this.sharedDataService.paymentSharedData = obj;\r\n      var url = 'vendor-payments/' + this.marketId;\r\n      this.router.navigate([url]);\r\n    }\r\n    else{\r\n      this.rentalBookingData.emit(obj);\r\n    }\r\n\r\n    var temp = {\r\n      TempRecordNo: this.tempRecordNo.toString(),\r\n      BoothNumber: \"\"\r\n    }\r\n    this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n    }));\r\n  }\r\n\r\n  deleteSelectedBooth(data) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Are you sure you want to delete the selected Booth?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          const index = this.selectedMonthlyBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentStartPeriod == data.RentStartPeriod && selectedBooth.RentEndPeriod == data.RentEndPeriod\r\n            && selectedBooth.Sunday == data.Sunday && selectedBooth.Monday == data.Monday && selectedBooth.Tuesday == data.Tuesday && selectedBooth.Wednesday == data.Wednesday\r\n            && selectedBooth.Thursday == data.Thursday && selectedBooth.Friday == data.Friday && selectedBooth.Saturday == data.Saturday\r\n          );\r\n          if (index !== -1) {\r\n            this.selectedMonthlyBooths.splice(index, 1);\r\n          }\r\n          if (this.tempRecordNo) {\r\n            const temp = {\r\n              TempRecordNo: this.tempRecordNo.toString(),\r\n              BoothNumber: data.BoothNumber,\r\n              StartDate: new Date(data.RentalStartDate),\r\n              RentalType: 2,\r\n              EndDate: new Date(data.RentalEndDate),\r\n              Sunday: data.Sunday,\r\n              Monday: data.Monday,\r\n              Tuesday: data.Tuesday,\r\n              Wednesday: data.Wednesday,\r\n              Thursday: data.Thursday,\r\n              Friday: data.Friday,\r\n              Saturday: data.Saturday\r\n            }\r\n            this.subscriptions.push(\r\n              this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n              })\r\n            );\r\n          }  \r\n          this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.gridMonthlyRental.refresh();\r\n          this.getDiscounts();\r\n        }\r\n    });\r\n  }\r\n\r\n  deleteOtherRentalCharges(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Other Charges?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth);\r\n        if (index !== -1) {\r\n          this.selectedOtherItems.splice(index, 1);\r\n        }\r\n\r\n        var selectedItems = this.otherRentalCharges.findIndex(item => item.Id == data.Id);\r\n        if (selectedItems != -1) {\r\n          this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n            if (response) {\r\n              const masterChargeRecord = response.filter(item => item.OtherItemId == data.Id);\r\n              if (masterChargeRecord) {\r\n                this.otherRentalCharges[selectedItems].Quantity = 0;\r\n                this.otherRentalCharges[selectedItems].othChgBooths = \"none\";\r\n                this.otherRentalCharges[selectedItems].OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemMonthlyCharge);\r\n                this.otherRentalCharges[selectedItems].OtherItemtotal = this.customCurrency.transform('0');\r\n                this.otherRentalCharges[selectedItems].Reference = \"\"\r\n                this.otherRentalCharges[selectedItems].Recurring = masterChargeRecord[0].Recurring\r\n              }\r\n            }\r\n          }, (err) => {\r\n          }));\r\n        }\r\n\r\n        this.totalOtherRentalCharge -= data.OtherItemtotal.includes('(') && data.OtherItemtotal.includes(')') ? -1 * parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n      }\r\n    });\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"rentalForm\">\r\n    <div *ngIf=\"!displayLayout\">\r\n        <div class=\"row\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4\"></div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 mblRightToLeft mt-1\">\r\n                        <label class=\"mt-2 mb-0\">Select Layout Part</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mblRightToLeft mt-2\">\r\n                        <select class=\"form-control respLayoutPart\" formControlName=\"marketParts\">\r\n                            <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">{{item.PartDescription}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-3 col-xl-3 mblRightToLeft mt-2\">\r\n                        <button class=\"btn btn-primary py-2\" (click)=\"openLayout()\">Select Booth</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        * Select Market Day(s) Here\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush\">\r\n                        <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkMonday\"\r\n                                    formControlName=\"marketWeekMonday\" (change)=\"toggleDaySelection('Monday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkMonday\" i18n>\r\n                                    Monday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkTuesday\" formControlName=\"marketWeekTuesday\"\r\n                                (change)=\"toggleDaySelection('Tuesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkTuesday\" i18n>\r\n                                    Tuesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkWednesday\" formControlName=\"marketWeekWednesday\"\r\n                                (change)=\"toggleDaySelection('Wednesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkWednesday\" i18n>\r\n                                    Wednesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkThursday\" formControlName=\"marketWeekThursday\"\r\n                                (change)=\"toggleDaySelection('Thursday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkThursday\" i18n>\r\n                                    Thursday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkFriday\" formControlName=\"marketWeekFriday\"\r\n                                (change)=\"toggleDaySelection('Friday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkFriday\" i18n>\r\n                                    Friday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSaturday\" formControlName=\"marketWeekSaturday\"\r\n                                (change)=\"toggleDaySelection('Saturday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSaturday\" i18n>\r\n                                    Saturday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSunday\" formControlName=\"marketWeekSunday\"\r\n                                (change)=\"toggleDaySelection('Sunday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSunday\" i18n>\r\n                                    Sunday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        Weekly Market(s):\r\n                    </div>\r\n                    <div class=\"mt-1\">\r\n                        <select class=\"form-control\" (change)=\"checkSelectedDates()\" formControlName=\"rentalStartDate\">\r\n                            <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalStartDays\">\r\n                                {{item.RentalStartDays}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"mt-1\">\r\n                        <select class=\"form-control\" (change)=\"checkSelectedDates()\" formControlName=\"rentalEndDate\">\r\n                            <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalEndDays\">\r\n                                {{item.RentalEndDays}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"row mt-1 mb-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Date</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"weeklyRentalStartDates\">\r\n                                <option *ngFor=\"let item of weeklyRentalStartDates;\" [value]=\"item.startDate\">\r\n                                    {{item.startDate}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"vendorDetails mt-2\">\r\n                    <ejs-grid #gridWeeklyRental [dataSource]='selectedWeeklyBooths' (created)=\"created($event)\"\r\n                        class=\"Table_Height_store table-striped table-ipad\" [gridLines]='lines' height=\"150\"\r\n                        [allowSelection]=\"true\" allowSorting='true' [sortSettings]='sortOptions'\r\n                        [textWrapSettings]=\"textWrapSettings\" allowTextWrap=\"true\">\r\n                        <e-columns>\r\n                            <e-column field='BoothNumber' headerText='Booth#' textAlign='left' width=130>\r\n                            </e-column>\r\n                            <e-column field='BoothDescription' headerText='Booth Description' textAlign='left'\r\n                                width=210>\r\n                            </e-column>\r\n                            <e-column field='Product' headerText='Product' textAlign='left' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.Product\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"productChange(data)\">\r\n                                            <option *ngFor=\"let item of vendorProducts\" [value]=\"item.ProductId\">\r\n                                                {{item.ProductName}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Sunday' headerText='Sun' textAlign='left' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\" [(ngModel)]=\"data.Sunday\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Monday' textAlign='left' headerText='Mon' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Monday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Tuesday' textAlign='left' headerText='Tue' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Tuesday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Wednesday' textAlign='left' headerText='Wed' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Wednesday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Thursday' textAlign='left' headerText='Thu' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Thursday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Friday' textAlign='left' headerText='Fri' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Friday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Saturday' textAlign='left' headerText='Sat' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Saturday\"\r\n                                                    disabled=\"true\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentalStartDate' headerText='Rental Start Date' textAlign='left' width=200>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.RentalStartDate\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" [disabled]=\"data.DisableStartDate\"\r\n                                            (blur)=\"updateBoothData(data)\">\r\n                                            <option *ngFor=\"let item of data.StartDateList\" [value]=\"item.startDate\">\r\n                                                {{item.startDate}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentStartPeriod' headerText='Rent Start Period' textAlign='left' width=200>\r\n                            </e-column>\r\n                            <e-column field='RentEndPeriod' headerText='Rent End Period' textAlign='left' width=200>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\"\r\n                                        (click)=\"rentalExtension(RentalExtension,data)\">{{data.RentEndPeriod}}</span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='MktDays' headerText='Mkt Days' textAlign='left' width=130>\r\n                            </e-column>\r\n                            <e-column field='PerDiemRent' headerText='PerDiem Rent' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='Rent' headerText='Rent' textAlign=\"right\" width=140>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign=\"right\" width=180>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign=\"right\" width=180>\r\n                            </e-column>\r\n                            <e-column field='RentalEndDate' headerText='Rental End Date' textAlign='left' width=170>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteSelectedBooth(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n                <div class=\"row\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <div class=\"col-12 text-right\" style=\"margin-top: 18px\">\r\n                        <button class=\"btn btn-primary\" class=\"btn btn-primary btnAdd\" data-toggle=\"modal\"\r\n                            data-target=\"#modalWeeklyOtherCharges\">Select Other Item</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <ejs-grid #gridOtherRental [dataSource]='selectedOtherItems'\r\n                        class=\"Table_Height_store table-striped table-ipad\" height='150' allowSorting='true'\r\n                        [sortSettings]='sortOtherItemsOptions'>\r\n                        <e-columns>\r\n                            <e-column field='OtherItem' headerText='Item' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='Recurring' headerText='Rec' textAlign='left' width=130>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Recurring\"\r\n                                                    (change)=\"updateOtherItem(data)\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='OtherItemCharge' headerText='Charge' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='Quantity' headerText='Qty' width=100>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" style=\"padding: 0px;text-align: center;\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Quantity\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (blur)=\"updateOtherItem(data)\"\r\n                                            (keydown)=\"onCheckNumKeyPress($event)\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='BoothNo' headerText='Booth#' width=100>\r\n                            </e-column>\r\n                            <e-column field='RentalWeek' headerText='Week' width=240 textAlign='left'>\r\n                            </e-column>\r\n                            <e-column field='OtherItemtotal' headerText='Total' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign='right' width=150>\r\n                            </e-column>\r\n                            <e-column field='Reference' headerText='Reference' width=160>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" (blur)=\"updateOtherItem(data)\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Reference\"\r\n                                            [ngModelOptions]=\"{standalone: true}\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='120'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteOtherRentalCharges(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n\r\n                <div class=\"vendorDetails1 mt-2\">\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"!newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\"\r\n                            (click)=\"saveRentalWithPayment()\">Pay</button>\r\n                    </div>\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\"\r\n                            (click)=\"rentOnlineNextTab()\">Next</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- Modal for Adding Other Charges -->\r\n        <div class=\"modal fade bd-example-modal-xl\" #modalWeeklyOtherCharges id=\"modalWeeklyOtherCharges\" tabindex=\"-1\"\r\n            role=\"dialog\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n            <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\r\n                <div class=\"modal-content contentNewBooths\">\r\n                    <div class=\"modal-header modal-headerNewBooths\">\r\n                        <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Other Charges</h5>\r\n                        <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                            <span aria-hidden=\"true\">&times;</span>\r\n                        </button>\r\n                    </div>\r\n                    <div class=\"modal-body modal-bodyNewBooths\" formGroupName=\"otherItemsScreen\">\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label i18n>Rental Week</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <select class=\"form-control\" formControlName=\"otherChargeMarketWeek\"\r\n                                    (change)=\"getBoothsAndItemsForOtherCharges()\">\r\n                                    <option *ngFor=\"let item of weeklyMarketDays;\" [value]=\"item.RentalStartDays\">\r\n                                        {{item.RentalStartDays}}</option>\r\n                                </select>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                                <label>Search Value</label>\r\n                            </div>\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                                <input type=\"text\" class=\"form-control\" formControlName=\"otherItemSearchText\"\r\n                                    (keyup)=\"searchOtherItem()\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-2\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row\" style=\"height: 55vh; overflow-y: scroll;\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-2\">\r\n                                <div class=\"availableBoothsHeading pt-1 pb-1\">\r\n                                    <label i18n>Other Charges</label>\r\n                                </div>\r\n                                <div class=\"scroll_outer\">\r\n                                    <div class=\"scroll_inner_small scroll-ipad\">\r\n                                        <table class=\"table table-striped table-hover followup-table mb-0\">\r\n                                            <thead>\r\n                                                <tr>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"40\" i18n></th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"200\" i18n>Items</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"50\" i18n>Rec</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"100\"\r\n                                                        *ngIf=\"displayOtherChargeByBooth\" i18n>Booth#</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Charges\r\n                                                    </th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Qty</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"130\" i18n>Total</th>\r\n                                                    <th class=\"text-left tblAvailableBooths\" width=\"160\" i18n>Reference\r\n                                                    </th>\r\n                                                </tr>\r\n                                            </thead>\r\n                                            <tbody>\r\n                                                <tr *ngFor=\"let item of otherRentalCharges\">\r\n                                                    <td class=\"text-left\" style=\"width: 10%;\">\r\n                                                        <label class=\"pure-material-checkbox\">\r\n                                                            <input type=\"checkbox\" [checked]=\"isDateSelected(item)\"\r\n                                                                (change)=\"setDefaultRentalItem($event,item)\"\r\n                                                                [(ngModel)]=\"item.isOtherItemChecked\"\r\n                                                                [ngModelOptions]=\"{standalone: true}\">\r\n                                                            <span></span>\r\n                                                        </label>\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 35%;\">{{item.OtherItem}}</td>\r\n                                                    <td class=\"text-left\">\r\n                                                        <div class=\"checkbox-wrapper mt-2\" style=\"width: 15%;\">\r\n                                                            <label class=\"pure-material-checkbox \">\r\n                                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                                    [(ngModel)]=\"item.Recurring\"\r\n                                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                                    (change)=\"otherItemUpdate(item)\"\r\n                                                                    [disabled]=\"!item.otherItemChecked\">\r\n                                                                <span></span>\r\n                                                            </label>\r\n                                                        </div>\r\n                                                    </td>\r\n                                                    <td class=\"text-left tblAvailableBooths\" style=\"width: 35%;\"\r\n                                                        *ngIf=\"displayOtherChargeByBooth\">\r\n                                                        <select class=\"form-control\" [(ngModel)]=\"item.othChgBooths\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (change)=\"otherItemUpdate(item)\"\r\n                                                            [disabled]=\"!item.otherItemChecked\">\r\n                                                            <option value=\"none\">None</option>\r\n                                                            <option *ngFor=\"let booth of boothsForOtherCharge\"\r\n                                                                [value]=\"booth.BoothNumber\">{{booth.BoothNumber}}\r\n                                                            </option>\r\n                                                        </select>\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 30%;\">\r\n                                                        <input type=\"text\" class=\"form-control text-right pr-1\"\r\n                                                            [(ngModel)]=\"item.OtherItemCharge\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (change)=\"otherItemUpdate(item)\" disabled=\"true\">\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 25%;\"><input type=\"number\"\r\n                                                            class=\"form-control text-right\" [(ngModel)]=\"item.Quantity\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\" min=\"1\"\r\n                                                            (ngModelChange)=\"otherItemUpdate(item)\"\r\n                                                            [disabled]=\"!item.otherItemChecked\"\r\n                                                            onkeydown=\"return false\"></td>\r\n                                                    <td class=\"text-right\" style=\"width: 20%;\">{{item.OtherItemtotal}}\r\n                                                    </td>\r\n                                                    <td class=\"text-left\" style=\"width: 35%;\">\r\n                                                        <input type=\"text\" class=\"form-control\"\r\n                                                            [(ngModel)]=\"item.Reference\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (keyup)=\"otherItemUpdate(item)\"\r\n                                                            [disabled]=\"!item.otherItemChecked\">\r\n                                                    </td>\r\n                                                </tr>\r\n                                            </tbody>\r\n                                        </table>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"modal-footer d-inline pt-2\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right\">\r\n                                <button class=\"btn btn-primary mr-1\" (click)=\"addOtherCharges()\" data-dismiss=\"modal\"\r\n                                    aria-label=\"Close\" i18n>OK</button>\r\n                                <button class=\"btn btn-outline-primary\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                                    i18n>Cancel</button>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <!-- Ends Modal for Adding Other Charges -->\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"displayLayout\">\r\n    <app-rentallayout-online [marketId]=\"marketId\" [layoutParts]=\"layoutParts\" [LayoutData]=\"weeklyLayoutData\"\r\n        rentalType=\"CW\" (selectedBoothsFromLayout)=\"selectedBoothsFromLayout($event)\" (CloseLayout)=\"closeLayoutForm()\"\r\n        (removeBoothCharges)=\"removeBoothCharges($event)\"></app-rentallayout-online>\r\n</div>\r\n\r\n<!-- Modal for Resale Number -->\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>{{ResaleOrBusinessHeader}}</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"resaleNoDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"businessLicenseDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Business License Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseNumberInp\">Business License Number</label>\r\n                            <input type=\"text\" id=\"businesLicenseNumberInp\" class=\"form-control\"\r\n                                [(ngModel)]=\"businessLicenseNumber\" maxlength=\"30\" />\r\n                        </div>\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseExpDateInp\">Business Expiry Date</label>\r\n                            <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false id=\"businesLicenseExpDateInp\"\r\n                                [(ngModel)]=\"businessLicenseExpiryDate\" i18n-placeholder=\"Business License Expiry Date\"\r\n                                placeholder=\"Business License Expiry Date\" [min]=\"minExpiryDate\"></ejs-datepicker>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n\r\n                                (click)=\"AddBoothsOnGridOnValidationSucess()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- Modal for Resale Number -->","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GridComponent, GridLine, SortSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { catchError, forkJoin, of, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport Swal from 'sweetalert2';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-combinedweeklyrental-online',\r\n  templateUrl: './combinedweeklyrental-online.component.html',\r\n  styleUrls: ['./combinedweeklyrental-online.component.scss', '../rent-online.component.scss']\r\n})\r\nexport class CombinedweeklyrentalOnlineComponent implements OnInit, OnDestroy {\r\n  rentalForm : FormGroup;\r\n  marketId;\r\n  vendorId;\r\n  public loaderIcon: Promise<boolean>;\r\n  sunday = false;\r\n  monday = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  AllowRentingOtherItems = false;\r\n  public textWrapSettings: any = { wrapMode: 'Both' }; // Enable text wrapping\r\n  selectedMarketDays=[];\r\n  parts=[];\r\n  weeklyRentalStartDates = [];\r\n  defaultPart;\r\n  weeklyMarketDays = [];\r\n  boothsForOtherCharge = [];\r\n  selectedOtherCharges = [];\r\n  excludedMarketDays=[];\r\n  ResaleNumberRequired  = false;\r\n  OtherChargesPeriod = false;\r\n  selectedWeeklyBoothData = [];\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  resaleNoDisplay = false;\r\n  businessLicenseDisplay = false;\r\n  ResaleOrBusinessHeader = \"\";\r\n  businessLicenseNumber;\r\n  businessLicenseExpiryDate;\r\n  vendorRentalDays = [];\r\n  marketDayCountForResale = 0;\r\n  resaleOptionSelected = false;  \r\n  selectedBoothsForRental = [];\r\n  tempRecordNo = 0;\r\n  perDiemRentApplicable = false;\r\n  vendorProducts = [];\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  totalDiscountCharge;\r\n  vendorDiscountPlans= [];\r\n  selectedWeeklyBooths = []\r\n   otherRentalCharges = [];\r\n  otherItemList = [];\r\n  public lines: GridLine;\r\n  selectedOtherItems = []\r\n  priorBalance = 0.00;\r\n  ApplyBookingFee = false;\r\n  ApplyBookingFeeId;\r\n  bookingFeeAmount;\r\n  weeklyLayoutData;\r\n  selectedDates=[];\r\n  displayLayout = false;\r\n  layoutParts;\r\n  warnExcessPayment = false;\r\n  warnZeroPayment = false;\r\n  RentalTaxPercentage = 0;\r\n  OtherRentalTaxPercentage = 0;\r\n  RentalSecondTaxPercentage = 0;\r\n  OtherRentalSecondTaxPercentage = 0;\r\n  DisplayPayDueDate = false;\r\n  DisplaySpecificDate = false;\r\n  DisplayOptionValue = 0;\r\n  secondTaxName = \"\";\r\n  displaySalesTax = false;\r\n  displayCityTax = false;\r\n  displayOtherChargeByBooth = false;\r\n  displayOtherChargeSalesTax = false;\r\n  displayOtherChargeCityTax = false;\r\n  isdirty = false;\r\n  @Input() newVendor;\r\n  @Output() bookingFormCompleted = new EventEmitter<any>(); \r\n  @Output() rentalBookingData = new EventEmitter<any>();\r\n  @Output() isFormDirty = new EventEmitter<any>(); \r\n  @Output() isCancelClicked = new EventEmitter<any>(); \r\n  @Output() resaleNoInputRequired = new EventEmitter<any>();\r\n  @Output() businessLicenseRequired = new EventEmitter<any>();\r\n  @ViewChild('modalAddNewWeeklyBooths', { static: false }) modalAddNewWeeklyBooths: ElementRef;\r\n  @ViewChild('modalWeeklyOtherCharges', { static: false }) modalWeeklyOtherCharges: ElementRef;\r\n  @ViewChild('gridOtherRental', { static: false }) public gridOtherRental: GridComponent;\r\n  @ViewChild('gridWeeklyRental', { static: false }) public gridWeeklyRental: GridComponent;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  sortOptions: SortSettingsModel = {\r\n    columns: [{ field: 'RentalStartDate', direction: 'Ascending' },{ field: 'BoothNumber', direction: 'Ascending' }]\r\n  };\r\n  sortOtherItemsOptions: SortSettingsModel = {\r\n    columns: [{ field: 'OtherItem', direction: 'Ascending' },{ field: 'BoothNo', direction: 'Ascending' }]\r\n  };\r\n  private subscriptions: Subscription[] = [];\r\n  constructor(private renderer: Renderer2,\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    private datePipe: DatePipe,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private sharedDataService: SharedDataService,\r\n    public vendorService: VendorService,\r\n    private marketInfoService: MarketInfoService){\r\n      this.rentalForm = this.formbuilder.group({\r\n        marketWeekSunday: [0],\r\n        marketWeekMonday: [0],\r\n        marketWeekTuesday: [0],\r\n        marketWeekWednesday: [0],\r\n        marketWeekThursday: [0],\r\n        marketWeekFriday: [0],\r\n        marketWeekSaturday: [0],\r\n        marketParts:[''],\r\n        rentalStartDate:[],\r\n        rentalEndDate:[],\r\n        weeklyRentalStartDates:[],\r\n        otherItemsScreen: this.formbuilder.group({\r\n          otherChargeMarketWeek: [''],\r\n          otherItemSearchText: ['']\r\n        })\r\n      })\r\n    }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.generateTempRecordNumber();\r\n    this.getRentalPaymentSettings();\r\n    this.getVendorProducts();\r\n    this.getMarketVendorSettings();\r\n    this.getVendorBusinessLicenseSettings();\r\n    this.getVendorBalances();\r\n    this.getOtherRentalItems();\r\n    this.getMarketDays();\r\n    this.getParts();\r\n    if (this.sharedDataService.paymentSharedData)\r\n      this.loadSelectedBooths();\r\n  }\r\n\r\n  generateTempRecordNumber() {\r\n    this.rentalService.generateTempRecordNumber(this.marketId).subscribe((response) => {\r\n       if (response) {\r\n         this.tempRecordNo = response;\r\n       }\r\n     });\r\n   }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMarketVendorSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getMarketVendorSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n      var response = res.body;\r\n      if (response) {\r\n        this.exemptResale = response.ExemptResale;\r\n        this.resaleNo = response.Resale;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBusinessLicenseSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getVendorBusinessLicenseSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.businessLicenseNumber = res.LicenseNumber;\r\n        this.businessLicenseExpiryDate = res.ExpiryDate;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.warnExcessPayment = res.WarnExcessPayment;\r\n        this.warnZeroPayment = res.WarnZeroPayment;\r\n        this.displayOtherChargeByBooth = res.DisplayOtherChargesByBooth;\r\n        this.displayCityTax = res.RentalSecondTaxable;\r\n        this.displaySalesTax = res.RentalTaxable;\r\n        this.perDiemRentApplicable = res.PerDiemRentApplicable;\r\n        this.gridWeeklyRental.getColumnByField(\"SalesTax\").visible = this.displaySalesTax;\r\n        this.gridWeeklyRental.getColumnByField(\"CityTax\").visible = this.displayCityTax;\r\n        if(this.newVendor){\r\n          this.gridWeeklyRental.getColumnByField(\"Product\").visible = false;\r\n        }\r\n        this.gridWeeklyRental.refreshColumns();\r\n        this.displayOtherChargeSalesTax = res.OtherRentalTaxable;\r\n        this.displayOtherChargeCityTax = res.OtherRentalSecondTaxable;     \r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.DisplayPayDueDate = res.DisplayPayDueDate;\r\n        this.DisplaySpecificDate = res.DisplaySpecificDate;\r\n        this.DisplayOptionValue = res.DisplayOptionValue;\r\n        const nextDate = this.getNextDate(this.DisplayOptionValue);\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\"\r\n        var secLevelTaxRentHeader = this.gridWeeklyRental.getColumnByField(\"CityTax\"); \r\n        secLevelTaxRentHeader.headerText = this.secondTaxName;     \r\n        this.RentalTaxPercentage = res.RentalTaxPercentage;\r\n        this.OtherRentalTaxPercentage = res.OtherRentalTaxPercentage;\r\n        this.RentalSecondTaxPercentage = res.RentalSecondTaxPercentage;\r\n        this.OtherRentalSecondTaxPercentage = res.OtherRentalSecondTaxPercentage;\r\n        this.OtherChargesPeriod = res.OtherChargesPeriod;\r\n        this.gridWeeklyRental.refresh();\r\n        if (this.AllowRentingOtherItems) {\r\n          this.gridOtherRental.getColumnByField(\"BoothNo\").visible = res.DisplayOtherChargesByBooth;\r\n          this.gridOtherRental.getColumnByField(\"SalesTax\").visible = this.displayOtherChargeSalesTax;\r\n          this.gridOtherRental.getColumnByField(\"CityTax\").visible = this.displayOtherChargeCityTax;\r\n          var secLevelTaxOtherRentHeader = this.gridOtherRental.getColumnByField(\"CityTax\");\r\n          secLevelTaxOtherRentHeader.headerText = this.secondTaxName;\r\n          this.gridOtherRental.refreshColumns();\r\n          this.gridOtherRental.refresh();\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  getNextDate(day: number): Date {\r\n    if (this.DisplaySpecificDate) {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.getFullYear(), today.getMonth(), day);\r\n      // If the nextDate is in the past or today, move to the next month\r\n      if (nextDate < today) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n      }\r\n      // Handle cases where the day is not valid in the next month (e.g., 31st in February)\r\n      while (nextDate.getDate() !== day) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n        nextDate.setDate(day);\r\n      }\r\n      return nextDate;\r\n    }\r\n    else{\r\n      const today = new Date();\r\n      let nextDate = new Date(today.setDate(today.getDate() + day));\r\n      return nextDate;\r\n    }\r\n  }\r\n\r\n  getWebRentalSetting(){\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {  \r\n        this.defaultPart = res.DefaultLayoutPart;   \r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.ApplyBookingFee = res.ApplyBookingFee;\r\n        this.ApplyBookingFeeId = res.ApplyBookingFeeId;\r\n        this.AllowRentingOtherItems = res.AllowRentingOtherItems;\r\n        if (this.ApplyBookingFee) {\r\n          this.subscriptions.push(this.rentalService.getBookingFeeById(this.marketId, this.ApplyBookingFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.bookingFeeAmount = resFee.OtherItemCharge;\r\n            }\r\n          }));\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);        \r\n        this.gridWeeklyRental.getColumnByField(\"Sunday\").visible = this.sunday;\r\n        this.gridWeeklyRental.getColumnByField(\"Monday\").visible = this.monday;\r\n        this.gridWeeklyRental.getColumnByField(\"Tuesday\").visible = this.tuesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Wednesday\").visible = this.wednesday;\r\n        this.gridWeeklyRental.getColumnByField(\"Thursday\").visible = this.thursay;\r\n        this.gridWeeklyRental.getColumnByField(\"Friday\").visible = this.friday;\r\n        this.gridWeeklyRental.getColumnByField(\"Saturday\").visible = this.saturday;   \r\n        this.getWeeklyMarkets();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWeeklyMarkets() {\r\n    this.marketInfoService.getWeeklyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.weeklyMarketDays = response;\r\n        this.rentalForm.patchValue({\r\n          rentalStartDate: response[0].RentalStartDays,\r\n          rentalEndDate: response[0].RentalEndDays,\r\n        });\r\n        this.rentalForm.controls['otherItemsScreen'].patchValue({\r\n          otherChargeMarketWeek: response[0].RentalStartDays\r\n        });\r\n        this.selectedWeeklyMarketDays();\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  checkSelectedDates() {\r\n    const rentalStartDate = new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.rentalForm.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.rentalForm.get('rentalEndDate').setValue(this.rentalForm.value['rentalStartDate']);\r\n    }\r\n    this.selectedWeeklyMarketDays();\r\n  }\r\n\r\n  loadSelectedBooths() {    \r\n    var newItem =[];\r\n    if (this.sharedDataService.paymentSharedData.ReturnData.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.ReturnData.forEach((item) => {\r\n        var newbooths=[];\r\n        var ob = {\r\n        BoothNumber: item.BoothNumber,\r\n        BoothType: item.BoothType,\r\n        BoothTypeId: item.BoothTypeId,\r\n        BoothDescription: item.BoothDescription,\r\n        Product:item.Product,\r\n        RentStartPeriod:item.RentStartPeriod,\r\n        RentEndPeriod: item.RentEndPeriod,\r\n        RentalSavedEndDate: item.RentalSavedEndDate,\r\n        RentalStartDate: item.RentalStartDate,\r\n        RentalEndDate: item.RentalEndDate,\r\n        MktDays: item.MktDays,\r\n        Rent: item.Rent,\r\n        SalesTax: item.SalesTax,\r\n        CityTax: item.CityTax,\r\n        PerDiem: item.PerDiem,\r\n        PerDiemRent: item.PerdiemRent,\r\n        Sunday: item.Sunday,\r\n        Monday: item.Monday,\r\n        Tuesday: item.Tuesday,\r\n        Wednesday: item.Wednesday,\r\n        Thursday: item.Thursday,\r\n        Friday: item.Friday,\r\n        Saturday: item.Saturday,\r\n        Reservation: item.Reservation,\r\n        Drop:  item.Drop,\r\n        January: item.January,\r\n        February: item.February,\r\n        March: item.March,\r\n        April: item.April,\r\n        May: item.May,\r\n        June: item.June,\r\n        July: item.July,\r\n        August: item.August,\r\n        September: item.September,\r\n        October: item.October,\r\n        November: item.November,\r\n        December: item.December,\r\n        JanuaryMonthPresent: item.JanuaryMonthPresent,\r\n        FebruaryMonthPresent: item.FebruaryMonthPresent,\r\n        MarchMonthPresent:  item.MarchMonthPresent,\r\n        AprilMonthPresent:  item.AprilMonthPresent,\r\n        MayMonthPresent: item.MayMonthPresent,\r\n        JuneMonthPresent: item.JuneMonthPresent,\r\n        JulyMonthPresent: item.JulyMonthPresent,\r\n        AugustMonthPresent: item.AugustMonthPresent,\r\n        SeptemberMonthPresent: item.SeptemberMonthPresent,\r\n        OctoberMonthPresent: item.OctoberMonthPresent,\r\n        NovemberMonthPresent: item.NovemberMonthPresent,\r\n        DecemberMonthPresent: item.DecemberMonthPresent,\r\n        NewBooth: true,\r\n        Status: \"N\",         \r\n        StartDateList:item.StartDateList,\r\n        DisableStartDate: false,\r\n        TaxModel: item.TaxModel\r\n        }\r\n        newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n        this.selectedWeeklyBooths = this.selectedWeeklyBooths.concat(newbooths);    \r\n      });\r\n    }\r\n    if (this.sharedDataService.paymentSharedData.WeeklyRentalOtherCharges.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.WeeklyRentalOtherCharges.forEach((el) => {\r\n        if(el.WeekOtherRentalId == 0)\r\n        {\r\n        newItem=[];\r\n        var ob = {\r\n          Id: el.OtherItemId,\r\n          WeekOtherRentalId:el.WeekOtherRentalId,\r\n          OtherItem: el.OtherItemName,\r\n          OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n          Quantity: el.Quantity,\r\n          OtherItemtotal: this.customCurrency.transform(el.OtherItemCharge),\r\n          RentalWeek: el.RentalWeek + \"-\" + this.datePipe.transform(new Date(el.RentalWeek).setDate(new Date(el.RentalWeek).getDate() + 6), 'MMM d, y'),\r\n          SalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n          CityTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n          BoothNo: el.BoothNumber,\r\n          Reference: el.Reference,\r\n          NewItem: true\r\n          }\r\n          newItem.push(JSON.parse(JSON.stringify(ob)));\r\n        }\r\n\r\n        if (newItem.length > 0) {\r\n          this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n        }\r\n      });\r\n    }\r\n\r\n    this.totalRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.RentalCharge);\r\n    this.totalOtherRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.OtherCharge.toString());\r\n    this.totalSalesTax = parseFloat(this.sharedDataService.paymentSharedData.SalesTax.toString());\r\n    this.totalSecondLeveltax = parseFloat(this.sharedDataService.paymentSharedData.SecLevelTax.toString());\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    this.sharedDataService.paymentSharedData = \"\";\r\n    this.getDiscounts();\r\n  }\r\n\r\n  disableSavePayment() {\r\n    var vendorBalance = this.priorBalance + this.totalCharge;\r\n    if ((vendorBalance > 0) || (this.priorBalance < 0 && vendorBalance <= 0)){\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n\r\n  selectedWeeklyMarketDays(){\r\n    this.selectedMarketDays = [];\r\n    this.rentalForm.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.rentalForm.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.rentalForm.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.rentalForm.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.rentalForm.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.rentalForm.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.rentalForm.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n\r\n    const rentalStartDate = new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.rentalForm.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.rentalForm.get('rentalEndDate').setValue(this.rentalForm.value['rentalStartDate']);\r\n    }\r\n    const today: Date = new Date(new Date().toDateString())\r\n    this.weeklyRentalStartDates = [];\r\n    this.selectedMarketDays.map((el, i) => {\r\n      const startDate = new Date(this.rentalForm.value['rentalStartDate'].split(\"-\")[0]);\r\n      const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (currentDay <= endDate) {\r\n        if (currentDay >= today) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n            this.weeklyRentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.weeklyRentalStartDates.sort(compareDates);\r\n\r\n      if (this.weeklyRentalStartDates.length)\r\n        this.rentalForm.get('weeklyRentalStartDates').setValue(this.weeklyRentalStartDates[0].startDate);     \r\n    });   \r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  toggleDaySelection(day: string, event: any) {\r\n    this.selectedMarketDays.map((el, i) => {\r\n      switch (el) {\r\n        case 1: this.rentalForm.get('marketWeekSunday').setValue(true);\r\n          break;\r\n        case 2: this.rentalForm.get('marketWeekMonday').setValue(true);\r\n          break;\r\n        case 3: this.rentalForm.get('marketWeekTuesday').setValue(true);\r\n          break;\r\n        case 4: this.rentalForm.get('marketWeekWednesday').setValue(true);\r\n          break;\r\n        case 5: this.rentalForm.get('marketWeekThursday').setValue(true);\r\n          break;\r\n        case 6: this.rentalForm.get('marketWeekFriday').setValue(true);\r\n          break;\r\n        case 7: this.rentalForm.get('marketWeekSaturday').setValue(true);\r\n          break;\r\n      }\r\n    });\r\n  }\r\n\r\n  refreshAddBooth() {    \r\n    this.getMarketDays();\r\n    this.selectedWeeklyBoothData = [];\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      this.selectedBoothsForRental.forEach(ele => {\r\n        const temp = {\r\n          TempRecordNo: this.tempRecordNo.toString(),\r\n          BoothNumber: ele.BoothNumber,\r\n          StartDate: new Date(ele.StartDate),\r\n          RentalType: 5,\r\n          EndDate: new Date(ele.EndDate),\r\n          Sunday: this.rentalForm.value['marketWeekSunday'] ?? false,\r\n          Monday: this.rentalForm.value['marketWeekMonday'] ?? false,\r\n          Tuesday: this.rentalForm.value['marketWeekTuesday'] ?? false,\r\n          Wednesday: this.rentalForm.value['marketWeekWednesday'] ?? false,\r\n          Thursday: this.rentalForm.value['marketWeekThursday'] ?? false,\r\n          Friday: this.rentalForm.value['marketWeekFriday'] ?? false,\r\n          Saturday: this.rentalForm.value['marketWeekSaturday'] ?? false\r\n        }\r\n        this.subscriptions.push(\r\n          this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          })\r\n        );\r\n      });\r\n    }\r\n    this.selectedBoothsForRental = [];\r\n    this.rentalForm.reset();\r\n    this.rentalForm.patchValue({\r\n      rentalStartDate: this.weeklyMarketDays[0].RentalStartDays,\r\n      rentalEndDate: this.weeklyMarketDays[0].RentalEndDays,\r\n      marketParts: this.defaultPart\r\n    })\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  AddBoothsOnGridOnValidationSucess() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (this.resaleNoDisplay) {\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n      }\r\n\r\n      if (closeModalPopup) {\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n        }));\r\n      }\r\n    }\r\n    else{\r\n      addToGrid = true;\r\n    }\r\n\r\n    if (addToGrid) {\r\n      if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        var addToGrid = false;\r\n        var closeModalPopup = false;\r\n        if ((!this.businessLicenseNumber || this.businessLicenseNumber.trim() === '') || !this.businessLicenseExpiryDate) {\r\n          this.ResaleOrBusinessHeader = \"Business License Number\"\r\n          const modal = this.modalResaleNo.nativeElement;\r\n          this.resaleNoDisplay = false;   \r\n          this.businessLicenseDisplay = true;\r\n          modal.classList.add('show');\r\n          if (modal.classList.contains('show')) {\r\n            modal.style.display = 'block';\r\n            this.ResaleOrBusinessHeader = \"Business License Number\"                  \r\n          }\r\n        }\r\n        else if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n          this.closeResaleModal();\r\n          Swal.fire({\r\n            text: $localize`Business License is expired! Please contact the market.`,\r\n            icon: \"warning\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n        else {\r\n          addToGrid = true;\r\n          this.closeResaleModal();\r\n          if (this.businessLicenseDisplay) {\r\n            const obj = {\r\n              VendorID: this.vendorId,\r\n              LicenseNameId: 1,\r\n              LicenseName: \"\",\r\n              ExpiryDate: new Date(this.businessLicenseExpiryDate),\r\n              LicenseNumber: this.businessLicenseNumber\r\n            }\r\n  \r\n            this.subscriptions.push(this.rentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n            }));\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }       \r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n    }\r\n  }\r\n\r\n  addSelectedBoothsToGrid() {\r\n    this.selectedBoothsForRental = [];\r\n    if (this.selectedWeeklyBoothData) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedWeeklyBoothData.map((el, i) => {      \r\n        var obj = {\r\n          BoothTypeId: el.BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(this.rentalForm.value['rentalStartDate'].split('-')[0]),\r\n          RentalEndPeriod: new Date(this.rentalForm.value['rentalEndDate'].split('-')[1]),\r\n          PerDiemApplicable: this.perDiemRentApplicable? true: false,\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n        this.rentalService.getBoothRentalCombinedWeeklyCharges(this.marketId,obj).subscribe((res: any) => {\r\n          var newbooths = [];\r\n          var vendorProducts = !this.newVendor ? this.vendorProducts.filter(x => x.Priority) ? this.vendorProducts.filter(x => x.Priority)[0].ProductId : this.vendorProducts[0].ProductId:\"\";\r\n          const ob = {\r\n            WeeklyRentalId: 0,\r\n            BoothNumber: el.BoothNumber,\r\n            BoothType: el.BoothType,\r\n            BoothTypeId: el.BoothTypeId,\r\n            BoothDescription: el.BoothDescription,\r\n            Product: vendorProducts,\r\n            RentStartPeriod: this.rentalForm.value['rentalStartDate'],\r\n            RentEndPeriod: this.rentalForm.value['rentalEndDate'],\r\n            RentalSavedEndDate: el.RentalEndDate,\r\n            RentalStartDate: this.rentalForm.value['weeklyRentalStartDates'],\r\n            RentalEndDate: el.RentalEndDate,\r\n            MktDays: el.NoOfMarketDays,\r\n            Rent: this.customCurrency.transform(res.Rent),\r\n            SalesTax: this.customCurrency.transform(res.SalesTax),\r\n            CityTax: this.customCurrency.transform(res.CityTax),\r\n            PerDiem: this.perDiemRentApplicable? true: false,\r\n            PerDiemRent:this.customCurrency.transform(res.PerdiemRent),\r\n            Sunday: el.Sunday,\r\n            Monday: el.Monday,\r\n            Tuesday: el.Tuesday,\r\n            Wednesday: el.Wednesday,\r\n            Thursday: el.Thursday,\r\n            Friday: el.Friday,\r\n            Saturday: el.Saturday,\r\n            Reservation: true,\r\n            Drop: false,\r\n            January: this.customCurrency.transform(res.JanRent),\r\n            February: this.customCurrency.transform(res.FebRent),\r\n            March: this.customCurrency.transform(res.MarRent),\r\n            April: this.customCurrency.transform(res.AprRent),\r\n            May: this.customCurrency.transform(res.MayRent),\r\n            June: this.customCurrency.transform(res.JunRent),\r\n            July: this.customCurrency.transform(res.JulRent),\r\n            August: this.customCurrency.transform(res.AugRent),\r\n            September: this.customCurrency.transform(res.SepRent),\r\n            October: this.customCurrency.transform(res.OctRent),\r\n            November: this.customCurrency.transform(res.NovRent),\r\n            December: this.customCurrency.transform(res.DecRent),\r\n            JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n            MarchMonthPresent: res.MarchMonthPresent,\r\n            AprilMonthPresent: res.AprilMonthPresent,\r\n            MayMonthPresent: res.MayMonthPresent,\r\n            JuneMonthPresent: res.JuneMonthPresent,\r\n            JulyMonthPresent: res.JulyMonthPresent,\r\n            AugustMonthPresent: res.AugustMonthPresent,\r\n            SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n            OctoberMonthPresent: res.OctoberMonthPresent,\r\n            NovemberMonthPresent: res.NovemberMonthPresent,\r\n            DecemberMonthPresent: res.DecemberMonthPresent,\r\n            NewBooth: true,\r\n            Status: \"N\",         \r\n            StartDateList:el.StartDateList,\r\n            DisableStartDate: false, \r\n            ExtendRental: false,\r\n            TaxModel: res.TaxModel\r\n          }\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;         \r\n          this.getDiscounts();\r\n          this.getMarketDays();\r\n          this.gridWeeklyRental.refresh();\r\n          newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n          this.selectedWeeklyBooths = this.selectedWeeklyBooths.concat(newbooths);    \r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n        this.isdirty = true;\r\n        this.isFormDirty.emit(true);\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n      //this.refreshAddBooth();\r\n    }\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.vendorDiscountPlans =[];\r\n  forkJoin({\r\n    vendorBalanceRes: this.rentalService.getVendorBalances(this.vendorId, this.marketId),\r\n    discountPlansRes:    this.vendorService.GetDiscountPlan(this.vendorId,this.marketId)\r\n  }).subscribe(\r\n    ({ vendorBalanceRes, discountPlansRes }: any) => {\r\n      if (vendorBalanceRes) {\r\n        this.priorBalance = vendorBalanceRes.PriorBalance;\r\n      }\r\n      if(discountPlansRes){\r\n        if (discountPlansRes) {\r\n          for (const el of discountPlansRes) {\r\n            if (el.CombinedWeekly && el.OnlineTransactions) {\r\n              const ob = {\r\n                PlanSeqId: el.PlanSeqId,\r\n                PlanId: el.PlanId,\r\n                PlanName: el.PlanName,\r\n                EffectiveFrom: this.datePipe.transform(el.EffectiveFrom, 'MM/dd/yyyy'),\r\n                ExpiryDate: this.datePipe.transform(el.ExpiryDate, 'MM/dd/yyyy'),\r\n                DiscountType: el.DiscountType == 0 ? DiscountType.Percentage : DiscountType.FixedAmount,\r\n                DiscountValue: el.DiscountValue,\r\n                OtherItems: el.OtherItems,\r\n                Daily: el.Daily,\r\n                Weekly: el.Weekly,\r\n                Monthly: el.Monthly,\r\n                CombinedWeekly: el.CombinedWeekly,\r\n                CombinedMonthly: el.CombinedMonthly,\r\n                IsExceedAmount: el.IsExceedAmount,\r\n                ExceedAmount: el.ExceedAmount,\r\n                BalanceDue: el.BalanceDue,\r\n                Notes: el.Notes,\r\n                QDR: el.QDR,\r\n                CheckAll: el.Selected,\r\n                AutoSelected: el.Selected,\r\n                DisableDiscount: el.Selected,\r\n                AppliedDiscount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SecondLevelTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxApplied: el.SalesTax,\r\n                SecondLevelTaxApplied: el.SecondLevelTax,\r\n              }\r\n              this.vendorDiscountPlans.push(ob);\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        //  this.disableDiscountAmount = this.vendorDiscountPlans.length > 0 ? false : true;\r\n        }\r\n        this.getDiscounts();\r\n      }\r\n    })\r\n  }\r\n\r\n  getDiscounts() {\r\n    var totalRentalCharge = this.totalRentalCharge;\r\n    var totalSalesTax = this.totalSalesTax;\r\n    var totalSecondLeveltax = this.totalSecondLeveltax;\r\n    var totalOtherRentalCharge = this.totalOtherRentalCharge;\r\n    var priorBalance = 0;\r\n    var totalChargeWithDue = this.priorBalance + (totalRentalCharge)\r\n      + (totalSalesTax)\r\n      + (totalSecondLeveltax)\r\n      + (totalOtherRentalCharge)\r\n\r\n    var totalCharge = (totalRentalCharge) + (totalSalesTax) + (totalSecondLeveltax) + (totalOtherRentalCharge)\r\n    //   totalCharge = totalCharge.toString().includes('(') && totalCharge.toString().includes(')') ? -1 * parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.vendorDiscountPlans.length > 0 && totalCharge > 0) {\r\n      var discountTotalAmount = 0;\r\n      var totalAmountForDiscount = 0;\r\n      for (const disc of this.vendorDiscountPlans) {\r\n        disc.CheckAll = disc.AutoSelected;\r\n        if (disc.CheckAll && disc.CombinedWeekly) {\r\n          var currentDiscountValue = 0;\r\n          if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n            if (!disc.IsExceedAmount || (disc.IsExceedAmount && totalCharge > disc.ExceedAmount)) {\r\n              const discountValue = disc.DiscountValue;\r\n              totalAmountForDiscount = totalRentalCharge\r\n              if (disc.OtherItems) {\r\n                totalAmountForDiscount += totalOtherRentalCharge\r\n              }\r\n              if (disc.DiscountType == 'Percentage') {\r\n                discountTotalAmount += totalAmountForDiscount * (discountValue / 100);\r\n                currentDiscountValue = totalAmountForDiscount * (discountValue / 100);\r\n              }\r\n              else {\r\n                discountTotalAmount += discountValue;\r\n                currentDiscountValue = discountValue;\r\n              }\r\n            }\r\n            else {\r\n              disc.CheckAll = false;\r\n            }\r\n          }\r\n          else {\r\n            disc.CheckAll = false;\r\n          }\r\n          disc.AppliedDiscount = this.customCurrency.transform(currentDiscountValue.toString());\r\n        }\r\n        else {\r\n          disc.AppliedDiscount = this.customCurrency.transform(\"0\");\r\n        }\r\n\r\n        this.totalDiscountCharge = parseFloat(discountTotalAmount.toFixed(2)).toString()\r\n      }\r\n    }\r\n  }\r\n\r\n  created(args) {\r\n    if(this.newVendor){\r\n      this.gridWeeklyRental.getColumnByField(\"Product\").visible = false;\r\n    }\r\n  }\r\n\r\n  rentOnlineNextTab(){\r\n    this.saveRentalWithPayment();\r\n    this.bookingFormCompleted.emit(true);\r\n  }\r\n\r\n  saveRentalWithPayment(){\r\n    this.isdirty = false;\r\n    this.isFormDirty.emit(false);\r\n    var obj = {\r\n      VendorId: this.vendorId,\r\n      RentalType:5,\r\n      PriorBalance: this.priorBalance,\r\n      RentalCharge: this.totalRentalCharge,\r\n      SalesTax: this.totalSalesTax,\r\n      SecLevelTax: this.totalSecondLeveltax,\r\n      OtherCharge: this.totalOtherRentalCharge,\r\n      RentalNotes: \"\",\r\n      PaymentDone: false,\r\n      ExemptResaleNo:false,\r\n      ExemptResaleReason: \"\",\r\n      ResaleNo: this.resaleNo,\r\n      PaymentDueDate: null,\r\n      AppliedDiscountModel: [],\r\n      ReturnData: [],\r\n      ReceiptSettings: \"\",\r\n      PaymentOnly: false,\r\n      CombinedWeeklyRentalBooth: [],\r\n      WeeklyRentalOtherCharges: [],\r\n      DiscountAmount: this.totalDiscountCharge ?? 0,\r\n      BookingFee: this.bookingFeeAmount ?? 0\r\n    }\r\n\r\n    var objSelectedBooth = [];\r\n    var objReturnData = [];\r\n    if (this.selectedWeeklyBooths.length > 0) {\r\n      this.selectedWeeklyBooths.forEach((item,i) => {\r\n        objSelectedBooth.push({\r\n          WeeklyRentalId: item.WeeklyRentalId,\r\n          BoothNumber: item.BoothNumber,\r\n          BoothTypeId: item.BoothTypeId,\r\n          ProductId: item.Product,\r\n          BoothType: item.BoothType,\r\n          RentalWeeekStartDate: new Date(item.RentStartPeriod.split('-')[0]),\r\n          RentalWeeekEndDate: new Date(item.RentEndPeriod.split('-')[1]),\r\n          RentalStartDate: new Date(item.RentalStartDate),\r\n          RentalEndDate: new Date(item.RentalEndDate),\r\n          SelectedRentalDates: \"\",\r\n          BoothReserved: item.Reservation,\r\n          DoNotRenew: item.Drop,\r\n          PerDiem: item.PerDiem,\r\n          PerdiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n          Monday: item.Monday,\r\n          Tuesday: item.Tuesday,\r\n          Wednesday: item.Wednesday,\r\n          Thursday: item.Thursday,\r\n          Friday: item.Friday,\r\n          Saturday: item.Saturday,\r\n          Sunday: item.Sunday,\r\n          RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          JanRent: item.January ?(item.January.includes('(') && item.January.includes(')') ? -1 *  parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))): 0,\r\n          FebRent: item.February?(item.February.includes('(') && item.February.includes(')') ? -1 *  parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))): 0,\r\n          MarRent: item.March?(item.March.includes('(') && item.March.includes(')') ? -1 *  parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))): 0,\r\n          AprRent: item.April? (item.April.includes('(') && item.April.includes(')') ? -1 *  parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))): 0,\r\n          MayRent: item.May? (item.May.includes('(') && item.May.includes(')') ? -1 *  parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))): 0,\r\n          JunRent: item.June? (item.June.includes('(') && item.June.includes(')') ? -1 *  parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))): 0,\r\n          JulRent: item.July? (item.July.includes('(') && item.July.includes(')') ? -1 *  parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))): 0,\r\n          AugRent: item.August? (item.August.includes('(') && item.August.includes(')') ? -1 *  parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))): 0,\r\n          SepRent: item.September? (item.September.includes('(') && item.September.includes(')') ? -1 *  parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))): 0,\r\n          OctRent: item.October? (item.October.includes('(') && item.October.includes(')') ? -1 *  parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))): 0,\r\n          NovRent: item.November? (item.November.includes('(') && item.November.includes(')') ? -1 *  parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))): 0,\r\n          DecRent: item.December? (item.December.includes('(') && item.December.includes(')') ? -1 *  parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))): 0,\r\n          BookingLog: i+1,\r\n          TaxModel: item.TaxModel\r\n        })\r\n\r\n        if (item.NewBooth) {\r\n          objReturnData.push({\r\n            WeeklyRentalId: 0,\r\n            BoothNumber: item.BoothNumber,\r\n            BoothType: item.BoothType,\r\n            BoothTypeId: item.BoothTypeId,\r\n            BoothDescription: item.BoothDescription,\r\n            Product: item.Product,\r\n            RentStartPeriod: item.RentStartPeriod,\r\n            RentEndPeriod: item.RentEndPeriod,\r\n            RentalSavedEndDate: item.RentalEndDate,\r\n            RentalStartDate: item.RentalStartDate,\r\n            RentalEndDate: item.RentalEndDate,\r\n            MktDays: item.MktDays,\r\n            Rent: item.Rent,\r\n            SalesTax: item.SalesTax,\r\n            CityTax: item.CityTax,\r\n            PerDiem: item.PerDiem,\r\n            PerdiemRent: item.PerDiemRent,\r\n            Sunday: item.Sunday,\r\n            Monday: item.Monday,\r\n            Tuesday: item.Tuesday,\r\n            Wednesday: item.Wednesday,\r\n            Thursday: item.Thursday,\r\n            Friday: item.Friday,\r\n            Saturday: item.Saturday,\r\n            Reservation: item.Reservation,\r\n            Drop: item.Drop,\r\n            January: item.January,\r\n            February: item.February,\r\n            March: item.March,\r\n            April: item.April,\r\n            May: item.May,\r\n            June: item.June,\r\n            July: item.July,\r\n            August: item.August,\r\n            September: item.September,\r\n            October: item.October,\r\n            November: item.November,\r\n            December: item.December,\r\n            JanuaryMonthPresent: item.January ? true : false,\r\n            FebruaryMonthPresent: item.February ? true : false,\r\n            MarchMonthPresent: item.March ? true : false,\r\n            AprilMonthPresent: item.April ? true : false,\r\n            MayMonthPresent: item.May ? true : false,\r\n            JuneMonthPresent: item.June ? true : false,\r\n            JulyMonthPresent: item.July ? true : false,\r\n            AugustMonthPresent: item.August ? true : false,\r\n            SeptemberMonthPresent: item.September ? true : false,\r\n            OctoberMonthPresent: item.October ? true : false,\r\n            NovemberMonthPresent: item.November ? true : false,\r\n            DecemberMonthPresent: item.December ? true : false,\r\n            NewBooth: true,\r\n            Status: \"N\",\r\n            StartDateList: item.StartDateList,\r\n            DisableStartDate: false,\r\n            TaxModel: item.TaxModel\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    if (objSelectedBooth.length > 0)\r\n      obj.CombinedWeeklyRentalBooth = objSelectedBooth;\r\n\r\n    var objSelectedOtherCharge = [];\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.selectedOtherItems.forEach((item) => {\r\n        objSelectedOtherCharge.push({\r\n          OtherItemId: item.Id,\r\n          WeekOtherRentalId: item.WeekOtherRentalId,\r\n          Quantity: item.Quantity,\r\n          OtherItemName: item.OtherItem,\r\n          OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n          RentalWeek: item.RentalWeek.split('-')[0],\r\n          BoothNumber: item.BoothNo,\r\n          Recurring: item.Recurring,\r\n          OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          Reference: item.Reference,\r\n          WeeklyOtherRentalIds: item.WeeklyOtherRentalIds\r\n        })\r\n      });\r\n    }\r\n    if (objSelectedOtherCharge.length > 0)\r\n      obj.WeeklyRentalOtherCharges = objSelectedOtherCharge;\r\n    \r\n      if(objReturnData.length > 0){\r\n        obj.ReturnData = objReturnData;\r\n      }\r\n\r\n      var objDiscountData = [];\r\n      if(this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0){\r\n        this.vendorDiscountPlans.forEach((item) => {\r\n          if(item.CheckAll){\r\n            objDiscountData.push({\r\n              PlanId: item.PlanSeqId,\r\n              DiscountAmount:item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n              OtherCharges: item.OtherItems,\r\n              SalesTax: item.SalesTaxApplied,\r\n              SecondLevelTax: item.SecondLevelTaxApplied,\r\n              DiscountType:item.DiscountType==  DiscountType.Percentage ? \"0\" : \"1\",\r\n              DiscountValue : item.DiscountValue,\r\n              SalesTaxAmount:item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n              SecondLevelTaxAmount:item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n            })\r\n          }\r\n        });\r\n      }\r\n      if (objDiscountData.length > 0)\r\n        obj.AppliedDiscountModel = objDiscountData;\r\n      this.sharedDataService.wifiSelectedDay = this.weeklyMarketDays[0].RentalStartDays;\r\n      if (!this.newVendor) {\r\n        this.sharedDataService.paymentSharedData = obj;\r\n        var url = 'vendor-payments/' + this.marketId;\r\n        this.router.navigate([url]);\r\n      }\r\n      else {\r\n        this.rentalBookingData.emit(obj);\r\n      }\r\n      var temp ={\r\n        TempRecordNo: this.tempRecordNo.toString(),\r\n        BoothNumber:\"\"\r\n      }\r\n      this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n      }));\r\n  }\r\n\r\n  otherItemUpdate(selectedItems) {\r\n    if (selectedItems.isOtherItemChecked) {\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id && item.RentalWeek == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']);\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemCharge = this.customCurrency.transform(finalCharge.toString())\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString())\r\n      if (index !== -1) {\r\n        var obj = {\r\n          Id: selectedItems.Id,\r\n          OtherItem: selectedItems.OtherItem,\r\n          OtherItemCharge: selectedItems.OtherItemCharge,\r\n          Quantity: selectedItems.Quantity,\r\n          OtherItemtotal: selectedItems.OtherItemtotal,\r\n          othChgBooths: selectedItems.othChgBooths,\r\n          Recurring: selectedItems.Recurring,\r\n          RentalWeek: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'],\r\n          Reference: selectedItems.Reference\r\n        };\r\n        this.selectedOtherCharges[index] = obj;\r\n      }\r\n      else {\r\n        var objNew = {\r\n          Id: selectedItems.Id,\r\n          OtherItem: selectedItems.OtherItem,\r\n          OtherItemCharge: selectedItems.OtherItemCharge,\r\n          Quantity: selectedItems.Quantity,\r\n          OtherItemtotal: selectedItems.OtherItemtotal,\r\n          othChgBooths: selectedItems.othChgBooths,\r\n          Recurring: selectedItems.Recurring,\r\n          RentalWeek: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'],\r\n          Reference: selectedItems.Reference\r\n        };\r\n        this.selectedOtherCharges.push(objNew);\r\n      }\r\n    }\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    var rentalDatePeriod = '';\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'])\r\n      rentalDatePeriod = this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'].split('-')[0];\r\n    this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId, rentalDatePeriod).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          if (el.WebRental) {\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherItemCombinedWeeklyCharge),\r\n              Quantity: 0,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              Recurring: el.Recurring,\r\n              othChgBooths: \"none\"\r\n            }\r\n            this.otherRentalCharges.push(ob);\r\n            this.otherItemList.push(ob);\r\n          }\r\n        });\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  checkMarketDaysSelected() {\r\n    const sunday = this.rentalForm.value['marketWeekSunday'];\r\n    const monday = this.rentalForm.value['marketWeekMonday'];\r\n    const tuesday = this.rentalForm.value['marketWeekTuesday'];\r\n    const wednesday = this.rentalForm.value['marketWeekWednesday'];\r\n    const thursday = this.rentalForm.value['marketWeekThursday'];\r\n    const friday = this.rentalForm.value['marketWeekFriday'];\r\n    const saturday = this.rentalForm.value['marketWeekSaturday'];\r\n    return sunday || monday || tuesday || wednesday || thursday || friday || saturday;\r\n  }\r\n\r\n  openLayout() {\r\n    this.layoutParts = this.rentalForm.value['marketParts'];\r\n    var marketDaysSelected = this.checkMarketDaysSelected();\r\n    if (!marketDaysSelected) {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please select a market day!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else {\r\n      if (this.selectedMarketDays.length > 0) {\r\n        this.selectedDates = [];\r\n        this.selectedMarketDays.map((el, i) => {\r\n          const startDate = new Date(this.rentalForm.value['rentalStartDate'].split(\"-\")[0]);\r\n          const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n          const selectedDayOfWeek = el - 1;\r\n          let currentDay = new Date(startDate);\r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              this.selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n        });\r\n      }\r\n      this.weeklyLayoutData = {\r\n        Sunday: this.rentalForm.value['marketWeekSunday'],\r\n        Monday: this.rentalForm.value['marketWeekMonday'],\r\n        Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n        Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n        Thursday: this.rentalForm.value['marketWeekThursday'],\r\n        Friday: this.rentalForm.value['marketWeekFriday'],\r\n        Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        weeklyRentalStartDate: this.rentalForm.value['rentalStartDate'],\r\n        weeklyRentalEndDate: this.rentalForm.value['rentalEndDate'],\r\n        weeklyRentalMarketDays: this.selectedMarketDays,\r\n        weeklyRentalFirstDay:this.rentalForm.value['weeklyRentalStartDates'],\r\n        selectedDates: this.selectedDates,\r\n        weeklyRentalSelectedBooths: this.selectedWeeklyBooths.filter(e => e.NewBooth == true),\r\n        tempRecordNo: this.tempRecordNo\r\n      }\r\n      this.displayLayout = true;\r\n    }\r\n  }\r\n\r\n  validateAndAddSelectedBoothsToGrid() {\r\n    let noResale = true;\r\n    var rentalDates = [];\r\n    var marketDay;\r\n    var rentalstartDate;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n      var selectedBoothRecord = this.selectedWeeklyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n      if (selectedBoothRecord.length > 0) {\r\n        selectedBoothRecord.forEach(record => {\r\n          for(const el of this.selectedMarketDays){\r\n            const startDate = new Date(record.RentalStartDate);\r\n            const endDate = new Date(record.RentalEndDate);\r\n            const selectedDayOfWeek = el - 1;\r\n            let currentDay = new Date(startDate);\r\n            const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n            while (currentDay <= endDate) {\r\n              var exludedDate = excludedDates.some(date => {\r\n                return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n              });\r\n              if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n                if (!rentalstartDate) {\r\n                  rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                }\r\n                rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n              }\r\n              currentDay.setDate(currentDay.getDate() + 1);\r\n            }\r\n          }\r\n\r\n          rentalDates.map(date => {\r\n            const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n            const dateExist = this.vendorRentalDays.find(el => {\r\n              const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              return rentalDateString === targetDateString;\r\n            });\r\n            if (!dateExist) {\r\n              const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n              this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n              this.marketDayCountForResale += 1;\r\n              if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n                return; // exits the forEach loop when the condition is met\r\n              }\r\n            }\r\n          });\r\n        });\r\n      }     \r\n    \r\n      rentalDates=[];\r\n\r\n      for(const el of this.selectedMarketDays){\r\n        const startDate = new Date(this.rentalForm.value['weeklyRentalStartDates']);\r\n        const endDate = new Date(this.rentalForm.value['rentalEndDate'].split(\"-\")[1]);\r\n        const selectedDayOfWeek = el - 1;\r\n        let currentDay = new Date(startDate);\r\n        const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n        while (currentDay <= endDate) {\r\n          var exludedDate = excludedDates.some(date => {\r\n            return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n          });\r\n          if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n            if (!rentalstartDate) {\r\n              rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n            }\r\n            rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n          currentDay.setDate(currentDay.getDate() + 1);\r\n        }\r\n      }\r\n\r\n      const apiCalls = rentalDates.map(date => {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          VendorRentalDate: new Date(date.startDate)\r\n        };\r\n\r\n        return this.rentalService.getVendorRentalDays(obj).pipe(\r\n          catchError(error => {\r\n            console.error('API call failed for date:', date.startDate, error);\r\n            return of([]); // Return an empty array in case of error\r\n          })\r\n        );\r\n      });\r\n\r\n      forkJoin(apiCalls).subscribe((responses: any[][]) => {\r\n        responses.forEach((res, index) => {\r\n          const date = rentalDates[index].startDate;\r\n          if (res && res.length > 0) {\r\n            res.forEach(el => {\r\n              const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              const dateExist = this.vendorRentalDays.find(data => {\r\n                const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                return rentalDateString === targetDateString;\r\n              });\r\n              if (!dateExist) {\r\n                const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                this.marketDayCountForResale += 1;\r\n              }\r\n            });\r\n          }\r\n\r\n          const targetDateString = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n          const dateExist = this.vendorRentalDays.find(el => {\r\n            const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n            return rentalDateString === targetDateString;\r\n          });\r\n          if (!dateExist) {\r\n            const formattedDate = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n            this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n            this.marketDayCountForResale += 1;\r\n          }\r\n        });\r\n\r\n        if (!this.newVendor) {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            const modal = this.modalResaleNo.nativeElement;\r\n            modal.classList.add('show');\r\n            if (modal.classList.contains('show')) {\r\n              modal.style.display = 'block';\r\n              this.ResaleOrBusinessHeader = \"Resale Number\"\r\n              this.resaleNoDisplay = true;\r\n              this.businessLicenseDisplay = false;\r\n            }\r\n            noResale = false;\r\n          }\r\n          else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            if (!this.businessLicenseNumber || !this.businessLicenseExpiryDate) {\r\n              const modal = this.modalResaleNo.nativeElement;\r\n              modal.classList.add('show');\r\n              if (modal.classList.contains('show')) {\r\n                modal.style.display = 'block';\r\n                this.ResaleOrBusinessHeader = \"Business License Number\";\r\n                this.resaleNoDisplay = false;\r\n                this.businessLicenseDisplay = true;\r\n              }\r\n              noResale = false;\r\n            }\r\n            else {\r\n              if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n                Swal.fire({\r\n                  title: $localize`Warning`,\r\n                  text: $localize`Business License is expired! Please contact the market`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              }\r\n              else {\r\n                this.addSelectedBoothsToGrid();\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            noResale = true;\r\n            this.addSelectedBoothsToGrid();\r\n          }\r\n        }\r\n      else {\r\n        if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n          this.resaleNoInputRequired.emit(true)\r\n        }\r\n        if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n          this.businessLicenseRequired.emit(true);\r\n        }\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n      });\r\n    } else {\r\n      this.addSelectedBoothsToGrid();\r\n    }\r\n  }\r\n\r\n\r\n  selectedBoothsFromLayout(data) {\r\n    window.scrollTo(0, 0);\r\n    this.selectedWeeklyBoothData = data;\r\n    this.displayLayout = false; \r\n    this.validateAndAddSelectedBoothsToGrid();\r\n  }\r\n\r\n  removeBoothCharges(data) {\r\n    const index = this.selectedWeeklyBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentStartPeriod == data.RentStartPeriod && selectedBooth.RentEndPeriod == data.RentEndPeriod);\r\n    if (index !== -1) {\r\n      this.selectedWeeklyBooths.splice(index, 1);\r\n    }\r\n    this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n    this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n  }\r\n\r\n  \r\n  closeLayoutForm() {\r\n    this.displayLayout = false;\r\n    this.getMarketDays();\r\n  }\r\n\r\n  searchOtherItem() {\r\n    this.otherRentalCharges = this.otherItemList;\r\n    const otherItemSearchText = this.rentalForm.controls['otherItemsScreen'].value['otherItemSearchText'];\r\n    if (otherItemSearchText != '') {\r\n      this.otherRentalCharges = this.otherItemList.filter((ele) => ele.OtherItem.toString().toLowerCase().indexOf(otherItemSearchText.toLowerCase()) !== -1);\r\n    }\r\n  }\r\n\r\n  async getBoothsAndItemsForOtherCharges() {\r\n    this.boothsForOtherCharge = [];\r\n    this.selectedOtherCharges = [];\r\n    if (this.OtherChargesPeriod) {\r\n      this.otherRentalCharges = [];\r\n      this.otherItemList = [];\r\n      await this.getOtherRentalItems();\r\n    }\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) {\r\n      this.selectedWeeklyBooths.forEach((item) => {\r\n        if (item.RentStartPeriod  == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) {\r\n          this.boothsForOtherCharge.push({ BoothNumber: item.BoothNumber })\r\n        }\r\n      });\r\n    }\r\n    this.boothsForOtherCharge.sort((a, b) => {\r\n      if (a.BoothNumber < b.BoothNumber) {\r\n        return -1;\r\n      }\r\n      if (a.BoothNumber > b.BoothNumber) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  closeResaleModal(){\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[0-9]/g;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  updateOtherItem(data) {\r\n    if (parseFloat(data.Quantity) == 0) {\r\n      data.Quantity = \"1\"\r\n    }\r\n    this.totalSalesTax -= data.SalesTax.toString().includes('(') && data.SalesTax.toString().includes(')') ? -1 * parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.toString().includes('(') && data.CityTax.toString().includes(')') ? -1 * parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalOtherRentalCharge -= data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    var index\r\n    if (data.NewItem == true)\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalWeek == data.RentalWeek && oth.NewItem == true && oth.BoothNo == data.BoothNo);\r\n    else\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.WeeklyOtherRentalIds == data.WeeklyOtherRentalIds && oth.BoothNo == data.BoothNo);\r\n\r\n    if (index !== -1) {\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: data.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: data.Quantity,\r\n        OtherItemCharge: data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')') ? (-1) * parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n        WRNewVendorRequest: this.newVendor\r\n      }\r\n      this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        const isNegative = data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        data.OtherItemtotal = this.customCurrency.transform((finalCharge * data.Quantity).toString());\r\n        this.selectedOtherItems[index].OtherItemtotal = data.OtherItemtotal;\r\n        this.selectedOtherItems[index].OtherItemCharge = this.customCurrency.transform((finalCharge).toString());\r\n        this.selectedOtherItems[index].Recurring = data.Recurring;\r\n        this.selectedOtherItems[index].Reference = data.Reference;\r\n        this.selectedOtherItems[index].Quantity = data.Quantity;\r\n        this.gridOtherRental.refresh();\r\n        this.totalOtherRentalCharge += data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.getDiscounts();\r\n      });\r\n    }\r\n  }\r\n\r\n  cancelRental() {\r\n    if (this.isdirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isFormDirty.emit(false);\r\n          this.isCancelClicked.emit('5');\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n      this.isFormDirty.emit(false);\r\n      this.isCancelClicked.emit('5');\r\n    }\r\n  }\r\n\r\n  addOtherCharges() {\r\n    if (this.selectedOtherCharges) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedOtherCharges.map((el, i) => {\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: el.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: el.Quantity,\r\n          OtherItemCharge: el.OtherItemCharge.includes('(') && el.OtherItemCharge.includes(')') ? (-1) * parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n        const index = this.selectedOtherItems.findIndex(item => item.Id === el.Id && item.RentalWeek == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'] && item.NewItem == true && item.BoothNo === el.othChgBooths);\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          var newItem = [];\r\n          if (index !== -1) {\r\n            var otherItemTotal = this.selectedOtherItems[index].OtherItemtotal;\r\n            var salesTax = this.selectedOtherItems[index].SalesTax;\r\n            var cityTax = this.selectedOtherItems[index].CityTax;\r\n            this.totalOtherRentalCharge -= otherItemTotal.toString().includes('(') && otherItemTotal.toString().includes(')') ? -1 * parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= salesTax.toString().includes('(') && salesTax.toString().includes(')') ? -1 * parseFloat(salesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(salesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= cityTax.toString().includes('(') && cityTax.toString().includes(')') ? -1 * parseFloat(cityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(cityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge =  this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.rentalForm.patchValue({\r\n              totalOtherRentalCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n            const ob = {\r\n              Id: el.Id,\r\n              WeekOtherRentalId: 0,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              OtherItem: el.OtherItem,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalWeek: el.RentalWeek,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              WeeklyOtherRentalIds:''\r\n            }\r\n            this.selectedOtherItems[index] = ob;\r\n            this.gridOtherRental.refresh();\r\n          }\r\n          else {\r\n            const ob = {\r\n              Id: el.Id,\r\n              WeekOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalWeek: el.RentalWeek,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference:el.Reference,\r\n              NewItem: true,\r\n              WeeklyOtherRentalIds: ''\r\n            }\r\n            newItem.push(JSON.parse(JSON.stringify(ob)));\r\n            this.isdirty = true;\r\n            this.isFormDirty.emit(true);\r\n          }\r\n          this.totalOtherRentalCharge += el.OtherItemtotal.toString().includes('(') && el.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n           this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.rentalForm.patchValue({\r\n            totalOtherRentalCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n          this.getDiscounts();\r\n          if (newItem.length > 0) {\r\n            this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n          }\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n      const modal = this.modalWeeklyOtherCharges.nativeElement;\r\n      if (modal.classList.contains('show')) {\r\n        modal.style.display = 'none';\r\n        modal.classList.remove('show');\r\n      }\r\n    }\r\n  }\r\n\r\n  deleteOtherRentalCharges(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Other Charges?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalWeek == data.RentalWeek);\r\n        if (index !== -1) {\r\n          this.selectedOtherItems.splice(index, 1);\r\n        }\r\n        var selectedItems = this.otherRentalCharges.findIndex(item => item.Id == data.Id);\r\n        if (selectedItems != -1) {\r\n          this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n            if (response) {\r\n              const masterChargeRecord = response.filter(item => item.OtherItemId == data.Id);\r\n              if (masterChargeRecord) {\r\n                this.otherRentalCharges[selectedItems].Quantity = 0;\r\n                this.otherRentalCharges[selectedItems].othChgBooths = \"none\";\r\n                this.otherRentalCharges[selectedItems].OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemCombinedWeeklyCharge);\r\n                this.otherRentalCharges[selectedItems].OtherItemtotal = this.customCurrency.transform('0');\r\n                this.otherRentalCharges[selectedItems].Reference = \"\"\r\n                this.otherRentalCharges[selectedItems].Recurring = masterChargeRecord[0].Recurring\r\n              }\r\n            }\r\n          }, (err) => {\r\n          });\r\n        }\r\n\r\n        this.totalOtherRentalCharge -= data.OtherItemtotal.includes('(') && data.OtherItemtotal.includes(')') ? -1 * parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.gridOtherRental.refresh();\r\n        this.getDiscounts();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteSelectedBooth(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Booth?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedWeeklyBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentStartPeriod == data.RentStartPeriod && selectedBooth.RentEndPeriod == data.RentEndPeriod);\r\n        if (index !== -1) {\r\n          this.selectedWeeklyBooths.splice(index, 1);\r\n        }\r\n        if (this.tempRecordNo) {\r\n          const temp = {\r\n            TempRecordNo: this.tempRecordNo.toString(),\r\n            BoothNumber: data.BoothNumber,\r\n            StartDate: new Date(data.RentalStartDate),\r\n            RentalType: 5,\r\n            EndDate: new Date(data.RentalEndDate),\r\n            Sunday: data.Sunday,\r\n            Monday: data.Monday,\r\n            Tuesday: data.Tuesday,\r\n            Wednesday: data.Wednesday,\r\n            Thursday: data.Thursday,\r\n            Friday: data.Friday,\r\n            Saturday: data.Saturday\r\n          }\r\n          this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          }));\r\n        }\r\n        this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n         this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.getDiscounts();\r\n        this.gridWeeklyRental.refresh();\r\n      }\r\n    });\r\n  }\r\n\r\n  setDefaultRentalItem(args, selectedItems) {\r\n    selectedItems.Quantity = 0\r\n    selectedItems.OtherItemtotal = 0\r\n    if (args.srcElement.checked) {\r\n      selectedItems.otherItemChecked = true;\r\n      selectedItems.Quantity = 1\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString());\r\n      this.selectedOtherCharges.push({\r\n        Id: selectedItems.Id,\r\n        OtherItem: selectedItems.OtherItem,\r\n        OtherItemCharge: selectedItems.OtherItemCharge,\r\n        Quantity: selectedItems.Quantity,\r\n        OtherItemtotal: selectedItems.OtherItemtotal,\r\n        othChgBooths: selectedItems.othChgBooths,\r\n        Recurring: selectedItems.Recurring,\r\n        RentalWeek: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']\r\n      });\r\n    } else {\r\n      selectedItems.otherItemChecked = false;\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id);\r\n      if (index !== -1) {\r\n        this.selectedOtherCharges.splice(index, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  isDateSelected(item: any): boolean {\r\n    var  isItemSelected = this.selectedOtherItems.some(\r\n      (element) =>\r\n        (element.RentalWeek === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek']) &&\r\n        element.Id === item.Id && element.NewItem == true\r\n    );\r\n\r\n    if(!isItemSelected){\r\n      isItemSelected = this.selectedOtherCharges.some(\r\n        (element) =>\r\n          (element.RentalWeek === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketWeek'])  &&\r\n          element.Id === item.Id\r\n      );\r\n    }\r\n\r\n    !isItemSelected? item.otherItemChecked = false : item.otherItemChecked = true;\r\n    item.othChgBooths = \"none\";\r\n    return isItemSelected;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\n","<form [formGroup]=\"rentalForm\">\r\n    <div *ngIf=\"!displayLayout\">\r\n        <div class=\"row\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4\"></div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 mblRightToLeft mt-1\">\r\n                        <label class=\"mt-2 mb-0\">Select Layout Part</label>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 mblRightToLeft mt-2\">\r\n                        <select class=\"form-control respLayoutPart\" formControlName=\"marketParts\">\r\n                            <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">{{item.PartDescription}}</option>\r\n                        </select>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-3 col-xl-3 mblRightToLeft mt-2\">\r\n                        <button class=\"btn btn-primary py-2\" (click)=\"openLayout()\">Select Booth</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row mb-3\">\r\n            <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        * Select Market Day(s) Here\r\n                    </div>\r\n                    <ul class=\"list-group list-group-flush\">\r\n                        <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkMonday\"\r\n                                    formControlName=\"marketWeekMonday\" (change)=\"toggleDaySelection('Monday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkMonday\" i18n>\r\n                                    Monday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkTuesday\"\r\n                                    formControlName=\"marketWeekTuesday\"\r\n                                    (change)=\"toggleDaySelection('Tuesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkTuesday\" i18n>\r\n                                    Tuesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkWednesday\"\r\n                                    formControlName=\"marketWeekWednesday\"\r\n                                    (change)=\"toggleDaySelection('Wednesday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkWednesday\" i18n>\r\n                                    Wednesday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkThursday\"\r\n                                    formControlName=\"marketWeekThursday\"\r\n                                    (change)=\"toggleDaySelection('Thursday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkThursday\" i18n>\r\n                                    Thursday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkFriday\"\r\n                                    formControlName=\"marketWeekFriday\" (change)=\"toggleDaySelection('Friday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkFriday\" i18n>\r\n                                    Friday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSaturday\"\r\n                                    formControlName=\"marketWeekSaturday\"\r\n                                    (change)=\"toggleDaySelection('Saturday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSaturday\" i18n>\r\n                                    Saturday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                        <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                            <div class=\"form-check d-flex align-items-center\">\r\n                                <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSunday\"\r\n                                    formControlName=\"marketWeekSunday\" (change)=\"toggleDaySelection('Sunday', $event)\">\r\n                                <label class=\"form-check-label ml-2 mt-1\" for=\"chkSunday\" i18n>\r\n                                    Sunday\r\n                                </label>\r\n                            </div>\r\n                        </li>\r\n                    </ul>\r\n                </div>\r\n                <div class=\"card shadow mt-2\">\r\n                    <div class=\"card-header fw-700\">\r\n                        Monthly Market(s):\r\n                    </div>\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Month</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"rentalStartMonth\"\r\n                                (change)=\"checkRentalMonths()\">\r\n                                <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                    {{item.RentalMonths}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label>Rental End Month</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"rentalEndMonth\"\r\n                                (change)=\"checkRentalMonths()\">\r\n                                <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                    {{item.RentalMonths}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <label i18n>Rental Start Date</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"monthlyRentalStartDates\">\r\n                                <option *ngFor=\"let item of monthlyRentalStartDates;\" [value]=\"item.startDate\">\r\n                                    {{item.startDate}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-right\">\r\n                <div class=\"vendorDetails mt-2\">\r\n                    <ejs-grid #gridMonthlyRental [dataSource]='selectedMonthlyBooths'\r\n                        class=\"Table_Height_store table-striped table-ipad\" [gridLines]='lines' height=\"150\"\r\n                        [allowSelection]=\"true\" (rowSelected)='rowSelected($event)' allowSorting='true'\r\n                        [sortSettings]='sortOptions' (created)=\"created($event)\" [textWrapSettings]=\"textWrapSettings\"\r\n                        allowTextWrap=\"true\">\r\n                        <e-columns>\r\n                            <e-column field='BoothNumber' headerText='Booth#' textAlign='left' width=130>\r\n                            </e-column>\r\n                            <e-column field='BoothDescription' headerText='Booth Description' textAlign='left'\r\n                                width=210>\r\n                            </e-column>\r\n                            <e-column field='Product' headerText='Product' textAlign='left' width=210>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <select class=\"form-control\" [(ngModel)]=\"data.Product\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"productChange(data)\">\r\n                                            <option *ngFor=\"let item of vendorProducts\" [value]=\"item.ProductId\">\r\n                                                {{item.ProductName}}</option>\r\n                                        </select></span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='RentStartPeriod' textAlign='left' headerText='Rent Start Period' width=200>\r\n                            </e-column>\r\n                            <e-column field='RentEndPeriod' textAlign='left' headerText='Rent End Period' width=200>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\"\r\n                                        (click)=\"rentalExtension(RentalExtension,data)\">{{data.RentEndPeriod}}</span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='Rent' headerText='Rent' textAlign=\"right\" width=120>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign=\"right\" width=170>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign=\"right\" width=170>\r\n                            </e-column>\r\n                            <e-column field='RentalEndDate' textAlign='left' headerText='Rental End Date' width=200>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteSelectedBooth(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n                <div class=\"row\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <div class=\"col-12 text-right\" style=\"margin-top: 18px\">\r\n                        <button class=\"btn btn-primary\" data-toggle=\"modal\"\r\n                            data-target=\"#modalMonthlyOtherCharges\">Select Other Item</button>\r\n                    </div>\r\n                </div>\r\n                <div class=\"vendorDetails mt-2\" *ngIf=\"AllowRentingOtherItems\">\r\n                    <ejs-grid #gridOtherRental [dataSource]='selectedOtherItems'\r\n                        class=\"Table_Height_store table-striped table-ipad\" height='150' allowSorting='true'\r\n                        [sortSettings]='sortOtherItemsOptions'>\r\n                        <e-columns>\r\n                            <e-column field='OtherItem' headerText='Item' textAlign='left' width=180>\r\n                            </e-column>\r\n                            <e-column field='Recurring' headerText='Rec' textAlign='left' width=110>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <div class=\"checkbox-wrapper mt-2\">\r\n                                            <label class=\"pure-material-checkbox \">\r\n                                                <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" [(ngModel)]=\"data.Recurring\"\r\n                                                    (change)=\"updateOtherItem(data)\">\r\n                                                <span i18n></span>\r\n                                            </label>\r\n                                        </div>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='OtherItemCharge' headerText='Charge' textAlign='right' width=140>\r\n                            </e-column>\r\n                            <e-column field='Quantity' headerText='Qty' textAlign='left' width=120>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" style=\"text-align: center;\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Quantity\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (blur)=\"updateOtherItem(data)\"\r\n                                            (keydown)=\"onCheckNumKeyPress($event)\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column field='BoothNo' headerText='Booth#' textAlign='left' width=120>\r\n                            </e-column>\r\n                            <e-column field='RentalMonth' headerText='Month' width=200 textAlign='left'>\r\n                            </e-column>\r\n                            <e-column field='OtherItemtotal' headerText='Total' textAlign=\"right\" width=150>\r\n                            </e-column>\r\n                            <e-column field='SalesTax' headerText='Sales Tax' textAlign=\"right\" width=150>\r\n                            </e-column>\r\n                            <e-column field='CityTax' headerText='Sec Level Tax' textAlign=\"right\" width=180>\r\n                            </e-column>\r\n                            <e-column field='Reference' headerText='Reference' textAlign='left' width=180>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"dataName\">\r\n                                        <input type=\"text\" class=\"form-control\" (blur)=\"updateOtherItem(data)\"\r\n                                            [disabled]=\"!data.NewItem\" [(ngModel)]=\"data.Reference\"\r\n                                            [ngModelOptions]=\"{standalone: true}\">\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                            <e-column headerText='Delete' field=\"Delete\" textAlign='center' width='150'>\r\n                                <ng-template #template let-data>\r\n                                    <span class=\"Delete\">\r\n                                        <button class=\"colDelete\" (click)=\"deleteOtherRentalCharges(data)\"><img\r\n                                                src=\"../assets/images/Delete_Icon.svg\" class=\"img-fluid\"\r\n                                                style=\"max-width: 80% !important;\" /></button>\r\n                                    </span>\r\n                                </ng-template>\r\n                            </e-column>\r\n                        </e-columns>\r\n                    </ejs-grid>\r\n                </div>\r\n\r\n                <div class=\"vendorDetails1 mt-2\">\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"!newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\"\r\n                            (click)=\"saveRentalWithPayment()\">Pay</button>\r\n                    </div>\r\n                    <div class=\"float-right bottom_button mt-sm-2 w-100 d-flex\" *ngIf=\"newVendor\">\r\n                        <button type=\"button\" i18n class=\"btn btnCancel mr-1\" (click)=\"cancelRental()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" [disabled]=\"disableSavePayment()\"\r\n                            (click)=\"rentOnlineNextTab()\">Next</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <!-- Modal for Adding Other Charges -->\r\n    <div class=\"modal fade bd-example-modal-xl\" #modalMonthlyOtherCharges id=\"modalMonthlyOtherCharges\" tabindex=\"-1\"\r\n        role=\"dialog\" aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n        <div class=\"modal-dialog modal-dialog-centered modal-xl\" role=\"document\">\r\n            <div class=\"modal-content contentNewBooths\">\r\n                <div class=\"modal-header modal-headerNewBooths\">\r\n                    <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Other Charges</h5>\r\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                        <span aria-hidden=\"true\">&times;</span>\r\n                    </button>\r\n                </div>\r\n                <div class=\"modal-body modal-bodyNewBooths\" formGroupName=\"otherItemsScreen\">\r\n                    <div class=\"row mt-0\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                            <label i18n>Rental Month</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                            <select class=\"form-control\" formControlName=\"otherChargeMarketMonth\"\r\n                                (change)=\"getBoothsAndItemsForOtherCharges()\">\r\n                                <option *ngFor=\"let item of monthlyMarketDays;\" [value]=\"item.RentalMonths\">\r\n                                    {{item.RentalMonths}}</option>\r\n                            </select>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row mt-2\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\">\r\n                            <label i18n>Search Value</label>\r\n                        </div>\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-4 text-left\">\r\n                            <input type=\"text\" class=\"form-control\" formControlName=\"otherItemSearchText\"\r\n                                (keyup)=\"searchOtherItem()\">\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\" style=\"height: 55vh; overflow-y: scroll;\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-2\">\r\n                            <div class=\"availableBoothsHeading pt-1 pb-1\">\r\n                                <label i18n>Other Charges</label>\r\n                            </div>\r\n                            <div class=\"scroll_outer\">\r\n                                <table class=\"table table-striped table-hover followup-table mb-0\">\r\n                                    <thead>\r\n                                        <tr>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"40\"></th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"180\" i18n>Items</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"50\" i18n>Rec</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"100\"\r\n                                                *ngIf=\"displayOtherChargeByBooth\" i18n>Booth#</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"120\" i18n>Charges</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"100\" i18n>Qty</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"120\" i18n>Total</th>\r\n                                            <th class=\"text-left tblAvailableBooths\" width=\"160\" i18n>Reference</th>\r\n                                        </tr>\r\n                                    </thead>\r\n                                    <tbody>\r\n                                        <tr *ngFor=\"let item of otherRentalCharges\">\r\n                                            <td class=\"text-left\" style=\"width: 10%;\">\r\n                                                <label class=\"pure-material-checkbox\">\r\n                                                    <input type=\"checkbox\" [checked]=\"isDateSelected(item)\"\r\n                                                        (change)=\"setDefaultRentalItem($event,item)\"\r\n                                                        [(ngModel)]=\"item.isOtherItemChecked\"\r\n                                                        [ngModelOptions]=\"{standalone: true}\">\r\n                                                    <span></span>\r\n                                                </label>\r\n                                            </td>\r\n                                            <td class=\"text-left\" style=\"width: 35%;\">{{item.OtherItem}}</td>\r\n                                            <td class=\"text-left\">\r\n                                                <div class=\"checkbox-wrapper mt-2\" style=\"width: 15%;\">\r\n                                                    <label class=\"pure-material-checkbox \">\r\n                                                        <input type=\"checkbox\" class=\"checkBoxClass\"\r\n                                                            [(ngModel)]=\"item.Recurring\"\r\n                                                            [ngModelOptions]=\"{standalone: true}\"\r\n                                                            (change)=\"otherItemUpdate(item)\"\r\n                                                            [disabled]=\"!item.otherItemChecked\">\r\n                                                        <span></span>\r\n                                                    </label>\r\n                                                </div>\r\n                                            </td>\r\n                                            <td class=\"text-left tblAvailableBooths\" style=\"width: 35%;\"\r\n                                                *ngIf=\"displayOtherChargeByBooth\">\r\n                                                <select class=\"form-control\" [(ngModel)]=\"item.othChgBooths\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                    (change)=\"otherItemUpdate(item)\"\r\n                                                    [disabled]=\"!item.otherItemChecked\">\r\n                                                    <option value=\"none\">None</option>\r\n                                                    <option *ngFor=\"let booth of boothsForOtherCharge\"\r\n                                                        [value]=\"booth.BoothNumber\">{{booth.BoothNumber}}</option>\r\n                                                </select>\r\n                                            </td>\r\n                                            <td class=\"text-left\" style=\"width: 30%;\">\r\n                                                <input type=\"text\" class=\"form-control text-right pr-1\"\r\n                                                    [(ngModel)]=\"item.OtherItemCharge\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                    (change)=\"otherItemUpdate(item)\" disabled=\"true\">\r\n                                            </td>\r\n                                            <td class=\"text-left\" style=\"width: 25%;\"><input type=\"number\"\r\n                                                    class=\"form-control\" [(ngModel)]=\"item.Quantity\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\" min=\"1\"\r\n                                                    (ngModelChange)=\"otherItemUpdate(item)\"\r\n                                                    [disabled]=\"!item.otherItemChecked\" onkeydown=\"return false\">\r\n                                            </td>\r\n                                            <td class=\"text-right\" style=\"width: 20%;\">{{item.OtherItemtotal}}</td>\r\n                                            <td class=\"text-left\" style=\"width: 35%;\">\r\n                                                <input type=\"text\" class=\"form-control\" [(ngModel)]=\"item.Reference\"\r\n                                                    [ngModelOptions]=\"{standalone: true}\"\r\n                                                    (keyup)=\"otherItemUpdate(item)\" [disabled]=\"!item.otherItemChecked\">\r\n                                            </td>\r\n                                        </tr>\r\n                                    </tbody>\r\n                                </table>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div class=\"modal-footer pt-0 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-2\">\r\n                            <button class=\"btn btn-primary mr-1\" (click)=\"addOtherCharges()\" data-dismiss=\"modal\"\r\n                                aria-label=\"Close\" i18n>OK</button>\r\n                            <button class=\"btn btn-outline-primary\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                                i18n>Cancel</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <!-- Ends Modal for Adding Other Charges -->\r\n</form>\r\n\r\n<div *ngIf=\"displayLayout\">\r\n    <app-rentallayout-online [marketId]=\"marketId\" [layoutParts]=\"layoutParts\" [LayoutData]=\"MonthlyLayoutData\"\r\n        rentalType=\"CM\" (selectedBoothsFromLayout)=\"selectedBoothsFromLayout($event)\" (CloseLayout)=\"closeLayoutForm()\"\r\n        (removeBoothCharges)=\"removeBoothCharges($event)\"></app-rentallayout-online>\r\n</div>\r\n\r\n<!-- Modal for Resale Number -->\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>{{ResaleOrBusinessHeader}}</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"resaleNoDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\"\r\n                                maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\" *ngIf=\"businessLicenseDisplay\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Business License Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseNumberInp\">Business License Number</label>\r\n                            <input type=\"text\" id=\"businesLicenseNumberInp\" class=\"form-control\"\r\n                                [(ngModel)]=\"businessLicenseNumber\" maxlength=\"30\" />\r\n                        </div>\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"businesLicenseExpDateInp\">Business Expiry Date</label>\r\n                            <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false id=\"businesLicenseExpDateInp\"\r\n                                [(ngModel)]=\"businessLicenseExpiryDate\" i18n-placeholder=\"Business License Expiry Date\"\r\n                                placeholder=\"Business License Expiry Date\" [min]=\"minExpiryDate\"></ejs-datepicker>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n\r\n                                (click)=\"AddBoothsOnGridOnValidationSucess()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n<!-- Modal for Resale Number -->","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { GridComponent, SortSettingsModel } from '@syncfusion/ej2-angular-grids';\r\nimport { catchError, forkJoin, of, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport Swal from 'sweetalert2';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-combinedmonthlyrental-online',\r\n  templateUrl: './combinedmonthlyrental-online.component.html',\r\n  styleUrls: ['./combinedmonthlyrental-online.component.scss', '../rent-online.component.scss']\r\n})\r\nexport class CombinedmonthlyrentalOnlineComponent implements OnInit, OnDestroy {\r\n  rentalForm : FormGroup;\r\n  marketId;\r\n  vendorId;\r\n  sunday = false;\r\n  monday = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  selectedMarketDays=[];\r\n  parts=[];\r\n  monthlyRentalStartDates = [];\r\n  defaultPart;\r\n  monthlyMarketDays = [];\r\n  excludedMarketDays=[];\r\n  selectedOtherItems = []\r\n  selectedMonthlyBooths = []\r\n  displaySalesTax = false;\r\n  displayCityTax = false;\r\n  tempRecordNo = 0;\r\n  otherRentalCharges = [];\r\n  otherItemList = [];\r\n  vendorProducts = [];\r\n  defaultProduct;\r\n  vendorDiscountPlans =[];\r\n  priorBalance = 0.00;\r\n  layoutParts = 0;\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  selectedDates = [];\r\n  private subscriptions: Subscription[] = [];\r\n  public textWrapSettings: any = { wrapMode: 'Both' }; // Enable text wrapping\r\n  MonthlyLayoutData;\r\n  combinedMonthlyBookingEndDate;\r\n  displayLayout = false;\r\n  totalDiscountCharge;\r\n  ApplyBookingFee = false;\r\n  ApplyBookingFeeId;\r\n  boothsForOtherCharge = [];\r\n  bookingFeeAmount;\r\n  displayOtherChargeByBooth = false;\r\n  displayOtherChargeSalesTax = false;\r\n  displayOtherChargeCityTax = false;\r\n  warnExcessPayment = false;\r\n  warnZeroPayment = false;\r\n  RentalTaxPercentage = 0;\r\n  OtherRentalTaxPercentage = 0;\r\n  RentalSecondTaxPercentage = 0;\r\n  OtherRentalSecondTaxPercentage = 0;\r\n  DisplayPayDueDate = false;\r\n  DisplaySpecificDate = false;\r\n  OtherChargesPeriod = false;\r\n  DisplayOptionValue = 0;\r\n  secondTaxName = \"\";\r\n  selectedMonthlyBoothData = [];\r\n  @ViewChild('gridMonthlyRental', { static: false }) public gridMonthlyRental: GridComponent;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  @ViewChild('modalMonthlyOtherCharges', { static: false }) modalMonthlyOtherCharges: ElementRef;\r\n  @ViewChild('gridOtherRental', { static: false }) public gridOtherRental: GridComponent;\r\n  ResaleNumberRequired  = false;\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  AllowRentingOtherItems = false;\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  resaleNoDisplay = false;\r\n  businessLicenseDisplay = false;\r\n  ResaleOrBusinessHeader = \"\";\r\n  businessLicenseNumber;\r\n  businessLicenseExpiryDate;\r\n  vendorRentalDays = [];\r\n  marketDayCountForResale = 0;\r\n  resaleOptionSelected = false;\r\n  selectedBoothsForRental=[];\r\n  perDiemRentApplicable = false;\r\n  selectedOtherCharges = [];\r\n  isdirty = false;\r\n  @Input() newVendor;\r\n  @Output() bookingFormCompleted = new EventEmitter<any>(); \r\n  @Output() rentalBookingData = new EventEmitter<any>();\r\n  @Output() isFormDirty = new EventEmitter<any>(); \r\n  @Output() isCancelClicked = new EventEmitter<any>();\r\n  @Output() resaleNoInputRequired = new EventEmitter<any>();\r\n  @Output() businessLicenseRequired = new EventEmitter<any>(); \r\n  constructor( private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    public vendorService: VendorService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private datePipe: DatePipe,\r\n    private sharedDataService: SharedDataService,\r\n    private marketInfoService: MarketInfoService){\r\n      this.rentalForm = this.formbuilder.group({\r\n        marketWeekSunday: [0],\r\n        marketWeekMonday: [0],\r\n        marketWeekTuesday: [0],\r\n        marketWeekWednesday: [0],\r\n        marketWeekThursday: [0],\r\n        marketWeekFriday: [0],\r\n        marketWeekSaturday: [0],\r\n        marketParts:[''],\r\n        rentalStartMonth:[''],\r\n        rentalEndMonth: [''],\r\n        monthlyRentalStartDates:[],\r\n        otherItemsScreen: this.formbuilder.group({\r\n          otherChargeMarketMonth: [''],\r\n          otherItemSearchText: ['']\r\n        })\r\n      })\r\n    }\r\n  sortOptions: SortSettingsModel = {\r\n    columns: [{ field: 'RentalStartDate', direction: 'Ascending' }, { field: 'BoothNumber', direction: 'Ascending' }]\r\n  };\r\n  sortOtherItemsOptions: SortSettingsModel = {\r\n    columns: [{ field: 'OtherItem', direction: 'Ascending' }, { field: 'BoothNo', direction: 'Ascending' }]\r\n  };\r\n  public loaderIcon: Promise<boolean>;\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.getMarketDays();\r\n    this.getRentalPaymentSettings();\r\n    this.getVendorProducts();\r\n    this.getParts();\r\n    this.getMarketVendorSettings();\r\n    this.getVendorBusinessLicenseSettings();\r\n    this.generateTempRecordNumber();\r\n    this.getVendorBalances();\r\n    this.getOtherRentalItems();\r\n    if (this.sharedDataService.paymentSharedData)\r\n      this.loadSelectedBooths();\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMarketVendorSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getMarketVendorSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n      var response = res.body;\r\n      if (response) {\r\n        this.exemptResale = response.ExemptResale;\r\n        this.resaleNo = response.Resale;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBusinessLicenseSettings(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.vendorService.getVendorBusinessLicenseSettings(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.businessLicenseNumber = res.LicenseNumber;\r\n        this.businessLicenseExpiryDate = res.ExpiryDate;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.warnExcessPayment = res.WarnExcessPayment;\r\n        this.warnZeroPayment = res.WarnZeroPayment;\r\n        this.displayOtherChargeByBooth = res.DisplayOtherChargesByBooth;\r\n        this.displayCityTax = res.RentalSecondTaxable;\r\n        this.displaySalesTax = res.RentalTaxable;\r\n        this.perDiemRentApplicable = res.PerDiemRentApplicable;\r\n        this.gridMonthlyRental.getColumnByField(\"SalesTax\").visible = this.displaySalesTax;\r\n        this.gridMonthlyRental.getColumnByField(\"CityTax\").visible = this.displayCityTax;\r\n        if(this.newVendor){\r\n          this.gridMonthlyRental.getColumnByField(\"Product\").visible = false;\r\n        }\r\n        this.gridMonthlyRental.refreshColumns();\r\n        this.displayOtherChargeSalesTax = res.OtherRentalTaxable;\r\n        this.displayOtherChargeCityTax = res.OtherRentalSecondTaxable;       \r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.DisplayPayDueDate = res.DisplayPayDueDate;\r\n        this.DisplaySpecificDate = res.DisplaySpecificDate;\r\n        this.DisplayOptionValue = res.DisplayOptionValue;\r\n        const nextDate = this.getNextDate(this.DisplayOptionValue);\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\"\r\n        var secLevelTaxRentHeader = this.gridMonthlyRental.getColumnByField(\"CityTax\"); \r\n        secLevelTaxRentHeader.headerText = this.secondTaxName;   \r\n        this.combinedMonthlyBookingEndDate = res.CombinedMonthlyBookingEndDate;\r\n        this.RentalTaxPercentage = res.RentalTaxPercentage;\r\n        this.OtherRentalTaxPercentage = res.OtherRentalTaxPercentage;\r\n        this.RentalSecondTaxPercentage = res.RentalSecondTaxPercentage;\r\n        this.OtherRentalSecondTaxPercentage = res.OtherRentalSecondTaxPercentage;\r\n        this.OtherChargesPeriod = res.OtherChargesPeriod;\r\n        this.gridMonthlyRental.refresh();\r\n        if(this.AllowRentingOtherItems){\r\n          var secLevelTaxOtherRentHeader = this.gridOtherRental.getColumnByField(\"CityTax\"); \r\n          secLevelTaxOtherRentHeader.headerText = this.secondTaxName;\r\n          this.gridOtherRental.getColumnByField(\"BoothNo\").visible = res.DisplayOtherChargesByBooth;\r\n          this.gridOtherRental.getColumnByField(\"SalesTax\").visible = this.displayOtherChargeSalesTax;\r\n          this.gridOtherRental.getColumnByField(\"CityTax\").visible = this.displayOtherChargeCityTax;\r\n          this.gridOtherRental.refreshColumns();\r\n          this.gridOtherRental.refresh();\r\n        }       \r\n      }\r\n    });\r\n  }\r\n\r\n  getNextDate(day: number): Date {\r\n    if (this.DisplaySpecificDate) {\r\n      const today = new Date();\r\n      let nextDate = new Date(today.getFullYear(), today.getMonth(), day);\r\n      // If the nextDate is in the past or today, move to the next month\r\n      if (nextDate < today) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n      }\r\n      // Handle cases where the day is not valid in the next month (e.g., 31st in February)\r\n      while (nextDate.getDate() !== day) {\r\n        nextDate.setMonth(nextDate.getMonth() + 1);\r\n        nextDate.setDate(day);\r\n      }\r\n      return nextDate;\r\n    }\r\n    else{\r\n      const today = new Date();\r\n      let nextDate = new Date(today.setDate(today.getDate() + day));\r\n      return nextDate;\r\n    }\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    var formattedDate;\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n      var input = this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'];\r\n      const date = new Date(`${input} 1`);\r\n      formattedDate = this.datePipe.transform(`${date.getMonth() + 1}/${date.getDate()}/${date.getFullYear()}`, 'MM/dd/yyyy');\r\n    }\r\n    this.subscriptions.push(this.rentalService.getOtherRentalItems(this.marketId, formattedDate).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          if (el.WebRental) {\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherItemCombinedMonthlyCharge),\r\n              Quantity: 0,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              othChgBooths: \"none\"\r\n            }\r\n            this.otherRentalCharges.push(ob);\r\n            this.otherItemList.push(ob);\r\n          }\r\n        });\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  loadSelectedBooths() {    \r\n    var newItem =[];\r\n    if (this.sharedDataService.paymentSharedData.ReturnData.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.ReturnData.forEach((item) => {\r\n        var newbooths=[];\r\n        var ob = {\r\n        BoothNumber: item.BoothNumber,\r\n        BoothType: item.BoothType,\r\n        BoothTypeId: item.BoothTypeId,\r\n        BoothDescription: item.BoothDescription,\r\n        Product:item.Product,\r\n        RentStartPeriod:item.RentStartPeriod,\r\n        RentEndPeriod: item.RentEndPeriod,\r\n        RentalSavedEndDate: item.RentalSavedEndDate,\r\n        RentalStartDate: item.RentalStartDate,\r\n        RentalEndDate: item.RentalEndDate,\r\n        MktDays: item.MktDays,\r\n        Rent: item.Rent,\r\n        SalesTax: item.SalesTax,\r\n        CityTax: item.CityTax,\r\n        PerDiem: item.PerDiem,\r\n        PerDiemRent: item.PerdiemRent,\r\n        Sunday: item.Sunday,\r\n        Monday: item.Monday,\r\n        Tuesday: item.Tuesday,\r\n        Wednesday: item.Wednesday,\r\n        Thursday: item.Thursday,\r\n        Friday: item.Friday,\r\n        Saturday: item.Saturday,\r\n        Reservation: item.Reservation,\r\n        Drop:  item.Drop,\r\n        January: item.January,\r\n        February: item.February,\r\n        March: item.March,\r\n        April: item.April,\r\n        May: item.May,\r\n        June: item.June,\r\n        July: item.July,\r\n        August: item.August,\r\n        September: item.September,\r\n        October: item.October,\r\n        November: item.November,\r\n        December: item.December,\r\n        JanuaryMonthPresent: item.JanuaryMonthPresent,\r\n        FebruaryMonthPresent: item.FebruaryMonthPresent,\r\n        MarchMonthPresent:  item.MarchMonthPresent,\r\n        AprilMonthPresent:  item.AprilMonthPresent,\r\n        MayMonthPresent: item.MayMonthPresent,\r\n        JuneMonthPresent: item.JuneMonthPresent,\r\n        JulyMonthPresent: item.JulyMonthPresent,\r\n        AugustMonthPresent: item.AugustMonthPresent,\r\n        SeptemberMonthPresent: item.SeptemberMonthPresent,\r\n        OctoberMonthPresent: item.OctoberMonthPresent,\r\n        NovemberMonthPresent: item.NovemberMonthPresent,\r\n        DecemberMonthPresent: item.DecemberMonthPresent,\r\n        NewBooth: true,\r\n        Status: \"N\",         \r\n        StartDateList:item.StartDateList,\r\n        DisableStartDate: false,\r\n        AllRentalDates: item.AllRentalDates,\r\n        TaxModel: item.TaxModel\r\n        }\r\n        newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n        this.selectedMonthlyBooths = this.selectedMonthlyBooths.concat(newbooths);    \r\n      });\r\n    }\r\n    if (this.sharedDataService.paymentSharedData.MonthlyOtherRentalCharges.length > 0) {\r\n      this.isdirty = true;\r\n      this.isFormDirty.emit(true);\r\n      this.sharedDataService.paymentSharedData.MonthlyOtherRentalCharges.forEach((el) => {\r\n        if (el.MonthOtherRentalId == 0) {\r\n          const year = el.YearMonth.substr(0, 4);\r\n          const month = el.YearMonth.substr(4, 2);\r\n          const monthInWord = this.datePipe.transform(new Date(year, month - 1), 'MMMM');\r\n          const extractedYearMonth = `${monthInWord} ${year}`;\r\n          newItem = [];\r\n          var ob = {\r\n            Id: el.OtherItemId,\r\n            MonthOtherRentalId: el.MonthOtherRentalId,\r\n            OtherItem: el.OtherItemName,\r\n            OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n            Quantity: el.Quantity,\r\n            OtherItemtotal: this.customCurrency.transform(el.OtherItemCharge),\r\n            RentalMonth: extractedYearMonth,\r\n            Recurring: el.Recurring,\r\n            SalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n            CityTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n            BoothNo: el.BoothNumber,\r\n            Reference: el.Reference,\r\n            NewItem: true\r\n          }\r\n          newItem.push(JSON.parse(JSON.stringify(ob)));\r\n        }      \r\n\r\n        if (newItem.length > 0) {\r\n          this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n        }\r\n      });     \r\n    }\r\n\r\n    this.totalRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.RentalCharge);\r\n    this.totalOtherRentalCharge = parseFloat(this.sharedDataService.paymentSharedData.OtherCharge.toString());\r\n    this.totalSalesTax = parseFloat(this.sharedDataService.paymentSharedData.SalesTax.toString());\r\n    this.totalSecondLeveltax = parseFloat(this.sharedDataService.paymentSharedData.SecLevelTax.toString());\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    this.sharedDataService.paymentSharedData = \"\";\r\n    this.getDiscounts();\r\n  }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.defaultProduct = this.vendorProducts[0].ProductId;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  generateTempRecordNumber() {\r\n    this.subscriptions.push(this.rentalService.generateTempRecordNumber(this.marketId).subscribe((response) => {\r\n      if (response.Success) {\r\n        this.tempRecordNo = response.Message;\r\n      }\r\n    }));\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.vendorDiscountPlans =[];\r\n  forkJoin({\r\n    vendorBalanceRes: this.rentalService.getVendorBalances(this.vendorId, this.marketId),\r\n    discountPlansRes:    this.vendorService.GetDiscountPlan(this.vendorId,this.marketId)\r\n  }).subscribe(\r\n    ({ vendorBalanceRes, discountPlansRes }: any) => {\r\n      if (vendorBalanceRes) {\r\n        this.priorBalance = vendorBalanceRes.PriorBalance;\r\n      }\r\n      if(discountPlansRes){\r\n        if (discountPlansRes) {\r\n          for (const el of discountPlansRes) {\r\n            if (el.CombinedMonthly && el.OnlineTransactions) {\r\n              const ob = {\r\n                PlanSeqId: el.PlanSeqId,\r\n                PlanId: el.PlanId,\r\n                PlanName: el.PlanName,\r\n                EffectiveFrom: this.datePipe.transform(el.EffectiveFrom, 'MM/dd/yyyy'),\r\n                ExpiryDate: this.datePipe.transform(el.ExpiryDate, 'MM/dd/yyyy'),\r\n                DiscountType: el.DiscountType == 0 ? DiscountType.Percentage : DiscountType.FixedAmount,\r\n                DiscountValue: el.DiscountValue,\r\n                OtherItems: el.OtherItems,\r\n                Daily: el.Daily,\r\n                Weekly: el.Weekly,\r\n                Monthly: el.Monthly,\r\n                CombinedWeekly: el.CombinedWeekly,\r\n                CombinedMonthly: el.CombinedMonthly,\r\n                IsExceedAmount: el.IsExceedAmount,\r\n                ExceedAmount: el.ExceedAmount,\r\n                BalanceDue: el.BalanceDue,\r\n                Notes: el.Notes,\r\n                QDR: el.QDR,\r\n                CheckAll: el.Selected,\r\n                AutoSelected: el.Selected,\r\n                DisableDiscount: el.Selected,\r\n                AppliedDiscount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SecondLevelTaxAmount: this.customCurrency.transform(\"0.00\"),\r\n                SalesTaxApplied: el.SalesTax,\r\n                SecondLevelTaxApplied: el.SecondLevelTax,\r\n              }\r\n              this.vendorDiscountPlans.push(ob);\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        //  this.disableDiscountAmount = this.vendorDiscountPlans.length > 0 ? false : true;\r\n        }\r\n        this.getDiscounts();\r\n      }\r\n    })\r\n  }\r\n\r\n  getDiscounts() {\r\n    var totalRentalCharge = this.totalRentalCharge;\r\n    var totalSalesTax = this.totalSalesTax;\r\n    var totalSecondLeveltax = this.totalSecondLeveltax;\r\n    var totalOtherRentalCharge = this.totalOtherRentalCharge;\r\n    var priorBalance = 0;\r\n    var totalChargeWithDue = this.priorBalance + (totalRentalCharge)\r\n      + (totalSalesTax)\r\n      + (totalSecondLeveltax)\r\n      + (totalOtherRentalCharge)\r\n\r\n    var totalCharge = (totalRentalCharge) + (totalSalesTax) + (totalSecondLeveltax) + (totalOtherRentalCharge)\r\n    //   totalCharge = totalCharge.toString().includes('(') && totalCharge.toString().includes(')') ? -1 * parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalCharge.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.vendorDiscountPlans.length > 0 && totalCharge > 0) {\r\n      var discountTotalAmount = 0;\r\n      var totalAmountForDiscount = 0;\r\n      for (const disc of this.vendorDiscountPlans) {\r\n        disc.CheckAll = disc.AutoSelected;\r\n        if (disc.CheckAll && disc.CombinedMonthly) {\r\n          var currentDiscountValue = 0;\r\n          if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n            if (!disc.IsExceedAmount || (disc.IsExceedAmount && totalCharge > disc.ExceedAmount)) {\r\n              const discountValue = disc.DiscountValue;\r\n              totalAmountForDiscount = totalRentalCharge\r\n              if (disc.OtherItems) {\r\n                totalAmountForDiscount += totalOtherRentalCharge\r\n              }\r\n              if (disc.DiscountType == 'Percentage') {\r\n                discountTotalAmount += totalAmountForDiscount * (discountValue / 100);\r\n                currentDiscountValue = totalAmountForDiscount * (discountValue / 100);\r\n              }\r\n              else {\r\n                discountTotalAmount += discountValue;\r\n                currentDiscountValue = discountValue;\r\n              }\r\n            }\r\n            else {\r\n              disc.CheckAll = false;\r\n            }\r\n          }\r\n          else {\r\n            disc.CheckAll = false;\r\n          }\r\n          disc.AppliedDiscount = this.customCurrency.transform(currentDiscountValue.toString());\r\n        }\r\n        else {\r\n          disc.AppliedDiscount = this.customCurrency.transform(\"0\");\r\n        }\r\n\r\n        this.totalDiscountCharge = parseFloat(discountTotalAmount.toFixed(2)).toString()\r\n      }\r\n    }\r\n    else {\r\n      // this.rentalForm.controls['vendorBalances'].patchValue({\r\n      //   totalDiscountCharge: this.customCurrency.transform(\"0\"),\r\n      //   totalCharge: this.customCurrency.transform((totalChargeWithDue - 0).toString())\r\n      // });\r\n    }\r\n  }\r\n\r\n  getWebRentalSetting(){\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {  \r\n        this.defaultPart = res.DefaultLayoutPart;   \r\n        this.rentalForm.get('marketParts').setValue(this.defaultPart);\r\n        this.ApplyBookingFee = res.ApplyBookingFee;\r\n        this.ApplyBookingFeeId = res.ApplyBookingFeeId;\r\n        this.AllowRentingOtherItems = res.AllowRentingOtherItems;\r\n        if (this.ApplyBookingFee) {\r\n          this.subscriptions.push(this.rentalService.getBookingFeeById(this.marketId, this.ApplyBookingFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.bookingFeeAmount = resFee.OtherItemCharge;\r\n            }\r\n          }));\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.rentalForm.get('marketWeekSunday').setValue(this.sunday);\r\n        this.rentalForm.get('marketWeekMonday').setValue(this.monday);\r\n        this.rentalForm.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.rentalForm.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.rentalForm.get('marketWeekThursday').setValue(this.thursay);\r\n        this.rentalForm.get('marketWeekFriday').setValue(this.friday);\r\n        this.rentalForm.get('marketWeekSaturday').setValue(this.saturday);    \r\n        this.getMonthlyMarketDays();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  async selectedBoothsFromLayout(data) {\r\n    window.scrollTo(0, 0);\r\n    this.selectedMonthlyBoothData = data;\r\n    this.displayLayout = false;    \r\n    await this.validateAndAddSelectedBoothsToGrid(); \r\n  }\r\n\r\n  async validateAndAddSelectedBoothsToGrid() {\r\n    let noResale = true;\r\n    var rentalDates = [];\r\n    var marketDay;\r\n    var rentalstartDate;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n      var selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n      if (selectedBoothRecord.length > 0) {\r\n        selectedBoothRecord.forEach(record => {\r\n          for (const el of this.selectedMarketDays) {\r\n            const startDate = new Date(record.RentalStartDate);\r\n            const endDate = new Date(record.RentalEndDate);\r\n            const selectedDayOfWeek = el - 1;\r\n            let currentDay = new Date(startDate);\r\n            const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n            while (currentDay <= endDate) {\r\n              var exludedDate = excludedDates.some(date => {\r\n                return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n              });\r\n              if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n                if (!rentalstartDate) {\r\n                  rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                }\r\n                rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n              }\r\n              currentDay.setDate(currentDay.getDate() + 1);\r\n            }\r\n          }\r\n            const compareDates = (a: DateString, b: DateString): number => {\r\n              const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              return dateA - dateB;\r\n            };\r\n            const sortedDates = rentalDates.sort(compareDates);        \r\n\r\n          rentalDates.map(date => {\r\n            const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n            const dateExist = this.vendorRentalDays.find(el => {\r\n              const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              return rentalDateString === targetDateString;\r\n            });\r\n            if (!dateExist) {\r\n              const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n              this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n              this.marketDayCountForResale += 1;\r\n              if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n                return; // exits the forEach loop when the condition is met\r\n              }\r\n            }\r\n          });\r\n        });\r\n      }     \r\n    \r\n      rentalDates=[];\r\n\r\n      for (const el of this.selectedMarketDays) {\r\n        const startDate = new Date(this.rentalForm.value['monthlyRentalStartDates']);\r\n        const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n        const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n        const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n        var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n        if (this.combinedMonthlyBookingEndDate) {\r\n          const rentalEndDateYear = endDate.getFullYear();\r\n          const rentalEndDateMonth = endDate.getMonth() + 1;\r\n          const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n          const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth, this.marketId).toPromise();\r\n          endDate = new Date(response.MonthEndDateSelected);\r\n        }\r\n        const selectedDayOfWeek = el - 1;\r\n        let currentDay = new Date(startDate);\r\n        const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n        while (currentDay <= endDate) {\r\n          var exludedDate = excludedDates.some(date => {\r\n            return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n          });\r\n          if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n            if (!rentalstartDate) {\r\n              rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n            }\r\n            rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n          currentDay.setDate(currentDay.getDate() + 1);\r\n        }\r\n      }\r\n\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = rentalDates.sort(compareDates);\r\n\r\n      const apiCalls = rentalDates.map(date => {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          VendorRentalDate: new Date(date.startDate)\r\n        };\r\n\r\n        return this.rentalService.getVendorRentalDays(obj).pipe(\r\n          catchError(error => {\r\n            console.error('API call failed for date:', date.startDate, error);\r\n            return of([]); // Return an empty array in case of error\r\n          })\r\n        );\r\n      });\r\n\r\n      forkJoin(apiCalls).subscribe((responses: any[][]) => {\r\n        responses.forEach((res, index) => {\r\n          const date = rentalDates[index].startDate;\r\n          if (res && res.length > 0) {\r\n            res.forEach(el => {\r\n              const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n              const dateExist = this.vendorRentalDays.find(data => {\r\n                const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                return rentalDateString === targetDateString;\r\n              });\r\n              if (!dateExist) {\r\n                const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                this.marketDayCountForResale += 1;\r\n              }\r\n            });\r\n          }\r\n\r\n          const targetDateString = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n          const dateExist = this.vendorRentalDays.find(el => {\r\n            const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n            return rentalDateString === targetDateString;\r\n          });\r\n          if (!dateExist) {\r\n            const formattedDate = this.datePipe.transform(date, \"MM/dd/yyyy\");\r\n            this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n            this.marketDayCountForResale += 1;\r\n          }\r\n        });\r\n\r\n        if (!this.newVendor) {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            const modal = this.modalResaleNo.nativeElement;\r\n            modal.classList.add('show');\r\n            if (modal.classList.contains('show')) {\r\n              modal.style.display = 'block';\r\n              this.ResaleOrBusinessHeader = \"Resale Number\"\r\n              this.resaleNoDisplay = true;\r\n              this.businessLicenseDisplay = false;\r\n            }\r\n            noResale = false;\r\n          }\r\n          else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            if (!this.businessLicenseNumber || !this.businessLicenseExpiryDate) {\r\n              const modal = this.modalResaleNo.nativeElement;\r\n              modal.classList.add('show');\r\n              if (modal.classList.contains('show')) {\r\n                modal.style.display = 'block';\r\n                this.ResaleOrBusinessHeader = \"Business License Number\";\r\n                this.resaleNoDisplay = false;\r\n                this.businessLicenseDisplay = true;\r\n              }\r\n              noResale = false;\r\n            }\r\n            else {\r\n              if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n                Swal.fire({\r\n                  title: $localize`Warning`,\r\n                  text: $localize`Business License is expired! Please contact the market`,\r\n                  icon: \"warning\",\r\n                  confirmButtonText: $localize`Ok`,\r\n                });\r\n              }\r\n              else {\r\n                this.addSelectedBoothsToGrid();\r\n              }\r\n            }\r\n          }\r\n          else {\r\n            noResale = true;\r\n            this.addSelectedBoothsToGrid();\r\n          }\r\n        }\r\n        else {\r\n          if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n            this.resaleNoInputRequired.emit(true)\r\n          }\r\n          if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n            this.businessLicenseRequired.emit(true);\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }\r\n      });\r\n    } else {\r\n      this.addSelectedBoothsToGrid();\r\n    }\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  AddBoothsOnGridOnValidationSucess() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (this.resaleNoDisplay) {\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n      }\r\n\r\n      if (closeModalPopup) {\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n        }));\r\n      }\r\n    }\r\n    else{\r\n      addToGrid = true;\r\n    }\r\n\r\n    if (addToGrid) {\r\n      if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        var addToGrid = false;\r\n        var closeModalPopup = false;\r\n        if ((!this.businessLicenseNumber || this.businessLicenseNumber.trim() === '') || !this.businessLicenseExpiryDate) {\r\n          this.ResaleOrBusinessHeader = \"Business License Number\"\r\n          const modal = this.modalResaleNo.nativeElement;\r\n          this.resaleNoDisplay = false;   \r\n          this.businessLicenseDisplay = true;\r\n          modal.classList.add('show');\r\n          if (modal.classList.contains('show')) {\r\n            modal.style.display = 'block';\r\n            this.ResaleOrBusinessHeader = \"Business License Number\"                  \r\n          }\r\n        }\r\n        else if (this.getDateFromDateTime(new Date(this.businessLicenseExpiryDate)) < this.getDateFromDateTime(new Date())) {\r\n          this.closeResaleModal();\r\n          Swal.fire({\r\n            text: $localize`Business License is expired! Please contact the market.`,\r\n            icon: \"warning\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n        else {\r\n          addToGrid = true;\r\n          this.closeResaleModal();\r\n          if (this.businessLicenseDisplay) {\r\n            const obj = {\r\n              VendorID: this.vendorId,\r\n              LicenseNameId: 1,\r\n              LicenseName: \"\",\r\n              ExpiryDate: new Date(this.businessLicenseExpiryDate),\r\n              LicenseNumber: this.businessLicenseNumber\r\n            }\r\n  \r\n            this.subscriptions.push(this.rentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n            }));\r\n          }\r\n          this.addSelectedBoothsToGrid();\r\n        }       \r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.addSelectedBoothsToGrid();\r\n      }\r\n    }\r\n  }\r\n  addSelectedBoothsToGrid() {\r\n    this.selectedBoothsForRental = [];\r\n    if (this.selectedMonthlyBoothData) {      \r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedMonthlyBoothData.map(async (el, i) => {       \r\n        const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n        const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n        const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n        var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n        if (this.combinedMonthlyBookingEndDate) {\r\n          const rentalEndDateYear = endDate.getFullYear();\r\n          const rentalEndDateMonth = endDate.getMonth() + 1;\r\n          const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n          const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth, this.marketId).toPromise();\r\n          endDate = new Date(response.MonthEndDateSelected);\r\n        }\r\n\r\n        var obj = {\r\n          BoothTypeId: el.BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(this.rentalForm.value['monthlyRentalStartDates']),\r\n          RentalEndPeriod: endDate,\r\n          PerDiemApplicable: this.perDiemRentApplicable? true: false,\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n   \r\n        this.rentalService.getBoothRentalCombinedMonthlyCharges(this.marketId, obj).subscribe((res: any) => {\r\n          var newbooths = [];\r\n          var vendorProducts = !this.newVendor ? this.vendorProducts.filter(x => x.Priority) ? this.vendorProducts.filter(x => x.Priority)[0].ProductId : this.vendorProducts[0].ProductId:\"\";\r\n          const ob = {\r\n            MonthlyRentalId: 0,\r\n            BoothNumber: el.BoothNumber,\r\n            BoothType: el.BoothType,\r\n            BoothTypeId: el.BoothTypeId,\r\n            BoothDescription: el.BoothDescription,\r\n            Product: vendorProducts,\r\n            RentStartPeriod: this.rentalForm.value['rentalStartMonth'],\r\n            RentEndPeriod: this.rentalForm.value['rentalEndMonth'],\r\n            RentalStartDate: el.RentalStartDate,\r\n            RentalEndDate: el.RentalEndDate,\r\n            RentalSavedEndDate: el.RentalEndDate,\r\n            MktDays: el.NoOfMarketDays,\r\n            PerDiem: this.perDiemRentApplicable? true: false,\r\n            PerDiemRent:this.customCurrency.transform(res.PerdiemRent),\r\n            Rent: this.customCurrency.transform(res.Rent),\r\n            SalesTax: this.customCurrency.transform(res.SalesTax),\r\n            CityTax: this.customCurrency.transform(res.CityTax),\r\n            Sunday: el.Sunday,\r\n            Monday: el.Monday,\r\n            Tuesday: el.Tuesday,\r\n            Wednesday: el.Wednesday,\r\n            Thursday: el.Thursday,\r\n            Friday: el.Friday,\r\n            Saturday: el.Saturday,\r\n            Reservation: true,\r\n            Drop: false,\r\n            January: this.customCurrency.transform(res.JanRent),\r\n            February: this.customCurrency.transform(res.FebRent),\r\n            March: this.customCurrency.transform(res.MarRent),\r\n            April: this.customCurrency.transform(res.AprRent),\r\n            May: this.customCurrency.transform(res.MayRent),\r\n            June: this.customCurrency.transform(res.JunRent),\r\n            July: this.customCurrency.transform(res.JulRent),\r\n            August: this.customCurrency.transform(res.AugRent),\r\n            September: this.customCurrency.transform(res.SepRent),\r\n            October: this.customCurrency.transform(res.OctRent),\r\n            November: this.customCurrency.transform(res.NovRent),\r\n            December: this.customCurrency.transform(res.DecRent),\r\n            JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n            MarchMonthPresent: res.MarchMonthPresent,\r\n            AprilMonthPresent: res.AprilMonthPresent,\r\n            MayMonthPresent: res.MayMonthPresent,\r\n            JuneMonthPresent: res.JuneMonthPresent,\r\n            JulyMonthPresent: res.JulyMonthPresent,\r\n            AugustMonthPresent: res.AugustMonthPresent,\r\n            SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n            OctoberMonthPresent: res.OctoberMonthPresent,\r\n            NovemberMonthPresent: res.NovemberMonthPresent,\r\n            DecemberMonthPresent: res.DecemberMonthPresent,\r\n            DisableJanMonth: res.JanRent != null ?false:true, \r\n            DisableFebMonth: res.FebRent != null ?false:true, \r\n            DisableMarMonth: res.MarRent != null ?false:true, \r\n            DisableAprMonth: res.AprRent != null ?false:true, \r\n            DisableMayMonth: res.MayRent != null ?false:true, \r\n            DisableJunMonth: res.JunRent != null ?false:true, \r\n            DisableJulMonth: res.JulRent != null ?false:true, \r\n            DisableAugMonth: res.AugRent != null ?false:true, \r\n            DisableSepMonth: res.SepRent != null ?false:true, \r\n            DisableOctMonth: res.OctRent != null ?false:true, \r\n            DisableNovMonth: res.NovRent != null ?false:true, \r\n            DisableDecMonth: res.DecRent != null ?false:true,\r\n            Status: \"N\",         \r\n            StartDateList:el.StartDateList,\r\n            DiasbleStartDate: false, \r\n            NewBooth: true,\r\n            ExtendRental: false,\r\n            AllRentalDates: el.AllRentalDates,\r\n            TaxModel: res.TaxModel\r\n          }\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.getDiscounts();\r\n          this.getMarketDays();\r\n          this.gridMonthlyRental.refresh();\r\n          newbooths.push(JSON.parse(JSON.stringify(ob)));\r\n          this.selectedMonthlyBooths = this.selectedMonthlyBooths.concat(newbooths);\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });   \r\n        this.isdirty = true;\r\n        this.isFormDirty.emit(true);    \r\n      });\r\n\r\n      this.loaderIcon = Promise.resolve(false);\r\n      //  this.refreshAddBooth();\r\n    }\r\n  }\r\n\r\n  created(args) {\r\n    if(this.newVendor){\r\n      this.gridMonthlyRental.getColumnByField(\"Product\").visible = false;\r\n    }\r\n  }\r\n\r\n  otherItemUpdate(selectedItems) {\r\n    if (selectedItems.isOtherItemChecked) {\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id && item.RentalMonth, \"MM/dd/YYYY\" == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']);\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemCharge =  this.customCurrency.transform(finalCharge.toString())\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString())\r\n      if (index !== -1) {\r\n        var obj = {\r\n          Id: selectedItems.Id,\r\n          OtherItem: selectedItems.OtherItem,\r\n          OtherItemCharge: selectedItems.OtherItemCharge,\r\n          Quantity: selectedItems.Quantity,\r\n          OtherItemtotal: selectedItems.OtherItemtotal,\r\n          othChgBooths: selectedItems.othChgBooths,\r\n          Recurring: selectedItems.Recurring,\r\n          RentalMonth: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'],\r\n          Reference: selectedItems.Reference\r\n        };\r\n        this.selectedOtherCharges[index] = obj;\r\n      }\r\n      else {\r\n        var objNew = {\r\n          Id: selectedItems.Id,\r\n          OtherItem: selectedItems.OtherItem,\r\n          OtherItemCharge: selectedItems.OtherItemCharge,\r\n          Quantity: selectedItems.Quantity,\r\n          OtherItemtotal: selectedItems.OtherItemtotal,\r\n          othChgBooths: selectedItems.othChgBooths,\r\n          Recurring: selectedItems.Recurring,\r\n          RentalMonth: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'],\r\n          Reference: selectedItems.Reference\r\n        };\r\n        this.selectedOtherCharges.push(objNew);\r\n      }\r\n    }\r\n  }\r\n\r\n  refreshAddBooth() {\r\n    this.getMarketDays();\r\n    this.selectedMonthlyBoothData = [];\r\n    if (this.selectedBoothsForRental.length > 0) {\r\n      this.selectedBoothsForRental.forEach(ele => {\r\n        const temp = {\r\n          TempRecordNo: this.tempRecordNo.toString(),\r\n          BoothNumber: ele.BoothNumber,\r\n          StartDate: new Date(ele.StartDate),\r\n          RentalType: 4,\r\n          EndDate: new Date(ele.EndDate),\r\n          Sunday: this.rentalForm.value['marketWeekSunday'],\r\n          Monday: this.rentalForm.value['marketWeekMonday'],\r\n          Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n          Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n          Thursday: this.rentalForm.value['marketWeekThursday'],\r\n          Friday: this.rentalForm.value['marketWeekFriday'],\r\n          Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        }\r\n        this.subscriptions.push(\r\n          this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          })\r\n        );\r\n      });\r\n    }\r\n    this.selectedBoothsForRental = [];\r\n    this.rentalForm.reset();\r\n    this.rentalForm.patchValue({\r\n      rentalStartMonth: this.monthlyMarketDays[0].RentalMonths,\r\n      rentalEndMonth: this.monthlyMarketDays[0].RentalMonths,\r\n      marketParts: this.defaultPart\r\n    })\r\n  }\r\n\r\n  getMonthlyMarketDays() {\r\n    forkJoin({\r\n      response: this.marketInfoService.getMonthlyMarketDays(this.marketId),\r\n      resRentalSettings: this.rentalService.getRentalSettings(this.marketId)\r\n    }).subscribe(\r\n      async ({ response, resRentalSettings }: any) => {\r\n      if (response) {\r\n        this.monthlyMarketDays = response;\r\n        this.rentalForm.patchValue({\r\n          rentalStartMonth: response[0].RentalMonths,\r\n          rentalEndMonth: response[0].RentalMonths,\r\n        });  \r\n        this.rentalForm.controls['otherItemsScreen'].patchValue({\r\n          otherChargeMarketMonth: response[0].RentalMonths\r\n        });    \r\n      }\r\n\r\n      if (resRentalSettings) {\r\n        this.combinedMonthlyBookingEndDate = resRentalSettings.CombinedMonthlyBookingEndDate;\r\n        if (this.combinedMonthlyBookingEndDate) {\r\n          const currentDate = new Date();\r\n          const currentYear = currentDate.getFullYear();\r\n          const currentMonth = currentDate.getMonth();\r\n          const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n          const resMonthEnd = await this.rentalService.GetSelectedMonthEndDate(currentYearMonth,this.marketId).toPromise();\r\n          const currentMonthEndDate = new Date(resMonthEnd.MonthEndDateSelected);\r\n          if (currentMonthEndDate <= new Date(currentDate)) {\r\n            var currentDateYearAndMonth = this.datePipe.transform(currentDate, 'MMMM yyyy');\r\n            this.monthlyMarketDays = response.filter(e => e.RentalMonths != currentDateYearAndMonth)\r\n            this.rentalForm.patchValue({\r\n              rentalStartMonth: this.monthlyMarketDays[0].RentalMonths,\r\n              rentalEndMonth: this.monthlyMarketDays[0].RentalMonths,\r\n            })  \r\n          }\r\n        }\r\n      }  \r\n      this.selectedMonthlyMarketDays();      \r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  closeResaleModal(){\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  checkRentalMonths() {\r\n    if (this.rentalForm.value['rentalStartMonth'] && this.rentalForm.value['rentalEndMonth']) {\r\n      const startMonth = this.rentalForm.value['rentalStartMonth'];\r\n      const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n      if (endMonthYear < startYear || (endMonthYear == startYear && endMonthIndex < startMonthIndex)) {\r\n        this.rentalForm.get('rentalEndMonth').setValue(startMonth);\r\n      }    \r\n      this.selectedMonthlyMarketDays();      \r\n    }\r\n  }  \r\n\r\n  closeLayoutForm() {\r\n    this.displayLayout = false;\r\n    this.getMarketDays();\r\n  }\r\n\r\n  onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[0-9]/g;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  updateOtherItem(data) {\r\n    if (parseFloat(data.Quantity) == 0) {\r\n      data.Quantity = \"1\"\r\n    }\r\n    this.totalSalesTax -= data.SalesTax.toString().includes('(') && data.SalesTax.toString().includes(')') ? -1 * parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax -= data.CityTax.toString().includes('(') && data.CityTax.toString().includes(')') ? -1 * parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalOtherRentalCharge -= data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n\r\n    var index;\r\n    if (data.NewItem == true)\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.NewItem == true && oth.BoothNo == data.BoothNo);\r\n    else\r\n      index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth && oth.MonthlyRentalIds == data.MonthlyRentalIds && oth.BoothNo == data.BoothNo);\r\n\r\n    if (index !== -1) {\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: data.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: data.Quantity,\r\n        OtherItemCharge: data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')') ? (-1) * parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n        WRNewVendorRequest: this.newVendor\r\n      }\r\n      this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        const isNegative = data.OtherItemCharge.includes('(') && data.OtherItemCharge.includes(')');\r\n        const totalValue = parseFloat(data.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        data.OtherItemtotal = this.customCurrency.transform((finalCharge * data.Quantity).toString());\r\n        this.selectedOtherItems[index].OtherItemtotal = data.OtherItemtotal;\r\n        this.selectedOtherItems[index].OtherItemCharge = this.customCurrency.transform((finalCharge).toString());\r\n        this.selectedOtherItems[index].Recurring = data.Recurring;\r\n        this.selectedOtherItems[index].Reference = data.Reference;\r\n        this.selectedOtherItems[index].Quantity = data.Quantity;\r\n        this.selectedOtherItems[index].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n        this.selectedOtherItems[index].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n        this.gridOtherRental.refresh();\r\n        this.totalOtherRentalCharge += data.OtherItemtotal.toString().includes('(') && data.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.getDiscounts();\r\n      });\r\n    }\r\n  }\r\n\r\n  selectedMonthlyMarketDays() {\r\n    this.selectedMarketDays = [];\r\n    this.rentalForm.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.rentalForm.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.rentalForm.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.rentalForm.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.rentalForm.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.rentalForm.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.rentalForm.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n    this.monthlyRentalStartDates = [];\r\n    this.selectedMarketDays.map(async (el, i) => {      \r\n      const currentDate = new Date();\r\n      const currentYear = currentDate.getFullYear();\r\n      const currentMonth = currentDate.getMonth();\r\n      const currentYearMonth =  `${currentYear}${(currentMonth +1) < 10 ? '0' : ''}${(currentMonth +1)}`;\r\n      const startMonth = this.rentalForm.value['rentalStartMonth'];\r\n      const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n      var startDate;\r\n      if (startYear === currentYear.toString() && startMonthIndex === currentMonth)\r\n        startDate = currentDate\r\n      else\r\n        startDate = new Date(startYear, startMonthIndex, 1);\r\n      var endDate = this.combinedMonthlyBookingEndDate ?new Date(startYear, startMonthIndex + 1, 0) : new Date(endMonthYear, endMonthIndex + 1, 0);\r\n      if (this.combinedMonthlyBookingEndDate) {\r\n        const rentalEndDateYear = endDate.getFullYear();\r\n        const rentalEndDateMonth = endDate.getMonth() + 1;\r\n        const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n        const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth,this.marketId).toPromise();\r\n        endDate = new Date(response.MonthEndDateSelected);\r\n\r\n        //checking for previous MonthEnd date\r\n        const rentalStartDate = new Date(startDate);\r\n        var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n        var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n        const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n        // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n        const previousMonthEndDate = await this.rentalService.GetSelectedMonthEndDate(PreviousMonthYearAndMonth,this.marketId).toPromise();\r\n        const monthEndDate = new Date(previousMonthEndDate.MonthEndDateSelected);\r\n        const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n        if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n          if (new Date() > new Date(monthEndDate)) {\r\n            startDate = new Date();\r\n          }\r\n          else {\r\n            startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n          }\r\n        }\r\n\r\n        if (new Date(endDate) < new Date(startDate)) {\r\n          const rentalStartDate = new Date(startDate);\r\n          var nextMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() + 1)).getMonth() + 1;\r\n          var nextMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() + 1)).getFullYear();\r\n          const nextMonthYearAndMonth = `${nextMonthYear}${nextMonth < 10 ? '0' : ''}${nextMonth}`;\r\n          const nextMonthEndDate = await this.rentalService.GetSelectedMonthEndDate(nextMonthYearAndMonth, this.marketId).toPromise();\r\n          endDate = new Date(nextMonthEndDate.MonthEndDateSelected);\r\n        }\r\n        // }\r\n      }\r\n\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (new Date(this.datePipe.transform(currentDay,'MM/dd/yyyy')) <= new Date(this.datePipe.transform(endDate,'MM/dd/yyyy'))) {\r\n        var exludedDate = excludedDates.some(date => {\r\n          return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n        });\r\n        if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n          this.monthlyRentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.monthlyRentalStartDates.sort(compareDates);\r\n      if (this.monthlyRentalStartDates && this.monthlyRentalStartDates.length > 0)\r\n        this.rentalForm.get('monthlyRentalStartDates').setValue(this.monthlyRentalStartDates[0].startDate);\r\n    });\r\n  }\r\n\r\n  getDaysDifference(date1: Date, date2: Date): number {\r\n    // Normalize both dates to start of the day (midnight)\r\n    const start = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n    const end = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n    // Calculate the difference in time (milliseconds)\r\n    const timeDiff = Math.abs(end.getTime() - start.getTime());\r\n    // Convert time difference from milliseconds to days\r\n    const dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));\r\n    return dayDiff;\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  cancelRental() {\r\n    if (this.isdirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.isFormDirty.emit(false);\r\n          this.isCancelClicked.emit('4');\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n      this.isFormDirty.emit(false);\r\n      this.isCancelClicked.emit('4');\r\n    }\r\n  }\r\n\r\n  toggleDaySelection(day: string, event: any) {\r\n    this.selectedMarketDays.map((el, i) => {\r\n      switch (el) {\r\n        case 1: this.rentalForm.get('marketWeekSunday').setValue(true);\r\n          break;\r\n        case 2: this.rentalForm.get('marketWeekMonday').setValue(true);\r\n          break;\r\n        case 3: this.rentalForm.get('marketWeekTuesday').setValue(true);\r\n          break;\r\n        case 4: this.rentalForm.get('marketWeekWednesday').setValue(true);\r\n          break;\r\n        case 5: this.rentalForm.get('marketWeekThursday').setValue(true);\r\n          break;\r\n        case 6: this.rentalForm.get('marketWeekFriday').setValue(true);\r\n          break;\r\n        case 7: this.rentalForm.get('marketWeekSaturday').setValue(true);\r\n          break;\r\n      }\r\n    });\r\n  }\r\n\r\n  checkMarketDaysSelected() {\r\n    const sunday = this.rentalForm.value['marketWeekSunday'];\r\n    const monday = this.rentalForm.value['marketWeekMonday'];\r\n    const tuesday = this.rentalForm.value['marketWeekTuesday'];\r\n    const wednesday = this.rentalForm.value['marketWeekWednesday'];\r\n    const thursday = this.rentalForm.value['marketWeekThursday'];\r\n    const friday = this.rentalForm.value['marketWeekFriday'];\r\n    const saturday = this.rentalForm.value['marketWeekSaturday'];\r\n    return sunday || monday || tuesday || wednesday || thursday || friday || saturday;\r\n  }\r\n\r\n  openLayout() {\r\n    this.layoutParts = this.rentalForm.value['marketParts'];\r\n    var marketDaysSelected = this.checkMarketDaysSelected();\r\n    if (!marketDaysSelected) {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please select a market day!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    else {\r\n      if (this.selectedMarketDays.length > 0) {\r\n        this.selectedDates = [];\r\n        this.selectedMarketDays.map(async (el, i) => {\r\n          const startDate = new Date(this.rentalForm.value['monthlyRentalStartDates']);\r\n          const endMonth = this.rentalForm.value['rentalEndMonth'];\r\n          const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n          const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n          var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n          if (this.combinedMonthlyBookingEndDate) {\r\n            const rentalEndDateYear = endDate.getFullYear();\r\n            const rentalEndDateMonth = endDate.getMonth() + 1;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            const response = await this.rentalService.GetSelectedMonthEndDate(rentalEndDateYearMonth,this.marketId).toPromise();\r\n            endDate = new Date(response.MonthEndDateSelected);\r\n          }\r\n          const selectedDayOfWeek = el - 1;\r\n          let currentDay = new Date(startDate);\r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              this.selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n\r\n          const compareDates = (a, b): number => {\r\n            const dateA = new Date(a.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n          const sortedDates = this.selectedDates.sort(compareDates);\r\n        });\r\n      }\r\n      this.MonthlyLayoutData = {\r\n        Sunday: this.rentalForm.value['marketWeekSunday'],\r\n        Monday: this.rentalForm.value['marketWeekMonday'],\r\n        Tuesday: this.rentalForm.value['marketWeekTuesday'],\r\n        Wednesday: this.rentalForm.value['marketWeekWednesday'],\r\n        Thursday: this.rentalForm.value['marketWeekThursday'],\r\n        Friday: this.rentalForm.value['marketWeekFriday'],\r\n        Saturday: this.rentalForm.value['marketWeekSaturday'],\r\n        monthlyRentalStartDate: this.rentalForm.value['rentalStartMonth'],\r\n        monthlyRentalEndDate: this.rentalForm.value['rentalEndMonth'],\r\n        monthlyRentalMarketDays: this.selectedMarketDays,\r\n        selectedDates: this.selectedDates,\r\n        monthlyRentalSelectedBooths: this.selectedMonthlyBooths.filter(e => e.NewBooth == true),\r\n        RentalStartDate: this.datePipe.transform(new Date(this.rentalForm.value['monthlyRentalStartDates']), 'MM/dd/yyyy'),\r\n        RentalEndDate: this.datePipe.transform(new Date(this.monthlyRentalStartDates[this.monthlyRentalStartDates.length - 1].startDate), 'MM/dd/yyyy'),\r\n        tempRecordNo: this.tempRecordNo,\r\n        combinedMonthlyBookingEndDate: this.combinedMonthlyBookingEndDate\r\n      }\r\n      this.displayLayout = true;\r\n    }\r\n  }  \r\n\r\n  searchOtherItem() {\r\n    this.otherRentalCharges = this.otherItemList;\r\n    const otherItemSearchText = this.rentalForm.controls['otherItemsScreen'].value['otherItemSearchText'];\r\n    if (otherItemSearchText != '') {\r\n      this.otherRentalCharges = this.otherItemList.filter((ele) => ele.OtherItem.toString().toLowerCase().indexOf(otherItemSearchText.toLowerCase()) !== -1);\r\n    }\r\n  }\r\n\r\n  disableSavePayment() {\r\n    var vendorBalance = this.priorBalance + this.totalCharge;\r\n    if (vendorBalance > 0) {\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n\r\n  addOtherCharges() {\r\n    if (this.selectedOtherCharges) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      this.selectedOtherCharges.map((el, i) => {\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: el.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: el.Quantity,\r\n          OtherItemCharge: el.OtherItemCharge.includes('(') && el.OtherItemCharge.includes(')') ? (-1) * parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          WRNewVendorRequest: this.newVendor\r\n        }\r\n        const index = this.selectedOtherItems.findIndex(item => item.Id === el.Id && item.RentalMonth == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'] && item.NewItem == true && item.BoothNo === el.othChgBooths);\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          var newItem = [];\r\n          if (index !== -1) {\r\n            var otherItemTotal = this.selectedOtherItems[index].OtherItemtotal;\r\n            var salesTax = this.selectedOtherItems[index].SalesTax;\r\n            var cityTax = this.selectedOtherItems[index].CityTax;\r\n            this.totalOtherRentalCharge -= otherItemTotal.toString().includes('(') && otherItemTotal.toString().includes(')') ? -1 * parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(otherItemTotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= salesTax.toString().includes('(') && salesTax.toString().includes(')') ? -1 * parseFloat(salesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(salesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= cityTax.toString().includes('(') && cityTax.toString().includes(')') ? -1 * parseFloat(cityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(cityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            var priorBalance = this.rentalForm.controls['vendorBalances'].value['vendorPriorBalance'].toString().includes('(') && this.rentalForm.controls['vendorBalances'].value['vendorPriorBalance'].toString().includes(')') ? -1 * parseFloat(this.rentalForm.controls['vendorBalances'].value['vendorPriorBalance'].toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.rentalForm.controls['vendorBalances'].value['vendorPriorBalance'].toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.rentalForm.controls['vendorBalances'].patchValue({\r\n              totalOtherRentalCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n            const ob = {\r\n              Id: el.Id,\r\n              MonthOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              RentalMonth: el.RentalMonth,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference: el.Reference,\r\n              NewItem: true,\r\n              MonthlyRentalIds: ''\r\n            }\r\n            this.selectedOtherItems[index] = ob;\r\n            this.gridOtherRental.refresh();\r\n          }\r\n          else {\r\n            const ob = {\r\n              Id: el.Id,\r\n              MonthOtherRentalId: 0,\r\n              OtherItem: el.OtherItem,\r\n              OtherItemCharge: el.OtherItemCharge,\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: el.OtherItemtotal,\r\n              RentalMonth: el.RentalMonth,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: el.othChgBooths,\r\n              Recurring: el.Recurring,\r\n              Reference: el.Reference,\r\n              NewItem: true,\r\n              MonthlyRentalIds: ''\r\n            }\r\n            newItem.push(JSON.parse(JSON.stringify(ob)));\r\n            this.isdirty = true;\r\n            this.isFormDirty.emit(true);\r\n          }\r\n\r\n          this.totalOtherRentalCharge += el.OtherItemtotal.toString().includes('(') && el.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(el.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n\r\n          this.getDiscounts();\r\n          if (newItem.length > 0) {\r\n            this.selectedOtherItems = this.selectedOtherItems.concat(newItem);\r\n          }\r\n        }, err => {\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n      });\r\n      this.loaderIcon = Promise.resolve(false);\r\n      const modal = this.modalMonthlyOtherCharges.nativeElement;\r\n      if (modal.classList.contains('show')) {\r\n        modal.style.display = 'none';\r\n        modal.classList.remove('show');\r\n      }\r\n    }\r\n  }\r\n\r\n  async getBoothsAndItemsForOtherCharges() {\r\n    this.boothsForOtherCharge = [];\r\n    this.selectedOtherCharges = [];\r\n    if (this.OtherChargesPeriod) {\r\n      this.otherRentalCharges = [];\r\n      this.otherItemList = [];\r\n      await this.getOtherRentalItems();\r\n    }\r\n    if (this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n      this.selectedMonthlyBooths.forEach((item) => {\r\n        if (item.RentStartPeriod == this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) {\r\n          this.boothsForOtherCharge.push({ BoothNumber: item.BoothNumber })\r\n        }\r\n      });\r\n    }\r\n    this.boothsForOtherCharge.sort((a, b) => {\r\n      if (a.BoothNumber < b.BoothNumber) {\r\n        return -1;\r\n      }\r\n      if (a.BoothNumber > b.BoothNumber) {\r\n        return 1;\r\n      }\r\n      return 0;\r\n    });\r\n  }\r\n\r\n  isDateSelected(item: any): boolean {\r\n    var isItemSelected = this.selectedOtherItems.some(\r\n      (element) =>\r\n        (element.RentalMonth === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']) &&\r\n        element.Id === item.Id && element.NewItem == true\r\n    );\r\n\r\n     if(!isItemSelected){\r\n      isItemSelected = this.selectedOtherCharges.some(\r\n        (element) =>\r\n          (element.RentalMonth === this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth'])  &&\r\n          element.Id === item.Id\r\n      );\r\n    }\r\n\r\n    !isItemSelected? item.otherItemChecked = false : item.otherItemChecked = true;\r\n    item.othChgBooths = \"none\";\r\n    return isItemSelected;\r\n  }\r\n\r\n  setDefaultRentalItem(args, selectedItems) {\r\n    selectedItems.Quantity = 0\r\n    selectedItems.OtherItemtotal = 0\r\n    if (args.srcElement.checked) {\r\n      selectedItems.true = true;\r\n      selectedItems.Quantity = 1\r\n      const isNegative = selectedItems.OtherItemCharge.includes('(') && selectedItems.OtherItemCharge.includes(')');\r\n      const totalValue = parseFloat(selectedItems.OtherItemCharge.replace(/[^0-9.-]/g, ''));\r\n      const finalCharge = isNegative ? -totalValue : totalValue;\r\n      selectedItems.OtherItemtotal = this.customCurrency.transform((finalCharge * selectedItems.Quantity).toString());\r\n      this.selectedOtherCharges.push({\r\n        Id: selectedItems.Id,\r\n        OtherItem: selectedItems.OtherItem,\r\n        OtherItemCharge: selectedItems.OtherItemCharge,\r\n        Quantity: selectedItems.Quantity,\r\n        OtherItemtotal: selectedItems.OtherItemtotal,\r\n        othChgBooths: selectedItems.othChgBooths,\r\n        Recurring: selectedItems.Recurring,\r\n        RentalMonth: this.rentalForm.controls['otherItemsScreen'].value['otherChargeMarketMonth']\r\n      });\r\n    } else {\r\n      selectedItems.true = false;\r\n      const index = this.selectedOtherCharges.findIndex(item => item.Id === selectedItems.Id);\r\n      if (index !== -1) {\r\n        this.selectedOtherCharges.splice(index, 1);\r\n      }\r\n    }\r\n  }\r\n\r\n  deleteSelectedBooth(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Booth?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedMonthlyBooths.findIndex(selectedBooth => selectedBooth.BoothNumber === data.BoothNumber && selectedBooth.RentStartPeriod == data.RentStartPeriod && selectedBooth.RentEndPeriod == data.RentEndPeriod);\r\n        if (index !== -1) {\r\n          this.selectedMonthlyBooths.splice(index, 1);\r\n        }\r\n        if (this.tempRecordNo) {\r\n          const temp = {\r\n            TempRecordNo: this.tempRecordNo.toString(),\r\n            BoothNumber: data.BoothNumber,\r\n            StartDate: new Date(data.RentalStartDate),\r\n            RentalType: 4,\r\n            EndDate: new Date(data.RentalEndDate),\r\n            Sunday: data.Sunday,\r\n            Monday: data.Monday,\r\n            Tuesday: data.Tuesday,\r\n            Wednesday: data.Wednesday,\r\n            Thursday: data.Thursday,\r\n            Friday: data.Friday,\r\n            Saturday: data.Saturday\r\n          }\r\n          this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n          }));\r\n        }\r\n        this.totalRentalCharge -= data.Rent.includes('(') && data.Rent.includes(')') ? -1 * parseFloat(data.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(data.Rent.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.getDiscounts();\r\n        this.gridMonthlyRental.refresh();\r\n      }\r\n    });\r\n  }\r\n\r\n  deleteOtherRentalCharges(data) {\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want to delete the selected Other Charges?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        const index = this.selectedOtherItems.findIndex(oth => oth.Id === data.Id && oth.RentalMonth == data.RentalMonth);\r\n        if (index !== -1) {\r\n          this.selectedOtherItems.splice(index, 1);\r\n        }\r\n\r\n        var selectedItems = this.otherRentalCharges.findIndex(item => item.Id == data.Id);\r\n        if (selectedItems != -1) {\r\n          this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n            if (response) {\r\n              const masterChargeRecord = response.filter(item => item.OtherItemId == data.Id);\r\n              if (masterChargeRecord) {\r\n                this.otherRentalCharges[selectedItems].Quantity = 0;\r\n                this.otherRentalCharges[selectedItems].othChgBooths = \"none\";\r\n                this.otherRentalCharges[selectedItems].OtherItemCharge = this.customCurrency.transform(masterChargeRecord[0].OtherItemCombinedMonthlyCharge);\r\n                this.otherRentalCharges[selectedItems].OtherItemtotal = this.customCurrency.transform('0');\r\n                this.otherRentalCharges[selectedItems].Reference = \"\"\r\n                this.otherRentalCharges[selectedItems].Recurring = masterChargeRecord[0].Recurring\r\n              }\r\n            }\r\n          }, (err) => {\r\n          });\r\n        }\r\n\r\n        this.totalOtherRentalCharge -= data.OtherItemtotal.includes('(') && data.OtherItemtotal.includes(')') ? -1 * parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(data.OtherItemtotal.replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= data.SalesTax.includes('(') && data.SalesTax.includes(')') ? -1 * parseFloat(data.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.SalesTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= data.CityTax.includes('(') && data.CityTax.includes(')') ? -1 * parseFloat(data.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(data.CityTax.replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.getDiscounts();\r\n        this.gridOtherRental.refresh();\r\n      }\r\n    });\r\n  }\r\n\r\n  rentOnlineNextTab(){\r\n    this.saveRentalWithPayment();\r\n    this.bookingFormCompleted.emit(true);\r\n  }\r\n\r\n  saveRentalWithPayment(){\r\n    this.isdirty = false;\r\n    this.isFormDirty.emit(false);\r\n      var obj = {\r\n      RentalType:4,\r\n      VendorId: this.vendorId,\r\n      PriorBalance:this.priorBalance,\r\n      RentalCharge: this.totalRentalCharge,\r\n      SalesTax: this.totalSalesTax,\r\n      SecLevelTax: this.totalSecondLeveltax,\r\n      OtherCharge: this.totalOtherRentalCharge,\r\n      TotalBalanceDue:\"\",\r\n      PaymentDueDate: null,\r\n      MonthlyRentalBooth: [],\r\n      MonthlyOtherRentalCharges: [],\r\n      ReturnData: [],\r\n      ReceiptSettings: \"\",\r\n      PaymentOnly: false,\r\n      ExemptResaleNo: false,\r\n      ExemptResaleReason: \"\",\r\n      ResaleNo: this.resaleNo,\r\n      AppliedDiscountModel: [],\r\n      DiscountAmount: this.totalDiscountCharge ?? 0,\r\n      BookingFee: this.bookingFeeAmount ?? 0\r\n    }\r\n\r\n    var objSelectedBooth = [];\r\n    var objReturnData = [];\r\n    if (this.selectedMonthlyBooths.length > 0) {\r\n      this.selectedMonthlyBooths.forEach((item,i) => {\r\n        const rentalStartDateYear = new Date(item.RentalEndDate).getFullYear();\r\n        const rentalStartDateMonth = new Date(item.RentalEndDate).getMonth() + 1;\r\n        const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n        objSelectedBooth.push({\r\n          MonthlyRentalId: item.MonthlyRentalId,\r\n          BoothNumber: item.BoothNumber,\r\n          BoothTypeId: item.BoothTypeId,\r\n          ProductId: item.Product,\r\n          BoothType: item.BoothType,\r\n          RentalStartDate: new Date(item.RentalStartDate),\r\n          RentalEndDate: new Date(item.RentalEndDate),\r\n          RentalYearMonth: rentalStartDateYearMonth,\r\n          BoothReserved: item.Reservation,\r\n          DoNotRenew: item.Drop,\r\n          PerDiem: item.PerDiem,\r\n          PerdiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n          Monday: item.Monday,\r\n          Tuesday: item.Tuesday,\r\n          Wednesday: item.Wednesday,\r\n          Thursday: item.Thursday,\r\n          Friday: item.Friday,\r\n          Saturday: item.Saturday,\r\n          Sunday: item.Sunday,\r\n          RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          JanRent: item.January ?(item.January.includes('(') && item.January.includes(')') ? -1 *  parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))): 0,\r\n          FebRent: item.February?(item.February.includes('(') && item.February.includes(')') ? -1 *  parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))): 0,\r\n          MarRent: item.March?(item.March.includes('(') && item.March.includes(')') ? -1 *  parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))): 0,\r\n          AprRent: item.April? (item.April.includes('(') && item.April.includes(')') ? -1 *  parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))): 0,\r\n          MayRent: item.May? (item.May.includes('(') && item.May.includes(')') ? -1 *  parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))): 0,\r\n          JunRent: item.June? (item.June.includes('(') && item.June.includes(')') ? -1 *  parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))): 0,\r\n          JulRent: item.July? (item.July.includes('(') && item.July.includes(')') ? -1 *  parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))): 0,\r\n          AugRent: item.August? (item.August.includes('(') && item.August.includes(')') ? -1 *  parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))): 0,\r\n          SepRent: item.September? (item.September.includes('(') && item.September.includes(')') ? -1 *  parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))): 0,\r\n          OctRent: item.October? (item.October.includes('(') && item.October.includes(')') ? -1 *  parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))): 0,\r\n          NovRent: item.November? (item.November.includes('(') && item.November.includes(')') ? -1 *  parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))): 0,\r\n          DecRent: item.December? (item.December.includes('(') && item.December.includes(')') ? -1 *  parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))): 0,\r\n          BookingLog: i +1,\r\n          AllRentalDates: item.AllRentalDates,\r\n          TaxModel: item.TaxModel\r\n        });\r\n\r\n        if (item.NewBooth) {\r\n          objReturnData.push({\r\n            MonthlyRentalId: item.MonthlyRentalId,\r\n            BoothNumber: item.BoothNumber,\r\n            BoothType: item.BoothType,\r\n            BoothDescription: item.BoothDescription,\r\n            BoothTypeId: item.BoothTypeId,\r\n            Product: item.Product,\r\n            RentStartPeriod: item.RentStartPeriod,\r\n            RentEndPeriod: item.RentEndPeriod,\r\n            RentalSavedEndDate: item.RentalEndDate,\r\n            RentalStartDate: item.RentalStartDate,\r\n            RentalEndDate: item.RentalEndDate,\r\n            MktDays: item.MktDays,\r\n            Rent: item.Rent,\r\n            SalesTax: item.SalesTax,\r\n            CityTax: item.CityTax,\r\n            PerDiem: item.PerDiem,\r\n            PerdiemRent: item.PerDiemRent,\r\n            Sunday: item.Sunday,\r\n            Monday: item.Monday,\r\n            Tuesday: item.Tuesday,\r\n            Wednesday: item.Wednesday,\r\n            Thursday: item.Thursday,\r\n            Friday: item.Friday,\r\n            Saturday: item.Saturday,\r\n            Reservation: item.Reservation,\r\n            Drop: item.Drop,\r\n            January: item.January,\r\n            February: item.February,\r\n            March: item.March,\r\n            April: item.April,\r\n            May: item.May,\r\n            June: item.June,\r\n            July: item.July,\r\n            August: item.August,\r\n            September: item.September,\r\n            October: item.October,\r\n            November: item.November,\r\n            December: item.December,\r\n            JanuaryMonthPresent: item.January ? true : false,\r\n            FebruaryMonthPresent: item.February ? true : false,\r\n            MarchMonthPresent: item.March ? true : false,\r\n            AprilMonthPresent: item.April ? true : false,\r\n            MayMonthPresent: item.May ? true : false,\r\n            JuneMonthPresent: item.June ? true : false,\r\n            JulyMonthPresent: item.July ? true : false,\r\n            AugustMonthPresent: item.August ? true : false,\r\n            SeptemberMonthPresent: item.September ? true : false,\r\n            OctoberMonthPresent: item.October ? true : false,\r\n            NovemberMonthPresent: item.November ? true : false,\r\n            DecemberMonthPresent: item.December ? true : false,\r\n            NewBooth: true,\r\n            Status: \"N\",\r\n            StartDateList: item.StartDateList,\r\n            DisableStartDate: false,\r\n            AllRentalDates: item.AllRentalDates,\r\n            TaxModel: item.TaxModel\r\n          });\r\n        }\r\n      });\r\n    }\r\n\r\n    if (objSelectedBooth.length > 0)\r\n      obj.MonthlyRentalBooth = objSelectedBooth;\r\n\r\n    if (objReturnData.length > 0) {\r\n      obj.ReturnData = objReturnData;\r\n    }\r\n\r\n    var objSelectedOtherCharge = [];\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.selectedOtherItems.forEach((item) => {\r\n        const otherRentalYear = new Date(item.RentalMonth.split('-')[0]).getFullYear();\r\n        const otherRentalMonth = new Date(item.RentalMonth.split('-')[0]).getMonth() + 1;\r\n        const otherRentalYearMonth = `${otherRentalYear}${otherRentalMonth < \r\n          10 ? '0' : ''}${otherRentalMonth}`;\r\n\r\n        objSelectedOtherCharge.push({\r\n          OtherItemId: item.Id,\r\n          MonthOtherRentalId: item.MonthOtherRentalId,\r\n          OtherItemName: item.OtherItem,\r\n          OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n          Quantity: item.Quantity,\r\n          YearMonth: otherRentalYearMonth,\r\n          BoothNumber: item.BoothNo,\r\n          Recurring: item.Recurring,\r\n          OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n          SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n          SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n          Reference: item.Reference,\r\n          MonthlyRentalIds : item.MonthlyRentalIds\r\n        })\r\n      });\r\n    }\r\n    if (objSelectedOtherCharge.length > 0)\r\n      obj.MonthlyOtherRentalCharges = objSelectedOtherCharge;\r\n\r\n    var objDiscountData = [];\r\n    if(this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0){\r\n      this.vendorDiscountPlans.forEach((item) => {\r\n        if(item.CheckAll){\r\n          objDiscountData.push({\r\n            PlanId: item.PlanSeqId,\r\n            DiscountAmount:item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n            OtherCharges: item.OtherItems,\r\n            SalesTax: item.SalesTaxApplied,\r\n            SecondLevelTax: item.SecondLevelTaxApplied,\r\n            DiscountType:item.DiscountType==  DiscountType.Percentage ? \"0\" : \"1\",\r\n            DiscountValue : item.DiscountValue,\r\n            SalesTaxAmount:item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n            SecondLevelTaxAmount:item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n          })\r\n        }\r\n      });\r\n    }\r\n    if (objDiscountData.length > 0)\r\n      obj.AppliedDiscountModel = objDiscountData;\r\n\r\n    if (!this.newVendor) {\r\n      this.sharedDataService.paymentSharedData = obj;\r\n      var url = 'vendor-payments/' + this.marketId;\r\n      this.router.navigate([url]);\r\n    }\r\n    else {\r\n      this.rentalBookingData.emit(obj);\r\n    }\r\n    var temp ={\r\n      TempRecordNo: this.tempRecordNo.toString(),\r\n      BoothNumber:\"\"\r\n    }\r\n    this.subscriptions.push(this.rentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n    }));\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<div id=\"main\">\r\n    <div class=\"container\">\r\n        <div class=\"container\" style=\"background-color: white\">\r\n            <div class=\"row mt-4\">\r\n                <div class=\"col-xl-1 col-lg-1 col-md-1 col-sm-12 col-xs-12\"></div>\r\n                <div class=\"col-xl-10 col-lg-10 col-md-10 col-sm-12 col-xs-12 shadow text-center\" style=\"background-color: white\">\r\n                    <img [src]=\"imageUrl\" class=\"img-fluid\" style=\"height: 95px;\" /><br />\r\n                    <span class=\"clsThankU\">Thank You!</span><br />\r\n                    <img src=\"../assets/images/SuccessTick.png\" class=\"img-fluid\" style=\"height: 95px;\" />\r\n                    <br />\r\n                    <br />\r\n                    <br />\r\n                    <div class=\"text-left mt-2 mb-3 thankyouContent\">\r\n                        <span class=\"ThankyouText\">Dear {{VendorName}},</span><br /><br />\r\n                        <span class=\"ThankyouText\">{{MarketName}} would like to thank you for being one of our highly valued\r\n                            customers.</span><br /><br />\r\n                        <span class=\"ThankyouText\" *ngIf=\"!paymentOnly\">We have received your online booking request, and as a confirmation\r\n                            of this online booking,\r\n                            we will be sending you an email enclosing your booking summary. Please review it and feel free to contact\r\n                            {{MarketName}} for your questions.</span><br /><br />\r\n                        <span class=\"ThankyouText\" *ngIf=\"paymentOnly\">We have received your online payment, and as a confirmation of this\r\n                            online payment,\r\n                            we will be sending you an email enclosing your payment summary. Please review it and feel free to contact\r\n                            {{MarketName}} for your questions.</span><br /><br />\r\n                        <span class=\"ThankyouText\">Your online payment authorization number is {{AuthCode}}, and account receipt number is\r\n                            {{MarketAccountReceiptId}}. Please print this page for your reference.</span>\r\n                        <br />\r\n                        <br />\r\n                    </div>\r\n                \r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left mt-2 mb-3 thankyouContent text-center\">\r\n                            <a class=\"printReceiptText\" (click)=\"PreviewRentalReceipt()\"><b>Open Rental Receipt</b></a>\r\n                        </div>\r\n                    </div>\r\n                    <br />\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-left mt-2 mb-3 thankyouContent\">\r\n                            <span class=\"ThankyouText\">Thank you,</span><br />\r\n                            <span class=\"ThankyouText\">{{MarketName}}</span><br /><br />\r\n                        </div>\r\n                    </div>\r\n                \r\n                    <div class=\"row\">\r\n                        <div class=\"col-6 text-right mt-2 mb-3\">\r\n                            <button class=\"btn btn-primary btnThankyouPage\" style=\"width: 90px;\"\r\n                                (click)=\"goBack()\">Back</button>\r\n                        </div>\r\n                        <div class=\"col-6 text-left mt-2 mb-3\">\r\n                            <button class=\"btn btn-primary btnThankyouPage\" style=\"width: 90px;\"\r\n                                (click)=\"printRentalReceipt()\">Print</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <br />\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>\r\n\r\n<div bsModal #printReceiptPopup=\"bs-modal\" class=\"modal fade\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"dialog-sizes-name1\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-fullSize  modal-xl modal-xxl\">\r\n        <div class=\"modal-content\" style=\"margin-top: 3rem;\">\r\n            <div class=\"modal-header\">\r\n                <h5 class=\"modal-title\">Preview Receipt</h5>\r\n                <button type=\"button\" class=\"close\" (click)=\"printReceipt.hide()\" aria-label=\"Close\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body previewModal\" style=\"max-height:76vh ;\">\r\n                <div>\r\n                    <iframe id=\"printf\" #printf name=\"printf\" style=\"width:100%; height:73.5vh\">\r\n                    </iframe>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { Component, ElementRef, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { BsModalRef, BsModalService, ModalDirective } from 'ngx-bootstrap/modal';\r\nimport printJS from 'print-js';\r\nimport { Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { saveAs } from 'file-saver';\r\n\r\n@Component({\r\n  selector: 'app-rental-confirmation',\r\n  templateUrl: './rental-confirmation.component.html',\r\n  styleUrls: ['./rental-confirmation.component.scss']\r\n})\r\nexport class RentalConfirmationComponent implements OnInit {\r\n  constructor(\r\n    private route: ActivatedRoute,\r\n    private modalService: BsModalService,\r\n    public rentalService: RentalService,\r\n    private router: Router,\r\n    private marketInfoService: MarketInfoService,) { }\r\n\r\n  marketId;\r\n  imageUrl;\r\n  private subscriptions: Subscription[] = [];\r\n  @ViewChild('printf') receiptIframe: ElementRef;\r\n  modalRef: BsModalRef;\r\n  @ViewChild('printReceiptPopup', { static: true }) printReceipt: ModalDirective;\r\n  @Input() VendorId;\r\n  @Input() AccountReceipId;\r\n  @Input() RentalType;\r\n  @Input() newVendor;\r\n  MarketName = \"\";\r\n  VendorName = \"\";\r\n  AuthCode = \"\";\r\n  MarketAccountReceiptId= \"\";\r\n  @Input() paymentOnly = false;\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n    });\r\n    this.getMarketLogo();\r\n    this.getVendorPaymentDetails();\r\n  }\r\n\r\n  getMarketLogo() {\r\n    const timestamp = new Date().getTime();\r\n    this.subscriptions.push(this.marketInfoService.getMarketLogo(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.imageUrl = res.MarketLogoBlobURL + `?timestamp=${timestamp}`;\r\n      }\r\n      else {\r\n        this.imageUrl = '../../../assets/images/NoImage.jpg'\r\n      }\r\n    }));\r\n  }\r\n\r\n  getVendorPaymentDetails() {\r\n    this.subscriptions.push(this.rentalService.getVendorPaymentDetails(this.VendorId, this.marketId, this.AccountReceipId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.MarketName = res.MarketName\r\n        this.VendorName = res.VendorName;\r\n        this.AuthCode = res.PaymentAuthorizationNumber;\r\n        this.MarketAccountReceiptId = res.MarketAccountReceiptId\r\n      }\r\n      this.emailRentalReceipts();\r\n    }));\r\n  }\r\n\r\n  emailRentalReceipts() {\r\n    const params = {\r\n      VendorId: parseInt(this.VendorId),\r\n      AccountReceiptId: parseInt(this.AccountReceipId),\r\n      PaymentOnly: this.paymentOnly,\r\n      RentalType: this.RentalType\r\n    };\r\n    var emailSubject = this.RentalType == \"1\" ? \"Daily Rental Receipt\" :\r\n      this.RentalType == \"2\" ? \"Monthly Rental Receipt\" :\r\n        this.RentalType == \"3\" ? \"Weekly Rental Receipt\" :\r\n          this.RentalType == \"4\" ? \"Combined Monthly Rental Receipt\" :\r\n            this.RentalType == \"5\" ? \"Combined Weekly Rental Receipt\" : \"Rental Receipt\";\r\n    this.rentalService.generatePaymentReceipt(this.marketId, params).subscribe((res1: any) => {\r\n      if (res1.Success) {\r\n        var emailData = [{\r\n          AccountReceiptID: this.AccountReceipId,\r\n          VendorID: parseInt(this.VendorId),\r\n          BaseTemplateID: 11,\r\n          AttachmentFile: res1.Message,\r\n          AttachmentFileName: this.paymentOnly ? \"Payment Receipt\" : \"Rental Receipt\",\r\n          FileType: \"application/pdf\",\r\n          Subject: emailSubject,\r\n          WebRentalRequest: true,\r\n          NewVendor : this.newVendor\r\n        }];\r\n\r\n        if (this.paymentOnly) {\r\n          this.subscriptions.push(this.rentalService.SendWRPaymentConfirmationEMail(this.marketId, emailData).subscribe((emailResponse: any) => {\r\n            console.log(\"Payment receipt email delivered\");\r\n          }));\r\n        } else {\r\n          this.subscriptions.push(this.rentalService.SendWRBookingConfirmationEMail(this.marketId, emailData).subscribe((emailResponse: any) => {\r\n            console.log(\"Payment receipt email delivered\");\r\n          }));\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  goBack(){\r\n    if(this.newVendor){\r\n      this.router.navigate(['/login', this.marketId]);\r\n    }else{\r\n      this.router.navigate(['./rent-online', this.marketId, this.VendorId, 'br',this.RentalType]);\r\n    }\r\n  }\r\n\r\n  PreviewRentalReceipt() {\r\n    const params = {\r\n      VendorId: parseInt(this.VendorId),\r\n      AccountReceiptId: parseInt(this.AccountReceipId),\r\n      PaymentOnly: this.paymentOnly,\r\n      RentalType: this.RentalType\r\n    };\r\n\r\n    this.rentalService.generatePaymentReceipt(this.marketId, params).subscribe((res1: any) => {\r\n      if (res1.Success) {\r\n        const message = res1.Message;\r\n        const iframe = this.receiptIframe.nativeElement;\r\n        iframe.src = message;\r\n        iframe.style.height = '700px';\r\n        iframe.style.width = '100%';\r\n        this.printReceipt.show();\r\n      }\r\n    })\r\n  }\r\n\r\n  isMobile(): boolean {\r\n    return /Android|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\r\n  }\r\n\r\n  base64ToBlob(base64: string, contentType: string) {\r\n    const byteCharacters = atob(base64);\r\n    const byteArrays = [];\r\n    for (let offset = 0; offset < byteCharacters.length; offset += 512) {\r\n      const slice = byteCharacters.slice(offset, offset + 512);\r\n      const byteNumbers = new Array(slice.length);\r\n      for (let i = 0; i < slice.length; i++) {\r\n        byteNumbers[i] = slice.charCodeAt(i);\r\n      }\r\n      const byteArray = new Uint8Array(byteNumbers);\r\n      byteArrays.push(byteArray);\r\n    }\r\n    return new Blob(byteArrays, { type: contentType });\r\n  }\r\n\r\n  printRentalReceipt() {\r\n    const params = {\r\n      VendorId: parseInt(this.VendorId),\r\n      AccountReceiptId: parseInt(this.AccountReceipId),\r\n      PaymentOnly: this.paymentOnly,\r\n      RentalType: this.RentalType\r\n    };\r\n    this.rentalService.generatePaymentReceipt(this.marketId,params).subscribe((res1: any) => {\r\n      if (res1.Success) {\r\n        const message = res1.Message;\r\n        if (!this.isMobile()) {\r\n          printJS({\r\n            printable: message.toString().split(',')[1],\r\n            type: 'pdf',\r\n            base64: true,\r\n            onPrintDialogClose: () => { },\r\n          });\r\n        }\r\n        else {\r\n          const base64String = res1.Message.replace(\"data:application/pdf;base64,\", \"\");\r\n          const blob = this.base64ToBlob(base64String, 'application/pdf');\r\n          const blobUrl = URL.createObjectURL(blob);\r\n          saveAs(blob, 'receipt.pdf');\r\n        }\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"bookingDetailsForm\" *ngIf=\"!processPayment && !savePayment\">\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n            <hr class=\"my-2\" />\r\n        </div>\r\n    </div>\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n            <label class=\"fw-700\">{{RentalTypeText}} Bookings:</label>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"rentalType == 1\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left mt-2\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border  text-left\" style=\"width: 8rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Product</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Rental Date</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Rent</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedBooths\">\r\n                                <td scope=\"row\">\r\n                                    Booth # : {{item.BoothNumber}}<br />\r\n                                    Status : <span style=\"color: red\">Booked</span><br />\r\n                                </td>\r\n                                <td>{{item.Product}}</td>\r\n                                <td class=\" text-left\">{{item.RentalDay}}\r\n                                </td>\r\n                                <td class=\" text-left\">{{item.Rent}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedBooths.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"4\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <label class=\"fw-700\">Other Rentals Bookings:</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 8rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Charge</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Quantity</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Rental Day</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Total</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedOtherItems.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedOtherItems\">\r\n                                <td scope=\"row\">\r\n                                    Product: {{item.OtherItem}}<br />\r\n                                    Status : <span style=\"color: red\">Booked</span><br />\r\n                                </td>\r\n                                <td class=\"text-left\">\r\n                                    {{item.OtherItemCharge}}\r\n                                </td>\r\n                                <td class=\"text-left\">\r\n                                    {{item.Quantity}}\r\n                                </td>\r\n                                <td>\r\n                                    {{item.RentalDay}}\r\n                                </td>\r\n                                <td class=\"text-left\"> {{item.OtherItemtotal}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedOtherItems.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"5\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"rentalType == 4\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left mt-2\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renew Start Month</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renew End Month</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Rent</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedMonthlyBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedMonthlyBooths; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Booth # : {{item.BoothNumber}}<br />\r\n                                    Status : <span style=\"color: red\">{{item.Status == 'R'? 'Reserved' : 'Booked'}}</span><br />\r\n                                    <a (click)=\"toggleDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\"\r\n                                         style=\"width: 10%;\"> {{ item.showDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showDetails\">\r\n                                        Product : {{item.ProductName}}<br />\r\n                                        Rent Charged :{{item.CurrentRent}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecondTax}}<br />\r\n                                        Booking Start Week : {{item.CurrentRentStartPeriod}}<br />\r\n                                        Booking End Week : {{item.CurrentRentEndPeriod}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Reservation\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"updateRentalRecord(item)\" [disabled]=\"!allowCMRentalRenewal\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartMonth}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CMRenewalMonth\"\r\n                                    [ngModelOptions]=\"{standalone: true}\" (change)=\"extendCMRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                    <ng-container *ngFor=\"let marketDay of monthlyMarketDays; let i = index\">\r\n                                        <option *ngIf=\"item.Status == 'R'\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                            {{ marketDay.RentalMonths }}\r\n                                        </option>\r\n                                        <option *ngIf=\"item.Status != 'R' && i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                            {{ marketDay.RentalMonths }}\r\n                                        </option>\r\n                                    </ng-container>\r\n                                </select></td>\r\n                                <td class=\"text-left\">{{item.Rent}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedMonthlyBooths.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"5\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <label class=\"fw-700\">Other Rentals Bookings:</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Bookings</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Month</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal End Month</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Charge</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Qty</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 5rem;\">Total</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedOtherItems.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedOtherItems; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Product: {{item.OtherItem}}<br />\r\n                                    Status : <span style=\"color: red\">Booked</span><br />\r\n                                    <a (click)=\"toggleCMOtherItemsDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showOtherItemsDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\" style=\"width: 15%;\">\r\n                                        {{ item.showOtherItemsDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showOtherItemsDetails\">\r\n                                        Booking Start Month : {{item.CurrentRentalMonth}}<br />\r\n                                        Rent Charged : {{item.CurrentOtherItemtotal}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}}: {{item.CurrentSecLevelTax}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Recurring\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" [disabled]=\"!allowOtherItemRenewal\" (change)=\"updateCMOtherItemRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">\r\n                                    {{item.RenewalStartMonth}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CMRenewalMonth\"\r\n                                        [ngModelOptions]=\"{standalone: true}\" (change)=\"extendCMOtherRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                        <ng-container *ngFor=\"let marketDay of monthlyMarketDays; let i = index\">\r\n                                            <option *ngIf=\"item.Status == 'R'\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                                {{ marketDay.RentalMonths }}\r\n                                            </option>\r\n                                            <option *ngIf=\"item.Status != 'R' && i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                                {{ marketDay.RentalMonths }}\r\n                                            </option>\r\n                                        </ng-container>\r\n                                    </select>\r\n                                </td>\r\n                                <td class=\"text-left\"> {{item.OtherItemCharge}}</td>\r\n                                <td class=\"text-left\"> {{item.Quantity}}</td>\r\n                                <td class=\"text-left\"> {{item.OtherItemtotal}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedOtherItems.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"7\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"rentalType == 5\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left mt-2\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Product</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal End Week</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Rent</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedWeeklyBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedWeeklyBooths; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Booth # : {{item.BoothNumber}}<br />\r\n                                    Status : <span style=\"color: red\">{{item.Status == 'R'? 'Reserved' : 'Booked'}}</span><br />\r\n                                    <a (click)=\"toggleCWBookingDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\"\r\n                                            style=\"width: 10%;\"> {{ item.showDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showDetails\">\r\n                                        Product : {{item.ProductName}}<br />\r\n                                        Rent Charged :{{item.CurrentRent}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecondTax}}<br />\r\n                                        Booking Start Week : {{item.CurrentRentStartPeriod}}<br />\r\n                                        Booking End Week : {{item.CurrentRentEndPeriod}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.ProductName}}\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [disabled]=\"!allowCWRentalRenewal || item.BlockRenewal\" [(ngModel)]=\"item.Reservation\"\r\n                                                [ngModelOptions]=\"{standalone: true}\" (change)=\"updateCWRentalRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartWeek}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CWRenewalWeek\"\r\n                                        [ngModelOptions]=\"{standalone: true}\" (change)=\"extendCWRental(item)\"\r\n                                        [disabled]=\"!item.BookingCanExtend\">\r\n                                        <ng-container *ngFor=\"let marketDay of weeklyMarketDays; let i = index\">\r\n                                            <option *ngIf=\"item.Status == 'R'\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                                {{ marketDay.RentalEndDays }}\r\n                                            </option>\r\n                                            <option *ngIf=\"item.Status != 'R' && i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                                {{ marketDay.RentalEndDays }}\r\n                                            </option>\r\n                                        </ng-container>\r\n                                    </select></td>\r\n                                <td class=\"text-left\">{{item.Rent}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedWeeklyBooths.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"6\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <label class=\"fw-700\">Other Rentals Bookings:</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal End Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Charge</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Qty</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 5rem;\">Total</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedOtherItems.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedOtherItems; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Product: {{item.OtherItem}}<br />\r\n                                    Status : <span style=\"color: red\">{{item.Status == 'R'? 'Reserved' : 'Booked'}}</span><br />\r\n                                    <a (click)=\"toggleCMOtherItemsDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showOtherItemsDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\" style=\"width: 15%;\">\r\n                                        {{ item.showOtherItemsDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showOtherItemsDetails\">\r\n                                        Booking Start Week : {{item.CurrentRentalWeek}}<br />\r\n                                        Rent Charged : {{item.CurrentOtherItemtotal}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecLevelTax}}<br />                                        \r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Recurring\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" [disabled]=\"!allowOtherItemRenewal\" (change)=\"updateCWOtherItemRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartWeek}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CWRenewalWeek\"\r\n                                        [ngModelOptions]=\"{standalone: true}\" (change)=\"extendCWOtherRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                        <ng-container *ngFor=\"let marketDay of weeklyMarketDays; let i = index\">\r\n                                            <option *ngIf=\"item.Status == 'R'\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                                {{ marketDay.RentalEndDays }}\r\n                                            </option>\r\n                                            <option *ngIf=\"item.Status != 'R' && i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                                {{ marketDay.RentalEndDays }}\r\n                                            </option>\r\n                                        </ng-container>\r\n                                    </select>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.OtherItemCharge}}</td>\r\n                                <td class=\"text-left\">{{item.Quantity}}</td>\r\n                                <td class=\"text-left\">{{item.OtherItemtotal}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedOtherItems.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"7\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"row\">\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n            <label class=\"mb-0\">Prior Balance</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"priorBalance\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Rental Charge</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"rentalCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Other Charges</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"otherCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Discount</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"discount\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Sales Tax</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalSalesTax\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">{{secondTaxName}}</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalSecondLeveltax\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Additional Charges</label>\r\n            <input type=\"text\" class=\"form-control d-inline text-right\" formControlName=\"additionalCharge\" readonly>\r\n        </div>\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n            <label class=\"mb-0\">Total Charge:</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Payment Amount</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"paymentAmount\"\r\n            (keypress)=\"numberOnly($event)\" \r\n            (input)=\"setCurrencyFormat(this.bookingDetailsForm.get('paymentAmount'))\"\r\n            (blur)=\"setMinimum(this.bookingDetailsForm.get('paymentAmount'))\"\r\n            (click)=\"handleClick($event)\" (dblclick)=\"handledblClick($event)\"\r\n            (change)=\"setMinimum(this.bookingDetailsForm.get('paymentAmount'))\">\r\n            <br />\r\n            <label class=\"mb-0\">CC Convenience Fee</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"convenienceFee\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Total Payment</label>\r\n            <input type=\"text\" class=\"form-control text-right fw-700\" formControlName=\"totalPayment\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Balance due</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"balanceDue\" readonly>\r\n        </div>\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left\"></div>\r\n    </div>\r\n\r\n    <div *ngFor=\"let rule of rulesFormArray; let i = index\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div>\r\n                    <label class=\"mb-0\">\r\n                        <input type=\"checkbox\" class=\"CheckboxClass mt-3\" [formControlName]=\"isChecked\"\r\n                            (change)=\"updateArrayDirectly(i,$event)\">\r\n                        <label class=\"chkAlign mb-0\">{{rule.rulesAndRegualtions}}</label>\r\n                    </label>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\" *ngIf=\"rule.AgreementLinkRequired\">\r\n            <div class=\"col-12 text-left mt-1\">\r\n                <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                    class=\"img-fluid\" />\r\n                &nbsp;<a [href]=\"rule.AgreementBlobURL\" target=\"_blank\" class=\"rules\">{{rule.AgreementLinkTextContent}}</a>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-right mt-3 mb-3\">\r\n            <button class=\"btn btn-outline-primary mr-1\">Cancel</button>\r\n            <button class=\"btn btn-primary\" (click)=\"saveRentalWithPayment()\" [disabled]=\"disableSavePayment() || !allCheckboxesCheckedValidator()\">Submit</button>\r\n        </div>\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"processPayment\">\r\n    <app-payment [VendorId]=\"vendorId\" [keyedInTransaction]=\"keyedInTransaction\" [MarketId]=\"marketId\"\r\n        [CCAmount]=\"paymentAmount\" [TransactionType]=\"transactionType\" [voidPayment]=\"voidPayment\"\r\n        (PaymentResponse)=\"PaymentResponse($event)\" [VerifoneId]=\"verifoneId\"\r\n        (ClosePaymentPage)=\"ClosePaymentPage($event)\"></app-payment>\r\n</div>\r\n\r\n<div *ngIf=\"voidPayment\">\r\n    <app-payment [VendorId]=\"vendorId\" [voidPayment]=\"voidPayment\" (PaymentResponse)=voidPaymentResponse()\r\n        [VerifoneId]=\"verifoneId\" [MarketId]=\"marketId\"></app-payment>\r\n</div>\r\n\r\n<div *ngIf=\"openConfirmationPage\">\r\n    <app-rental-confirmation [VendorId]=\"vendorId\" [AccountReceipId]=\"accountReceipId\" [RentalType]=\"this.rentalType\" [paymentOnly]=\"paymentOnly\"></app-rental-confirmation>\r\n</div>\r\n\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Resale Number</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required!</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"col-md-12 col-8 mt-2\">\r\n                            <label for=\"resaleNumberInput\">Resale Number</label>\r\n                            <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\" maxlength=\"30\" />\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n (click)=\"validateResaleAndBusinessLicense()\">OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { PaymentService } from 'src/app/services/paymentService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport Swal from 'sweetalert2';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GeneralService } from 'src/app/services/General.service';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-booking-details',\r\n  templateUrl: './booking-details.component.html',\r\n  styleUrls: ['./booking-details.component.scss']\r\n})\r\nexport class BookingDetailsComponent implements OnInit, OnDestroy {\r\n  @Input() rentalType;\r\n  @Input() paymentOnly;\r\n  RentalTypeText;\r\n  voidPayment = false;\r\n  selectedBooths = [];\r\n  selectedMonthlyBooths =[]\r\n  public loaderIcon: Promise<boolean>;\r\n  private subscriptions: Subscription[] = [];\r\n  @Input() vendorId;\r\n  @Input() marketId;\r\n  processPayment = false;\r\n  secondTaxName=\"\";\r\n  paymentAmount = 0;\r\n  vendorProducts=[];\r\n  vendorDiscountPlans=[];\r\n  priorBalance;\r\n  paymentGatewayCredentials;\r\n  PromptRenewOther = false;\r\n  processCreditCardOnline;\r\n  verifoneId;\r\n  masterRentChargeforResOtherItems = false;\r\n  openConfirmationPage = false;\r\n  creditCardAmount = 0;\r\n  accountReceipId;\r\n  private clickTimeout: any;\r\n  selectedMarketDays = [];\r\n  rentEndPeriodIndex;\r\n  private monthEndDateCache = new Map<string, Date>();\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  otherItemList = [];\r\n  applyRenewalFee = false;\r\n  paymentAdjustedWithPriorBal = false;\r\n  bookingRenewalFeeId;\r\n  renewalFeeAmount = 0;\r\n  savePayment = false;\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  bookingDetailsForm: FormGroup;\r\n  selectedOtherItems = [];\r\n  applyCCCharge = false;\r\n  CcfeeinPercentage;\r\n  AllowPartialPay;\r\n  vendorRentalDays;\r\n  marketDayCountForResale = 0;\r\n  actualTotalDue = 0;\r\n  renewAllBoothsFromGrid;\r\n  keyedInTransaction = true;\r\n  combinedMonthlyBookingEndDate = false;\r\n  transactionType=\"CREDITSALE\"\r\n  monthlyMarketDays = [];\r\n  weeklyMarketDays =[];\r\n  allrentedOtherItems = [];\r\n  showDetails: boolean = false;\r\n  ResaleNumberRequired  = false;\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  resaleOptionSelected;\r\n  resaleNoOption = \"1\";\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  exemptResaleReason = \"\";\r\n  businessLicenseNumber;\r\n  businessLicenseExpiryDate;\r\n  ResaleOrBusinessHeader = \"\";\r\n  resaleNoDisplay = false;\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  totalDiscountCharge;\r\n  selectedWeeklyBooths=[];\r\n  rules: any[] = [];\r\n  allowCWRentalRenewal = false;\r\n  allowCMRentalRenewal = false;\r\n  allowOtherItemRenewal = false;\r\n  constructor(\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    public vendorService: VendorService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private paymentService: PaymentService,\r\n    private toastr: ToastrService,\r\n    private generalService: GeneralService,\r\n    private marketInfoService: MarketInfoService,\r\n    private datePipe: DatePipe) {\r\n    this.bookingDetailsForm = this.formbuilder.group({\r\n      priorBalance: [this.customCurrency.transform('0')],\r\n      totalCharge: [this.customCurrency.transform('0')],\r\n      paymentAmount: [this.customCurrency.transform('0')],\r\n      convenienceFee: [this.customCurrency.transform('0')],\r\n      totalPayment: [this.customCurrency.transform('0')],\r\n      balanceDue: [this.customCurrency.transform('0')],\r\n      rentalCharge: [this.customCurrency.transform('0')],\r\n      otherCharge: [this.customCurrency.transform('0')],\r\n      discount: [this.customCurrency.transform('0')],\r\n      additionalCharge: [this.customCurrency.transform('0')],\r\n      totalSalesTax: [this.customCurrency.transform('0')],\r\n      totalSecondLeveltax: [this.customCurrency.transform('0')],\r\n      rules: this.formbuilder.array(this.initializeRulesArray())\r\n    });\r\n\r\n    this.subscriptions.push(\r\n      this.bookingDetailsForm.get('totalCharge')?.valueChanges.subscribe((val) => {\r\n        if (!this.AllowPartialPay)\r\n          var totalCharge = val.toString().includes('(') && val.toString().includes(')') ? -1 * parseFloat(val.toString().replace(/[^0-9.-]/g, '')) : parseFloat(val.toString().replace(/[^0-9.-]/g, ''));\r\n        var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0) {\r\n          val = totalCharge - convenienceFee;\r\n          val = this.customCurrency.transform(val);\r\n        }\r\n        this.bookingDetailsForm.get('paymentAmount')?.setValue(val, { emitEvent: false });\r\n        this.calculateBalance();\r\n      })\r\n    );\r\n  }\r\n    \r\n  ngOnInit(): void {\r\n    this.getOtherRentalItems();\r\n    const rentalTypeMapping: { [key: string]: string } = {\r\n      '1': 'Daily',\r\n      '4': 'Combined Monthly',\r\n      '5': 'Combined Weekly'\r\n    };\r\n\r\n    this.rentalType = parseInt(this.rentalType);    \r\n    this.RentalTypeText = rentalTypeMapping[this.rentalType] || '';\r\n    this.marketInfoService.setMarketId(this.marketId);\r\n    this.getMonthlyMarketDays();    \r\n //   this.getVendorProducts();\r\n    this.getVendorBalances();\r\n    this.getCCCredentials();\r\n    this.getWebRentalSetting();\r\n    this.getRentalPaymentSettings()\r\n    this.getMarketRulesAndRegulations();\r\n  }\r\n\r\n  initializeRulesArray(): FormGroup[] {\r\n    return this.rules.map(rule => this.formbuilder.group({\r\n      isChecked: [false],  // Initialize checkbox with false\r\n      rulesAndRegualtions: [rule.rulesAndRegualtions],\r\n      AgreementLinkRequired: [rule.AgreementLinkRequired],\r\n      AgreementBlobURL: [rule.AgreementBlobURL],\r\n      AgreementLinkTextContent: [rule.AgreementLinkTextContent]\r\n    }));\r\n  }\r\n\r\n updateArrayDirectly(index: number, updatedValue: any) {\r\n    const isChecked = (event.target as HTMLInputElement).checked;\r\n    const control = this.rulesFormArray.at(index);\r\n    if (control) {\r\n      this.bookingDetailsForm.value['rules'][index].isChecked = isChecked;\r\n    }\r\n  }\r\n\r\n getMarketRulesAndRegulations() {\r\n    const sub = this.generalService.getWebrentalMarketRules(this.marketId).subscribe((rules: any) => {\r\n      if (rules) {\r\n        const rulesArray = this.bookingDetailsForm.get('rules') as FormArray;\r\n        rules.forEach(rule => {\r\n          rulesArray.push(this.formbuilder.group({\r\n            id: rule.ID,\r\n            isChecked: false,\r\n            rulesAndRegualtions: rule.Rules,\r\n            AgreementLinkRequired : rule.AgreementLinkRequired ?? false,\r\n            AgreementLinkTextContent: rule.AgreementLinkTextContent ?? \"\",\r\n            AgreementBlobURL : rule.AgreementBlobURL ?? \"\"\r\n          }));\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n allCheckboxesCheckedValidator(control: AbstractControl) {\r\n    var allChecked = this.bookingDetailsForm.value['rules'].filter(e=>!e.isChecked).length > 0 ? false : true;\r\n    return allChecked;\r\n  }\r\n\r\n  get rulesFormArray() {\r\n    return this.bookingDetailsForm.value['rules'] as FormArray;\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          const ob = {\r\n            Id: el.OtherItemId,\r\n            OtherItem: el.OtherItem,\r\n            OtherItemCharge: this.rentalType == 1 ? this.customCurrency.transform(el.OtherItemCharge) \r\n                             : this.rentalType == 4 ? this.customCurrency.transform(el.OtherItemCombinedMonthlyCharge) \r\n                             : this.rentalType == 5 ? this.customCurrency.transform(el.OtherItemCombinedWeeklyCharge) \r\n                             : \"$0.00\",\r\n            Quantity: 0,\r\n            OtherItemtotal: this.customCurrency.transform('0'),\r\n            Recurring: el.Recurring,\r\n            othChgBooths: \"none\"\r\n          }\r\n          this.otherItemList.push(ob);\r\n        });\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }    \r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  ClosePaymentPage(){\r\n    this.processPayment = false;\r\n  }\r\n\r\n  getMonthlyMarketDays() {\r\n    forkJoin({\r\n      response: this.marketInfoService.getMonthlyMarketDays(this.marketId),\r\n      weeklyMarket: this.marketInfoService.getWeeklyMarketDays(this.marketId),\r\n      resRentalSettings: this.rentalService.getRentalSettings(this.marketId),\r\n      vendorProducts: this.rentalService.GetVendorProductsById(this.marketId, this.vendorId)\r\n    }).subscribe(\r\n      async ({ response, resRentalSettings, vendorProducts, weeklyMarket }: any) => {\r\n        if (response) {\r\n          this.monthlyMarketDays = response;\r\n        }\r\n        if(weeklyMarket){\r\n          this.weeklyMarketDays = weeklyMarket;\r\n        }\r\n        if (vendorProducts) {\r\n          this.vendorProducts = vendorProducts.body;\r\n        }\r\n\r\n        if (resRentalSettings) {\r\n          this.combinedMonthlyBookingEndDate = resRentalSettings.CombinedMonthlyBookingEndDate;\r\n          if (this.combinedMonthlyBookingEndDate && this.rentalType == 4) {\r\n            const currentDate = new Date();\r\n            const currentYear = currentDate.getFullYear();\r\n            const currentMonth = currentDate.getMonth();\r\n            const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n            const currentMonthEndDate =await this.getMonthEndingDateFromSetting(currentYearMonth);\r\n            if (currentMonthEndDate <= new Date(currentDate)) {\r\n              var currentDateYearAndMonth = this.datePipe.transform(currentDate, 'MMMM yyyy');\r\n              this.monthlyMarketDays = response.filter(e => e.RentalMonths != currentDateYearAndMonth)\r\n            }\r\n          }\r\n        }\r\n        // this.selectedMonthlyMarketDays();  \r\n        if (this.rentalType == 1) {\r\n          this.getDailyRental();\r\n          this.getDailyOtherRentals();\r\n        }\r\n        else if (this.rentalType == 4) {\r\n          await this.getCombinedMonthlyRental();\r\n          this.getCombinedMonthlyOtherRentals();\r\n        }\r\n        else if(this.rentalType == 5){\r\n          this.getCombinedWeeklyRental();\r\n        this.getCombinedWeeklyOtherRentals();\r\n        }\r\n      }, (err) => {\r\n      });\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  getDailyOtherRentals() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedOtherItems = [];\r\n    const sub = this.rentalService.getDailyOtherRentals(this.marketId,this.vendorId).subscribe((res: any[]) => {\r\n      if (res) {\r\n        res.forEach((el) => {\r\n          const index = this.selectedOtherItems.findIndex(item => item.Id === el.OtherItemId && this.datePipe.transform(item.RentalDay, 'MM/dd/yyyy') == this.datePipe.transform(el.RentalDay, 'MM/dd/yyyy') && item.Reference == el.Reference && item.BoothNo == el.BoothNumber);\r\n          if (index !== -1) {\r\n            this.selectedOtherItems[index].Quantity += el.Quantity;\r\n            var otherItemTotal = (el.OtherCharge * this.selectedOtherItems[index].Quantity).toString();    \r\n            this.selectedOtherItems[index].OtherItemtotal = otherItemTotal;\r\n          }\r\n          else {\r\n            var otherItemTotal = (el.OtherCharge *  el.Quantity).toString();          \r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              OtherItem: el.OtherItemName,\r\n              OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: this.customCurrency.transform(otherItemTotal),\r\n              RentalDay: this.datePipe.transform(el.RentalDay, \"MM/dd/YYYY\"),\r\n              SalesTax: this.customCurrency.transform('0'),\r\n              CityTax: this.customCurrency.transform('0'),\r\n              BoothNo: el.BoothNumber,\r\n              Reference: el.Reference,\r\n              NewItem: false\r\n            }\r\n            this.selectedOtherItems.push(ob);\r\n          }\r\n        });\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getDailyRental() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedBooths = [];\r\n    const sub = this.rentalService.getDailyRentals(this.marketId,this.vendorId).subscribe((res: any[]) => {\r\n      if (res) {\r\n        this.selectedBooths = res.map(el => ({\r\n          DailyRentalId: el.DailyRentalId,\r\n          BoothNumber: el.BoothNumber,\r\n          BoothType: el.BoothType,\r\n          BoothTypeId: el.BoothTypeId,\r\n          Product: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n          RentalDay: this.datePipe.transform(el.RentalDay, \"MM/dd/YYYY\"),\r\n          Rent: this.customCurrency.transform(el.RentalCharge),\r\n          SalesTax: this.customCurrency.transform('0'),\r\n          CityTax: this.customCurrency.transform('0'),\r\n          NewBooth: false\r\n        }));\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.rentalService.getVendorBalances(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.priorBalance = res.PriorBalance;\r\n        this.actualTotalDue = res.PriorBalance;\r\n        this.bookingDetailsForm.patchValue({\r\n          priorBalance: this.customCurrency.transform(this.priorBalance),\r\n          totalCharge: this.customCurrency.transform(this.priorBalance)\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  getMonthEndDate(inputDate: Date): Date {\r\n    const nextMonthFirstDay = new Date(inputDate);\r\n    nextMonthFirstDay.setMonth(nextMonthFirstDay.getMonth() + 1, 1);\r\n    const monthEndDate = new Date(nextMonthFirstDay);\r\n    monthEndDate.setDate(monthEndDate.getDate() - 1);\r\n    return monthEndDate;\r\n  }\r\n\r\n toggleDetails(index: number) {\r\n    this.selectedMonthlyBooths[index].showDetails = !this.selectedMonthlyBooths[index].showDetails;\r\n  }\r\n\r\n  toggleCMOtherItemsDetails(index: number) {\r\n    this.selectedOtherItems[index].showOtherItemsDetails = !this.selectedOtherItems[index].showOtherItemsDetails;\r\n  }\r\n\r\n  toggleCWBookingDetails(index: number) {\r\n    this.selectedWeeklyBooths[index].showDetails = !this.selectedWeeklyBooths[index].showDetails;\r\n  }\r\n\r\n  async getCombinedMonthlyRental(): Promise<any> {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedMonthlyBooths = [];\r\n    var existingBooths = [];   \r\n    const sub = this.rentalService.getCombinedMonthlyBookings(this.marketId,this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        existingBooths = res;\r\n        for(const el of existingBooths)\r\n        {\r\n          const StartDateList = [];\r\n          var initialStartDate;\r\n          var marketDays = 0;\r\n          var marketDay;\r\n          const today: Date = new Date(new Date().toDateString());\r\n            var startDate = new Date(el.RentalStartDate);\r\n            var endDate = new Date(el.RentalEndDate);\r\n            const currentDate = new Date();\r\n            const currentYear = currentDate.getFullYear();\r\n            const currentMonth = currentDate.getMonth();\r\n            var endDateYearMonth;\r\n            const currentYearMonth =  `${currentYear}${(currentMonth +1) < 10 ? '0' : ''}${(currentMonth +1)}`;\r\n          if (el.Status == \"R\" && startDate < today) {\r\n            startDate = today;\r\n            initialStartDate = startDate;\r\n            endDate = this.getMonthEndDate(startDate);\r\n\r\n            if (this.combinedMonthlyBookingEndDate  && this.rentalType == 4) {\r\n              const rentalEndDateYear = endDate.getFullYear();\r\n              const rentalEndDateMonth = endDate.getMonth() + 1;\r\n              const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n              endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n              endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n              const rentalStartDate = new Date(startDate);\r\n              var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n              var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n              const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n              // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n              const monthEndDate = await this.getMonthEndingDateFromSetting(PreviousMonthYearAndMonth);\r\n              const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n              if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n                if (new Date() > new Date(monthEndDate)) {\r\n                  startDate = new Date();\r\n                }\r\n                else {\r\n                  startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n                }\r\n              }\r\n\r\n              if (new Date(endDate) < new Date(startDate)) {\r\n                const rentalStartDate = new Date(startDate);\r\n                var nextMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() + 1)).getMonth() + 1;\r\n                var nextMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() + 1)).getFullYear();\r\n                const nextMonthYearAndMonth = `${nextMonthYear}${nextMonth < 10 ? '0' : ''}${nextMonth}`;\r\n                endDate = await this.getMonthEndingDateFromSetting(nextMonthYearAndMonth);\r\n              }\r\n              // }\r\n            }\r\n          }       \r\n\r\n          if (!this.selectedMarketDays || this.selectedMarketDays.length == 0) {\r\n            var response = await this.marketInfoService.getMarketDays(this.marketId).toPromise();\r\n            if (response) {\r\n              response.Sunday ? this.selectedMarketDays.push(1) : 0;\r\n              response.Monday ? this.selectedMarketDays.push(2) : 0;\r\n              response.Tuesday ? this.selectedMarketDays.push(3) : 0;\r\n              response.Wednesday ? this.selectedMarketDays.push(4) : 0;\r\n              response.Thursday ? this.selectedMarketDays.push(5) : 0;\r\n              response.Friday ? this.selectedMarketDays.push(7) : 0;\r\n            }\r\n          }\r\n          for (const date of this.selectedMarketDays) {\r\n            const selectedDayOfWeek = date - 1;\r\n            marketDay = this.datePipe.transform(el.RentalStartDate, 'EEE');\r\n           let currentDay = new Date(startDate);\r\n            while (currentDay <= endDate) {\r\n                if (currentDay.getDay() === selectedDayOfWeek) {\r\n                  marketDays += 1;\r\n                  StartDateList.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                }\r\n              \r\n              if (this.datePipe.transform(currentDay, 'MM/dd/yyyy') == this.datePipe.transform(endDate, 'MM/dd/yyyy')) {\r\n                if (StartDateList && StartDateList.length == 0) {\r\n                  endDate.setDate(endDate.getDate() + 1);\r\n                  endDate = this.getMonthEndDate(endDate);\r\n                }\r\n              }\r\n              currentDay.setDate(currentDay.getDate() + 1);\r\n            }\r\n          }\r\n          const compareDates = (a: DateString, b: DateString): number => {\r\n            const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n\r\n         const sortedDates = StartDateList.sort(compareDates);       \r\n         \r\n          if (el.Status == \"R\") {\r\n            if (initialStartDate <= today) {\r\n              el.RentalStartDate = StartDateList[0].startDate\r\n              el.RentalEndDate = StartDateList[StartDateList.length - 1].startDate;\r\n            }\r\n          }\r\n\r\n          const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'));\r\n          var renewalStartMonth = \"\";\r\n          if (this.monthlyMarketDays.length > 1) {\r\n            renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex + 1].RentalMonths\r\n          }\r\n          if (el.Status == \"R\") {\r\n            renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex].RentalMonths\r\n            var obj = {\r\n              BoothTypeId: el.BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(el.RentalStartDate),\r\n              RentalEndPeriod: new Date(el.RentalEndDate)\r\n            }\r\n            const res = await this.rentalService.getBoothRentalCombinedMonthlyCharges(this.marketId,obj).toPromise();\r\n            if(res){\r\n              const ob = {\r\n                MonthlyRentalId: el.MonthlyRentalId,\r\n                BoothNumber: el.BoothNumber,\r\n                BoothType: el.BoothType,\r\n                BoothTypeId: el.BoothTypeId,\r\n                RentalStartDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n                RentalEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n                RentalSavedEndDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n                RentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n                RentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'),\r\n                Product: el.ProductId,\r\n                ProductName: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n                StartDateList: StartDateList,\r\n                MktDays: marketDays,\r\n                PerDiemRent: this.customCurrency.transform('0.00'),\r\n                Rent: this.customCurrency.transform(res.Rent),\r\n                SalesTax: this.customCurrency.transform(res.SalesTax),\r\n                CityTax: this.customCurrency.transform(res.CityTax),\r\n                CurrentRentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n                CurrentRentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'), \r\n                CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n                CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n                Sunday: el.Sunday,\r\n                Monday: el.Monday,\r\n                Tuesday: el.Tuesday,\r\n                Wednesday: el.Wednesday,\r\n                Thursday: el.Thursday,\r\n                Friday: el.Friday,\r\n                Saturday: el.Saturday,\r\n                Reservation: el.BoothReserved,\r\n                Drop: el.DoNotRenew,\r\n                January: this.customCurrency.transform(res.JanRent),\r\n                February: this.customCurrency.transform(res.FebRent),\r\n                March: this.customCurrency.transform(res.MarRent),\r\n                April: this.customCurrency.transform(res.AprRent),\r\n                May: this.customCurrency.transform(res.MayRent),\r\n                June: this.customCurrency.transform(res.JunRent),\r\n                July: this.customCurrency.transform(res.JulRent),\r\n                August: this.customCurrency.transform(res.AugRent),\r\n                September: this.customCurrency.transform(res.SepRent),\r\n                October: this.customCurrency.transform(res.OctRent),\r\n                November: this.customCurrency.transform(res.NovRent),\r\n                December: this.customCurrency.transform(res.DecRent),\r\n                JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n                FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n                MarchMonthPresent: res.MarchMonthPresent,\r\n                AprilMonthPresent: res.AprilMonthPresent,\r\n                MayMonthPresent: res.MayMonthPresent,\r\n                JuneMonthPresent: res.JuneMonthPresent,\r\n                JulyMonthPresent: res.JulyMonthPresent,\r\n                AugustMonthPresent: res.AugustMonthPresent,\r\n                SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n                OctoberMonthPresent: res.OctoberMonthPresent,\r\n                NovemberMonthPresent: res.NovemberMonthPresent,\r\n                DecemberMonthPresent: res.DecemberMonthPresent,\r\n                DisableJanMonth: res.JanRent ? false : true,\r\n                DisableFebMonth: res.FebRent ? false : true,\r\n                DisableMarMonth: res.MarRent ? false : true,\r\n                DisableAprMonth: res.AprRent ? false : true,\r\n                DisableMayMonth: res.MayRent ? false : true,\r\n                DisableJunMonth: res.JunRent ? false : true,\r\n                DisableJulMonth: res.JulRent ? false : true,\r\n                DisableAugMonth: res.AugRent ? false : true,\r\n                DisableSepMonth: res.SepRent ? false : true,\r\n                DisableOctMonth: res.OctRent ? false : true,\r\n                DisableNovMonth: res.NovRent ? false : true,\r\n                DisableDecMonth: res.DecRent ? false : true,\r\n                DiasbleStartDate: false,\r\n                Status: el.Status,\r\n                NewBooth: false,\r\n                ExtendRental: true,\r\n                BookingCanExtend: true,\r\n                AllRentalDates:StartDateList.map(el => new Date(el.startDate)),\r\n                RenewalStartMonth: renewalStartMonth,\r\n                CMRenewalMonth: this.monthlyMarketDays[rentEndPeriodIndex].RentalMonths,\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              if (this.allowCMRentalRenewal) {\r\n                this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n                this.bookingDetailsForm.patchValue({\r\n                  rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n                  totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                  totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                  totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n                });\r\n              }\r\n              this.selectedMonthlyBooths.push(ob);\r\n            };\r\n          }\r\n          else {\r\n            var rentalStartPeriod;\r\n            if (this.combinedMonthlyBookingEndDate && this.rentalType == 4) {\r\n              let rentalStartDate = new Date(el.RentalStartDate);\r\n              var startMonth = rentalStartDate.getMonth() + 1;\r\n              var startYear = rentalStartDate.getFullYear();\r\n              const startYearAndMonth = `${startYear}${startMonth < 10 ? '0' : ''}${startMonth}`;\r\n              const rentalMonthEndDate = await this.getMonthEndingDateFromSetting(startYearAndMonth);\r\n\r\n              if (new Date(el.RentalStartDate) > rentalMonthEndDate) {       \r\n                rentalStartDate = new Date(el.RentalStartDate);        \r\n                const dayOfMonth = rentalStartDate.getDate();\r\n                rentalStartDate.setMonth(rentalStartDate.getMonth() + 1);\r\n                \r\n                if (rentalStartDate.getDate() < dayOfMonth) {\r\n                    rentalStartDate.setDate(0); // Set to the last day of the previous month\r\n                }\r\n                rentalStartPeriod = this.datePipe.transform(rentalStartDate, 'MMMM yyyy');\r\n              }\r\n              else{\r\n                rentalStartPeriod = this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy');\r\n              }\r\n            }\r\n            else{\r\n              rentalStartPeriod = this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy');\r\n            }\r\n\r\n            const ob = {\r\n              MonthlyRentalId: el.MonthlyRentalId,\r\n              BoothNumber: el.BoothNumber,\r\n              BoothType: el.BoothType,\r\n              BoothTypeId: el.BoothTypeId,\r\n              RentalStartDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n              RentalEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n              RentalSavedEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n              RentStartPeriod:rentalStartPeriod,\r\n              RentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'),              \r\n              Product: el.ProductId,\r\n              ProductName: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n              StartDateList: StartDateList,\r\n              MktDays: marketDays,\r\n              PerDiemRent: this.customCurrency.transform('0.00'),\r\n              Rent: this.customCurrency.transform('0.00'),\r\n              SalesTax: this.customCurrency.transform('0.00'),\r\n              CityTax: this.customCurrency.transform('0.00'),\r\n              CurrentRentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n              CurrentRentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'), \r\n              CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n              CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n              CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n              Sunday: el.Sunday,\r\n              Monday: el.Monday,\r\n              Tuesday: el.Tuesday,\r\n              Wednesday: el.Wednesday,\r\n              Thursday: el.Thursday,\r\n              Friday: el.Friday,\r\n              Saturday: el.Saturday,\r\n              Reservation: el.BoothReserved,\r\n              Drop: el.DoNotRenew,\r\n              Status: el.Status,\r\n              BookingCanExtend: true,\r\n              January: this.customCurrency.transform('0.00'),\r\n              February: this.customCurrency.transform('0.00'),\r\n              March: this.customCurrency.transform('0.00'),\r\n              April: this.customCurrency.transform('0.00'),\r\n              May: this.customCurrency.transform('0.00'),\r\n              June: this.customCurrency.transform('0.00'),\r\n              July: this.customCurrency.transform('0.00'),\r\n              August: this.customCurrency.transform('0.00'),\r\n              September: this.customCurrency.transform('0.00'),\r\n              October: this.customCurrency.transform('0.00'),\r\n              November: this.customCurrency.transform('0.00'),\r\n              December: this.customCurrency.transform('0.00'),\r\n              JanuaryMonthPresent: el.JanuaryMonthPresent,\r\n              FebruaryMonthPresent: el.FebruaryMonthPresent,\r\n              MarchMonthPresent: el.MarchMonthPresent,\r\n              AprilMonthPresent: el.AprilMonthPresent,\r\n              MayMonthPresent: el.MayMonthPresent,\r\n              JuneMonthPresent: el.JuneMonthPresent,\r\n              JulyMonthPresent: el.JulyMonthPresent,\r\n              AugustMonthPresent: el.AugustMonthPresent,\r\n              SeptemberMonthPresent: el.SeptemberMonthPresent,\r\n              OctoberMonthPresent: el.OctoberMonthPresent,\r\n              NovemberMonthPresent: el.NovemberMonthPresent,\r\n              DecemberMonthPresent: el.DecemberMonthPresent,\r\n              DisableJanMonth: true,\r\n              DisableFebMonth: true,\r\n              DisableMarMonth: true,\r\n              DisableAprMonth: true,\r\n              DisableMayMonth: true,\r\n              DisableJunMonth: true,\r\n              DisableJulMonth: true,\r\n              DisableAugMonth: true,\r\n              DisableSepMonth: true,\r\n              DisableOctMonth: true,\r\n              DisableNovMonth: true,\r\n              DisableDecMonth: true,\r\n              DiasbleStartDate: true,\r\n              NewBooth: false,\r\n              AllRentalDates:StartDateList.map(el => new Date(el.startDate)),\r\n              RenewalStartMonth: renewalStartMonth,\r\n              CMRenewalMonth: this.monthlyMarketDays.length > 1 ? this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths :\"\",\r\n              RentEndPeriodIndex:rentEndPeriodIndex\r\n            }\r\n            this.selectedMonthlyBooths.push(ob);\r\n          }         \r\n        };\r\n        \r\n        await this.handleCMEndDateChange();\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  updateRentalRecord(record) {\r\n    if (record.Reservation && this.allowCMRentalRenewal) {\r\n      const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == record.RentEndPeriod);\r\n      const renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths\r\n      record.BookingCanExtend = true;\r\n      record.RenewalStartMonth =renewalStartMonth\r\n      record.CMRenewalMonth = renewalStartMonth;\r\n      record.RentEndPeriodIndex =rentEndPeriodIndex\r\n      this.extendCMRental(record);\r\n    }\r\n    else{\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      record.CMRenewalMonth = record.RentalMonth;\r\n      this.totalRentalCharge -= record.Rent.toString().includes('(') && record.Rent.toString().includes(')') ? -1 * parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.Rent = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  getDaysDifference(date1: Date, date2: Date): number {\r\n    // Normalize both dates to start of the day (midnight)\r\n    const start = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n    const end = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n    // Calculate the difference in time (milliseconds)\r\n    const timeDiff = Math.abs(end.getTime() - start.getTime());\r\n    // Convert time difference from milliseconds to days\r\n    const dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));\r\n    return dayDiff;\r\n  }\r\n\r\n  async handleCMEndDateChange() {\r\n    this.renewAllBoothsFromGrid = false;\r\n    if (this.selectedMonthlyBooths.length === 0) {\r\n      await this.renewAllBooths();\r\n      return;\r\n    }\r\n  \r\n    this.renewAllBoothsFromGrid = true;\r\n    let rentalDates: any[] = [];\r\n    let noResale = true;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n  \r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || this.BusinessLicenseNumberRequired) {\r\n      await this.processSelectedBooths(rentalDates);\r\n  \r\n      for (const item of this.selectedMonthlyBooths) {\r\n        if (this.shouldProcessBooth(item)) {\r\n          await this.processBoothRentalDates(item, rentalDates);\r\n        }\r\n      }\r\n  \r\n      this.updateVendorRentalDays(rentalDates);\r\n  \r\n      const vendorRentalDaysObj = { VendorID: this.vendorId, VendorRentalDate: new Date() };\r\n      const vendorRentalDaysRes = await this.rentalService.getVendorRentalDays(vendorRentalDaysObj).toPromise();\r\n  \r\n      if (this.marketDayCountForResale <= this.DaysSellWithoutResaleNumber ||\r\n          this.marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n        this.addVendorRentalDays(vendorRentalDaysRes);\r\n      }\r\n  \r\n      await this.checkResaleOrBusinessLicense(noResale);\r\n    } else {\r\n      await this.renewAllBooths();\r\n    }\r\n  }\r\n\r\n  extendCMOtherRental(item) {\r\n    const endMonth = new Date(item.CMRenewalMonth);    \r\n    const currentMonth = new Date(item.RentalMonth);\r\n    this.totalOtherRentalCharge -= item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSalesTax += item.SalesTax.toString().includes('(') && item.SalesTax.toString().includes(')') ? -1 * parseFloat(item.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax += item.CityTax.toString().includes('(') && item.CityTax.toString().includes(')') ? -1 * parseFloat(item.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    item.OtherItemtotal = this.customCurrency.transform(\"0\");\r\n    if (currentMonth < new Date(item.CMRenewalMonth) && item.Recurring && this.allowCMRentalRenewal) {\r\n      while (currentMonth < new Date(item.CMRenewalMonth) && item.Recurring && this.allowCMRentalRenewal) {\r\n        var nextDate = currentMonth.setMonth(currentMonth.getMonth() + 1);\r\n        var rentalMonthDate = this.monthlyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n          && this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n        if (rentalMonthDate.length > 0)\r\n          var rentalStartMonth = rentalMonthDate[0].RentalMonths;\r\n\r\n        var recordExist = this.selectedOtherItems.findIndex(e => e.RentalMonth == rentalStartMonth && e.Id == item.Id && e.Reference == item.Reference && e.BoothNumber == item.BoothNo)\r\n        var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n        if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n          otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n        }\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: item.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: item.Quantity,\r\n          OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n        }\r\n\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n          const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n          const finalCharge = isNegative ? -totalValue : totalValue;\r\n          item.OtherItemtotal = this.customCurrency.transform((parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) + (finalCharge * item.Quantity)).toString());\r\n          item.Quantity = item.Quantity;\r\n          item.OtherItemCharge = otherItemCharge\r\n          item.MonthlyRentalIds += ',' + item.Id\r\n          item.CMRenewalMonth = rentalStartMonth;\r\n\r\n          this.totalOtherRentalCharge += item.OtherItemCharge.toString().includes('(') && item.OtherItemCharge.toString().includes(')') ? -1 * parseFloat(item.OtherItemCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.bookingDetailsForm.patchValue({\r\n            otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n        });\r\n      }\r\n    }\r\n    else {\r\n      item.BookingCanExtend = false;\r\n      item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      item.CMRenewalMonth = item.RentalMonth;\r\n    }\r\n  }\r\n\r\n  renewCMOtherCharges() {\r\n    if (this.selectedOtherItems.length > 0) {\r\n          this.proceedRenewingOtherCharges();\r\n    }\r\n  }\r\n\r\n  extendCWOtherRental(item) {\r\n    var cuurentWeek = new Date(item.RentalWeek.split('-')[1]);\r\n    this.totalOtherRentalCharge -= item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSalesTax += item.SalesTax.toString().includes('(') && item.SalesTax.toString().includes(')') ? -1 * parseFloat(item.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalSecondLeveltax += item.CityTax.toString().includes('(') && item.CityTax.toString().includes(')') ? -1 * parseFloat(item.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n    this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n    item.OtherItemtotal = this.customCurrency.transform(\"0\");\r\n    if (cuurentWeek < new Date(item.CWRenewalWeek.split('-')[1]) && item.Recurring && this.allowOtherItemRenewal) {\r\n     while (cuurentWeek < new Date(item.CWRenewalWeek.split('-')[1]) && item.Recurring && this.allowOtherItemRenewal) {\r\n      var nextDate = this.addDays(new Date(cuurentWeek), 7);\r\n      var rentalWeekDate = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalEndDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n        && this.datePipe.transform(new Date(date.RentalEndDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n      if (rentalWeekDate.length > 0)\r\n        var rentalStartWeek = rentalWeekDate[0].RentalStartDays;\r\n        cuurentWeek = new Date(rentalStartWeek.split('-')[1]);\r\n        var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n        if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n         otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n        }\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: item.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: item.Quantity,\r\n          OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n        }\r\n\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n          const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n          const finalCharge = isNegative ? -totalValue : totalValue;\r\n          item.OtherItemtotal = this.customCurrency.transform((parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) + (finalCharge * item.Quantity)).toString());\r\n          item.Quantity = item.Quantity;\r\n          item.OtherItemCharge = otherItemCharge;\r\n          item.MonthlyRentalIds += ',' + item.Id\r\n          item.CWRenewalWeek = rentalStartWeek;\r\n\r\n          this.totalOtherRentalCharge += item.OtherItemCharge.toString().includes('(') && item.OtherItemCharge.toString().includes(')') ? -1 * parseFloat(item.OtherItemCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.bookingDetailsForm.patchValue({\r\n            otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n        });\r\n      }\r\n    }\r\n    else {\r\n      item.BookingCanExtend = false;\r\n      item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      item.CMRenewalMonth = item.RentalMonth;\r\n    }\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  async proceedRenewingOtherCharges(){   \r\n   for(const item of this.selectedOtherItems){\r\n      const endMonth = new Date(item.CMRenewalMonth);\r\n      const currentMonth = new Date(item.RentalMonth);\r\n      if (this.getDateFromDateTime(currentMonth) <= this.getDateFromDateTime(new Date(item.CMRenewalMonth)) && item.Recurring && this.allowOtherItemRenewal) {\r\n        var nextDate = currentMonth.setMonth(currentMonth.getMonth() + 1);\r\n        var rentalMonthDate = this.monthlyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n          && this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n        if (rentalMonthDate.length > 0)\r\n          var rentalEndMonth = rentalMonthDate[0].RentalMonths;\r\n\r\n        var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n        if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n          otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n        }\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: item.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: item.Quantity,\r\n          OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n        }\r\n\r\n        var res = await this.rentalService.getOtherItemsRentalCharges(obj).toPromise();\r\n        const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n        const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        const OtherItemtotal = this.customCurrency.transform((finalCharge * item.Quantity).toString());\r\n        item.Quantity = item.Quantity;\r\n        item.MonthlyRentalIds += ',' + item.Id\r\n        item.OtherItemtotal = OtherItemtotal;\r\n        item.CMRenewalMonth = rentalEndMonth;\r\n\r\n        this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.bookingDetailsForm.patchValue({\r\n          otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n        \r\n      }\r\n      else{\r\n        item.BookingCanExtend = false;\r\n        item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n        item.CMRenewalMonth = item.RentalMonth;\r\n      }\r\n    }\r\n  }\r\n  \r\n  // Helper functions  \r\n  // Process selected booths for rental dates\r\n  async processSelectedBooths(rentalDates: any[]) {\r\n    const selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth || e.ExtendRental);\r\n    for (const record of selectedBoothRecord) {\r\n      for (const el of this.selectedMarketDays) {\r\n        this.addRentalDates(record, rentalDates, el - 1);\r\n      }\r\n    }\r\n  }\r\n  \r\n  // Check if the booth should be processed\r\n  shouldProcessBooth(item: any): boolean {\r\n    return new Date(item.RentEndPeriod.split('-')[0]) < new Date(item.CMRenewalMonth) &&\r\n      !item.Drop && item.Reservation;\r\n  }\r\n  \r\n  // Process rental dates for a booth\r\n  async processBoothRentalDates(item: any, rentalDates: any[]) {\r\n    const recordExist = this.selectedMonthlyBooths.findIndex(e =>\r\n      e.RentStartPeriod === item.RentStartPeriod && e.RentEndPeriod === item.RentEndPeriod &&\r\n      e.BoothNumber === item.BoothNumber && (item.MonthlyRentalId === 0 || e.MonthlyRentalId === item.MonthlyRentalId)\r\n    );\r\n  \r\n    if (recordExist !== -1) {\r\n      const startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n      let endDate = await this.calculateEndDate(item);\r\n  \r\n      // Loop through selected market days and add dates\r\n      this.selectedMarketDays.forEach((el) => {\r\n        this.addRentalDates({ RentalStartDate: startDate, RentalEndDate: endDate }, rentalDates, el - 1);\r\n      });\r\n    }\r\n  }\r\n  \r\n  // Add rental dates based on the day of the week\r\n  addRentalDates(record: any, rentalDates: any[], dayOfWeek: number) {\r\n    let currentDay = new Date(record.RentalStartDate);\r\n    const endDate = new Date(record.RentalEndDate);\r\n  \r\n    while (currentDay <= endDate) {\r\n      if (currentDay.getDay() === dayOfWeek) {\r\n        rentalDates.push({ startDate: this.datePipe.transform(currentDay, 'MMM d, y') });\r\n      }\r\n      currentDay.setDate(currentDay.getDate() + 1);\r\n    }\r\n  }\r\n  \r\n  // Calculate end date based on CMRenewalMonth\r\n  async calculateEndDate(item: any): Promise<Date> {\r\n    const [endMonthDate, endMonthYear] = item.CMRenewalMonth.split(' ');\r\n    const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n    let endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n  \r\n    if (this.combinedMonthlyBookingEndDate) {\r\n      const rentalEndDateYearMonth = `${endDate.getFullYear()}${(endDate.getMonth() + 1).toString().padStart(2, '0')}`;\r\n      endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n    }\r\n  \r\n    return endDate;\r\n  }\r\n  \r\n  // Update vendor rental days by comparing with existing rental dates\r\n  updateVendorRentalDays(rentalDates: any[]) {\r\n    rentalDates.forEach(date => {\r\n      const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n      const dateExist = this.vendorRentalDays.some(el => {\r\n        const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        return rentalDateString === targetDateString;\r\n      });\r\n  \r\n      if (!dateExist) {\r\n        const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n        this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n        this.marketDayCountForResale += 1;\r\n      }\r\n    });\r\n  }\r\n  \r\n  // Add vendor rental days from API response\r\n  addVendorRentalDays(res: any[]) {\r\n    res.forEach(el => {\r\n      const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n      const dateExist = this.vendorRentalDays.some(data => {\r\n        const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n        return rentalDateString === targetDateString;\r\n      });\r\n  \r\n      if (!dateExist) {\r\n        const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n        this.marketDayCountForResale += 1;\r\n      }\r\n    });\r\n  }\r\n  \r\n  // Check conditions for resale or business license\r\n  async checkResaleOrBusinessLicense(noResale: boolean) {\r\n    if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && \r\n        this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n      const modal = this.modalResaleNo.nativeElement;\r\n      modal.classList.add('show');\r\n      modal.style.display = 'block';\r\n      noResale = false;\r\n    } else if (this.BusinessLicenseNumberRequired && \r\n               this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n      await this.handleBusinessLicenseNumber();\r\n    } else {\r\n      await this.renewAllBooths();\r\n    }\r\n  }\r\n\r\n  async validateResaleAndBusinessLicense() {\r\n    var addToGrid = false;\r\n    var closeModalPopup = false;\r\n    const modal = this.modalResaleNo.nativeElement;\r\n      if (!this.resaleNo || this.resaleNo.trim() === '') {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Enter the resale number`,\r\n          icon: \"warning\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      }\r\n      else {\r\n        addToGrid = true;\r\n        closeModalPopup = true;\r\n        this.resaleOptionSelected = true;\r\n        if (modal.classList.contains('show')) {\r\n          modal.style.display = 'none';\r\n          modal.classList.remove('show');\r\n        }\r\n      }\r\n      if (addToGrid) {\r\n        const obj = {\r\n          VendorID: this.vendorId,\r\n          ExemptResaleNo: false,\r\n          ExemptResaleReason: \"\",\r\n          ResaleNo: this.resaleNo,\r\n          MarketId: this.marketId\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.UpdateVendorResaleInfo(obj).subscribe((res: any) => {\r\n        }));\r\n      }\r\n\r\n    if (addToGrid) {\r\n      this.ResaleOrBusinessHeader = \"Business License Number\";\r\n      if (this.BusinessLicenseNumberRequired &&\r\n        this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n        await this.handleBusinessLicenseNumber();\r\n      }\r\n      else{\r\n        await this.renewAllBooths();\r\n      }\r\n    }\r\n  }\r\n\r\n  // Handle business license number validation\r\n  async handleBusinessLicenseNumber() {\r\n    if (!this.businessLicenseNumber) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else {\r\n      await this.checkBusinessLicenseExpiry();\r\n    }\r\n  }\r\n  \r\n  // Check business license expiry date\r\n  async checkBusinessLicenseExpiry() {\r\n    if (!this.businessLicenseExpiryDate) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License expiry date is not provided! Do you want to continue without that?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else if (new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License is expired! Do you want to continue?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else {\r\n     await this.renewAllBooths();\r\n    }\r\n  }\r\n  \r\n\r\n  async getMonthEndingDateFromSetting(rentalYearMonth: string): Promise<Date> {\r\n    if (this.monthEndDateCache.has(rentalYearMonth)) {\r\n      return this.monthEndDateCache.get(rentalYearMonth);\r\n    }\r\n    const response = await this.rentalService.GetSelectedMonthEndDate(rentalYearMonth,this.marketId).toPromise();\r\n    if (response) {\r\n      const monthEndDate = new Date(response.MonthEndDateSelected);\r\n      this.monthEndDateCache.set(rentalYearMonth, monthEndDate);\r\n      return monthEndDate;\r\n    }\r\n    else {\r\n      return null\r\n    }\r\n  }\r\n\r\n  async renewAllBooths() {\r\n    const nonAvailableBooths = [];\r\n\r\n    for (const item of this.selectedMonthlyBooths) {\r\n      if (item.Status != \"R\") {\r\n        const { RentEndPeriod, CMRenewalMonth, Drop, Reservation, MonthlyRentalId, BoothNumber, RentStartPeriod, Status } = item;\r\n        const rentEndDate = new Date(RentEndPeriod.split('-')[0]);\r\n        const renewalMonth = new Date(CMRenewalMonth);\r\n\r\n        if (rentEndDate < renewalMonth && !Drop && Reservation && this.allowCMRentalRenewal) {\r\n          const recordExist = this.selectedMonthlyBooths.findIndex(e =>\r\n            e.RentStartPeriod === RentStartPeriod &&\r\n            e.RentEndPeriod === RentEndPeriod &&\r\n            e.BoothNumber === BoothNumber &&\r\n            e.MonthlyRentalId === MonthlyRentalId &&\r\n            e.Reservation && !e.Drop\r\n          );\r\n\r\n          if (recordExist != -1) {\r\n            const rentalDates = [];\r\n            var currentMonthRentalDates = [];\r\n            var rentalstartDate = \"\";\r\n            var marketDays = 0;\r\n            this.selectedMarketDays = [];\r\n            this.selectedMonthlyBooths[recordExist].Sunday == true ? this.selectedMarketDays.push(1) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Monday ? this.selectedMarketDays.push(2) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Tuesday == true ? this.selectedMarketDays.push(3) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Wednesday == true ? this.selectedMarketDays.push(4) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Thursday == true ? this.selectedMarketDays.push(5) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Friday == true ? this.selectedMarketDays.push(6) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Saturday == true ? this.selectedMarketDays.push(7) : 0;\r\n            for (const el of this.selectedMarketDays) {\r\n              const currentDate = new Date();\r\n              const currentYear = currentDate.getFullYear();\r\n              const currentMonth = currentDate.getMonth();\r\n              var endDateYearMonth;\r\n              const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n              var startDate = new Date(this.selectedMonthlyBooths[recordExist].RenewalStartMonth);\r\n              const endMonth = item.CMRenewalMonth;\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              var previousRentalYearMonth;\r\n              if (this.combinedMonthlyBookingEndDate) {\r\n                const rentalEndDateYear = endDate.getFullYear();\r\n                const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n                endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n                const rentalStartDate = new Date(startDate);\r\n                var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n                var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n                const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n                // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n                const monthEndDate = await this.getMonthEndingDateFromSetting(PreviousMonthYearAndMonth);\r\n                const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n                if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n                  if (new Date() > new Date(monthEndDate)) {\r\n                    startDate = new Date();\r\n                  }\r\n                  else {\r\n                    startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n                  }\r\n                }\r\n                // }\r\n              }\r\n              var previousRentalYearMonth;\r\n              var currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n              if (this.combinedMonthlyBookingEndDate) {\r\n                const currentStartMonth = this.selectedMonthlyBooths[recordExist].RentStartPeriod;\r\n                const [startMonthDate, startMonthYear] = currentStartMonth.split(' ');\r\n                const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n                var currentMonthEnd = new Date(startMonthYear, startMonthIndex + 1, 0);\r\n                const rentalEndDateYear = currentMonthEnd.getFullYear();\r\n                const rentalEndDateMonth = currentMonthEnd.getMonth() + 1;\r\n                const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                previousRentalYearMonth = rentalEndDateYearMonth;\r\n                if (endDateYearMonth == rentalEndDateYearMonth)\r\n                  currentMonthEnd = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n              }\r\n              const selectedDayOfWeek = el - 1\r\n              let currentDay = new Date(startDate);\r\n              while (currentDay <= endDate) {\r\n                if (currentDay.getDay() === selectedDayOfWeek) {\r\n                  if (!rentalstartDate) {\r\n                    rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                  }\r\n                  marketDays += 1;\r\n                  rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                }\r\n                currentDay.setDate(currentDay.getDate() + 1);\r\n              }\r\n\r\n              if (this.combinedMonthlyBookingEndDate) {\r\n                currentDay = new Date(startDate);\r\n                while (currentDay <= currentMonthEnd) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n              }\r\n            };\r\n\r\n            const compareDates = (a: DateString, b: DateString): number => {\r\n              const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              return dateA - dateB;\r\n            };\r\n            const sortedDates = rentalDates.sort(compareDates);\r\n\r\n            if (this.combinedMonthlyBookingEndDate) {\r\n              const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n                const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                return dateA - dateB;\r\n              };\r\n              const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n            }\r\n            else {\r\n              currentMonthRentalDates = rentalDates;\r\n\r\n            }\r\n\r\n            var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n            var currentRentedEndDate = new Date(this.selectedMonthlyBooths[recordExist].RentalEndDate);\r\n            const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n            var obj1 = {\r\n              RentalDates: filteredRentalDates,\r\n              BoothNumber: this.selectedMonthlyBooths[recordExist].BoothNumber\r\n            }\r\n\r\n            const rentalExist = await this.rentalService.checkRentalExits(this.marketId, obj1).toPromise();\r\n            if (!rentalExist.Success) {\r\n              await this.updateBoothRentDetails(recordExist, rentalDates, marketDays);\r\n            } else {\r\n              nonAvailableBooths.push(BoothNumber);\r\n            }\r\n          }\r\n        }\r\n        else {\r\n          item.CMRenewalMonth = item.RentEndPeriod;\r\n          item.RenewalStartMonth = \"This booking cannot be extended further!\"\r\n          item.BookingCanExtend = false;\r\n          nonAvailableBooths.push(item.BoothNumber);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  \r\n  private async getEndDate(CMRenewalMonth, startDate: Date) {\r\n    const [endMonthDate, endMonthYear] = CMRenewalMonth.split(' ');\r\n    const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n    return new Date(endMonthYear, endMonthIndex + 1, 0);\r\n  }\r\n  \r\n  private async getPreviousMonthEndDate(startDate: Date) {\r\n    const rentalStartDate = new Date(startDate);\r\n    rentalStartDate.setMonth(rentalStartDate.getMonth() - 1);\r\n    const previousMonth = rentalStartDate.getMonth() + 1;\r\n    const previousYear = rentalStartDate.getFullYear();\r\n    return await this.getMonthEndingDateFromSetting(`${previousYear}${previousMonth.toString().padStart(2, '0')}`);\r\n  }\r\n  \r\n  private filterCurrentMonthDates(startDate: Date, selectedDayOfWeek: number, currentMonthRentalDates: any[]) {\r\n    let currentDay = new Date(startDate);\r\n    const currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n    while (currentDay <= currentMonthEnd) {\r\n      if (currentDay.getDay() === selectedDayOfWeek) {\r\n        currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n      }\r\n      currentDay.setDate(currentDay.getDate() + 1);\r\n    }\r\n    return currentMonthRentalDates;\r\n  }\r\n  \r\n  private sortDates(dates: any[]): any[] {\r\n    return dates.sort((a, b) => new Date(a.startDate).getTime() - new Date(b.startDate).getTime());\r\n  }\r\n  \r\n  private filterDatesAfterEndDate(allRentalDates: Date[], currentRentedEndDate: string): Date[] {\r\n    const currentEndDate = new Date(currentRentedEndDate);\r\n    return allRentalDates.filter(date => date > currentEndDate);\r\n  }\r\n  \r\n  private async updateBoothRentDetails(recordExist: number, rentalDates: any[], marketDays: number) {\r\n    const { BoothTypeId, RenewalStartMonth, Status, PerDiem, Rent, SalesTax, CityTax } = this.selectedMonthlyBooths[recordExist];\r\n    const res = await this.rentalService.getBoothRentalCombinedMonthlyCharges(this.marketId, {\r\n      BoothTypeId,\r\n      VendorId: this.vendorId,\r\n      RentalStartPeriod: new Date(RenewalStartMonth),\r\n      RentalEndPeriod: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n      PerDiemApplicable: PerDiem,\r\n      Rent: this.parseCurrency(Rent),\r\n      SalesTax: this.parseCurrency(SalesTax),\r\n      CityTax: this.parseCurrency(CityTax)\r\n    }).toPromise();\r\n  \r\n    if (res) {\r\n        RentalEndDate: this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y'),\r\n        this.selectedMonthlyBooths[recordExist].RentalEndDate = this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y');\r\n        this.selectedMonthlyBooths[recordExist].MktDays = marketDays;\r\n        this.selectedMonthlyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n        this.selectedMonthlyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n        this.selectedMonthlyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n        this.selectedMonthlyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n        this.selectedMonthlyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n        this.selectedMonthlyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n        this.selectedMonthlyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n        this.selectedMonthlyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n        this.selectedMonthlyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n        this.selectedMonthlyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n        this.selectedMonthlyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n        this.selectedMonthlyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n        this.selectedMonthlyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n        this.selectedMonthlyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n        this.selectedMonthlyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n        this.selectedMonthlyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].ExtendRental = true;\r\n        this.selectedMonthlyBooths[recordExist].AllRentalDates =  rentalDates.map(el => new Date(el.startDate));  \r\n      this.updateTotalCharges(res.Rent, res.SalesTax, res.CityTax);\r\n    }\r\n  }\r\n  \r\n  private parseCurrency(value: string) {\r\n    return value.includes('(') && value.includes(')') ? -parseFloat(value.replace(/[^0-9.-]/g, '')) : parseFloat(value.replace(/[^0-9.-]/g, ''));\r\n  }\r\n  \r\n  private updateTotalCharges(Rent, SalesTax, CityTax) {\r\n    this.totalRentalCharge += Rent;\r\n    this.totalSalesTax += SalesTax;\r\n    this.totalSecondLeveltax += CityTax;\r\n    this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n     this.bookingDetailsForm.patchValue({\r\n      rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n      totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n      totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n      totalCharge: this.customCurrency.transform(this.totalCharge.toString())     \r\n    });\r\n  }\r\n  \r\n  getCombinedMonthlyOtherRentals() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedOtherItems = [];\r\n    const currentYear = new Date().getFullYear();\r\n    const currentMonth = new Date().getMonth() + 1;\r\n    const currentYearMonth = `${currentYear}${currentMonth < 10 ? '0' : ''}${currentMonth}`;\r\n    const sub = this.rentalService.getCombinedMonthlyOtherRentals(this.marketId, this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        this.allrentedOtherItems = res;\r\n        for(const el of res){\r\n          if (el.YearMonth >= currentYearMonth) {        \r\n            const year = parseInt(el.YearMonth.substring(0, 4));\r\n            const month = parseInt(el.YearMonth.substring(4, 6));\r\n            const date = new Date(year, month - 1, 1);\r\n            const formattedDate = this.datePipe.transform(date, 'MMMM yyyy');\r\n            const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths ==formattedDate);\r\n            const renewalStartMonth = this.monthlyMarketDays.length > 1 ? this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths : \"\";\r\n          \r\n            const index = this.selectedOtherItems.findIndex(item => item.Id === el.OtherItemId && item.RentalMonth == formattedDate && item.Reference == el.Reference && item.BoothNo == el.BoothNumber && item.Recurring == el.Recurring);\r\n            if (index !== -1) {\r\n              this.selectedOtherItems[index].Quantity += el.Quantity;\r\n              this.selectedOtherItems[index].MonthlyRentalIds += ',' + el.OtherRentalId\r\n              var otherItemTotal = (el.OtherCharge * this.selectedOtherItems[index].Quantity).toString();    \r\n              this.selectedOtherItems[index].OtherItemtotal = otherItemTotal;\r\n            }\r\n            else {           \r\n              var otherItemTotal = (el.OtherCharge *  el.Quantity).toString();           \r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(\"0\"),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform(\"0\"),\r\n                RentalMonth: formattedDate,\r\n                SalesTax: this.customCurrency.transform('0'),\r\n                CityTax: this.customCurrency.transform('0'),\r\n                CurrentRentalMonth: formattedDate,\r\n                CurrentOtherItemtotal: this.customCurrency.transform(el.OtherCharge.toString()),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n                CurrentSecLevelTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                MonthlyRentalIds: el.OtherRentalId.toString(),\r\n                RenewalStartMonth: formattedDate,\r\n                CMRenewalMonth:formattedDate,\r\n                BookingCanExtend: true,\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n            }\r\n          }\r\n          else {\r\n            const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths ==formattedDate);\r\n            const renewalStartMonth = this.monthlyMarketDays.length > 1 ? this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths : \"\";\r\n            var obj = {\r\n              MarketId: this.marketId,\r\n              OtherItemId: el.OtherItemId,\r\n              VendorId: this.vendorId,\r\n              Quantity: el.Quantity,\r\n              OtherItemCharge: el.OtherCharge\r\n            }\r\n            const date = new Date(currentYear, currentMonth - 1, 1);\r\n            const formattedDate = this.datePipe.transform(date, 'MMMM yyyy');\r\n            const res = await this.rentalService.getOtherItemsRentalCharges(obj).toPromise();\r\n            if(res)\r\n            {\r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform((el.OtherCharge * el.Quantity).toString()),\r\n                RentalMonth: formattedDate,\r\n                SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n                CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                MonthlyRentalIds: '',\r\n                Status: \"R\",\r\n                RentEndPeriodIndex:rentEndPeriodIndex,\r\n                BookingCanExtend: true,\r\n                RenewalStartMonth: formattedDate,\r\n                CMRenewalMonth:formattedDate,\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n              const OtherItemtotal = el.OtherCharge * el.Quantity;\r\n              if (this.allowOtherItemRenewal) {\r\n                this.totalOtherRentalCharge = OtherItemtotal;\r\n                this.totalSalesTax = res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalSecondLeveltax = res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalCharge = this.priorBalance + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n                this.bookingDetailsForm.patchValue({\r\n                  otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n                  totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                  totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                  totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n                });\r\n              }\r\n            }\r\n          }\r\n        } \r\n        \r\n        this.renewCMOtherCharges();\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  saveRentalWithPayment() { \r\n    this.savePayment = false;   \r\n    var creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n     var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n    const totalAmountPaid = creditCardAmount  + convenienceFee;\r\n    if (totalAmountPaid != 0 || (totalAmountPaid == 0 && this.paymentAdjustedWithPriorBal)) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Are you sure you want to proceed with the payment?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          if (this.paymentAdjustedWithPriorBal) {\r\n            var obj = {\r\n              PaymentSuccess: true,\r\n              OrderId: \"\",\r\n              VerifoneId: 0\r\n            }\r\n            this.savePayment = true;\r\n            this.PaymentResponse(obj)\r\n          } else {\r\n            if (this.paymentGatewayCredentials && this.processCreditCardOnline)\r\n              this.processPayment = true;\r\n            else {\r\n              Swal.fire({\r\n                title: $localize`Warning`,\r\n                text: $localize`Credit card cannot be processed.`,\r\n                icon: \"warning\",\r\n                confirmButtonText: $localize`Ok`,\r\n              });\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n    else {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please enter the payment amount!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  getCombinedWeeklyOtherRentals() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedOtherItems = [];  \r\n    const weekStartDate = this.weeklyMarketDays[0].RentalStartDays.split('-')[0];\r\n    const sub = this.rentalService.getCombinedWeeklyOtherRentals(this.marketId,this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        this.allrentedOtherItems = res;\r\n        for(const el of res){\r\n          var RentalWeekRecord = this.weeklyMarketDays.filter(date => new Date(date.RentalStartDays.split('-')[0]) <= new Date(el.RentalWeekDay)\r\n            && new Date(date.RentalStartDays.split('-')[1]) >= new Date(el.RentalWeekDay))\r\n          if (RentalWeekRecord.length > 0)\r\n            var RentalWeek = RentalWeekRecord[0].RentalStartDays\r\n          const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == RentalWeek);\r\n          const renewalStartWeek = this.weeklyMarketDays.length > 1 ? this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays : \"\";\r\n\r\n          if (new Date(el.RentalWeekDay) >= new Date(weekStartDate)) {\r\n            const index = this.selectedOtherItems.findIndex(item => item.Id === el.OtherItemId && item.RentalWeek == el.RentalWeek && item.Reference == el.Reference && item.BoothNo == el.BoothNumber && item.Recurring == el.Recurring);\r\n            if (index !== -1) {\r\n              this.selectedOtherItems[index].Quantity += el.Quantity;\r\n              this.selectedOtherItems[index].WeeklyOtherRentalIds += ',' + el.OtherRentalId\r\n            }\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              WeekOtherRentalId: el.OtherRentalId,\r\n              OtherItem: el.OtherItemName,\r\n              OtherItemCharge: this.customCurrency.transform('0'),\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              RentalWeek: RentalWeek,\r\n              SalesTax: this.customCurrency.transform('0'),\r\n              CityTax: this.customCurrency.transform('0'),\r\n              CurrentRentalWeek: RentalWeek,\r\n              CurrentOtherItemtotal: this.customCurrency.transform(el.OtherCharge.toString()),\r\n              CurrentSalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n              CurrentSecLevelTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n              BoothNo: el.BoothNumber,\r\n              Recurring: el.Recurring,\r\n              NewItem: false,\r\n              Reference: el.Reference,\r\n              WeeklyOtherRentalIds: el.OtherRentalId.toString(),\r\n              Status: \"B\",\r\n              RentEndPeriodIndex: rentEndPeriodIndex,\r\n              RenewalStartWeek: renewalStartWeek,\r\n              CWRenewalWeek: renewalStartWeek,\r\n              BookingCanExtend: true,\r\n            }\r\n            this.selectedOtherItems.push(ob);\r\n          }\r\n          else {\r\n            var obj = {\r\n              MarketId: this.marketId,\r\n              OtherItemId: el.OtherItemId,\r\n              VendorId: this.vendorId,\r\n              Quantity: el.Quantity,\r\n              OtherItemCharge: el.OtherCharge\r\n            }\r\n\r\n            const res = await this.rentalService.getOtherItemsRentalCharges(obj).toPromise();\r\n            if(res)\r\n            {\r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform((el.OtherCharge * el.Quantity).toString()),\r\n                RentalWeek: this.weeklyMarketDays[0].RentalStartDays,\r\n                SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n                CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                WeeklyOtherRentalIds: '',\r\n                Status: \"R\",\r\n                RentEndPeriodIndex:rentEndPeriodIndex,\r\n                RenewalStartWeek: this.weeklyMarketDays[0].RentalStartDays,\r\n                CWRenewalWeek: this.weeklyMarketDays[0].RentalStartDays,\r\n                BookingCanExtend: true,\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n              const OtherItemtotal = el.OtherCharge * el.Quantity;\r\n              if (this.allowOtherItemRenewal) {\r\n                this.totalOtherRentalCharge += OtherItemtotal;\r\n                this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n                this.bookingDetailsForm.patchValue({\r\n                  otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n                  totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                  totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                  totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n                });\r\n              }\r\n            }\r\n          }\r\n        }\r\n        this.renewCWOtherCharges();\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getDateRange(endDate: Date): string {\r\n    const startDate = new Date(endDate);\r\n    startDate.setDate(endDate.getDate() - 6); // Subtract 6 days\r\n\r\n    // Format dates as \"MMM d, yyyy\"\r\n    const options: Intl.DateTimeFormatOptions = { month: 'short', day: 'numeric', year: 'numeric' };\r\n    const startDateStr = startDate.toLocaleDateString('en-US', options);\r\n    const endDateStr = endDate.toLocaleDateString('en-US', options);\r\n\r\n    return `${startDateStr} - ${endDateStr}`;\r\n  }\r\n\r\n  private async fetchMarketDays() {\r\n    if (!this.selectedMarketDays || this.selectedMarketDays.length === 0) {\r\n      const response = await this.marketInfoService.getMarketDays(this.marketId).toPromise();\r\n      if (response) {\r\n        response.Sunday && this.selectedMarketDays.push(1);\r\n        response.Monday && this.selectedMarketDays.push(2);\r\n        response.Tuesday && this.selectedMarketDays.push(3);\r\n        response.Wednesday && this.selectedMarketDays.push(4);\r\n        response.Thursday && this.selectedMarketDays.push(5);\r\n        response.Friday && this.selectedMarketDays.push(6);\r\n        response.Saturday && this.selectedMarketDays.push(7);\r\n      }\r\n    }\r\n  }\r\n\r\n  private async CWRentalDateList(startDate,endDate){\r\n    var StartDateList = [];\r\n    for (const date of this.selectedMarketDays) {\r\n      const selectedDayOfWeek = date - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (currentDay <= endDate) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n           // marketDays += 1;\r\n            StartDateList.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n\r\n        if (this.datePipe.transform(currentDay, 'MM/dd/yyyy') == this.datePipe.transform(endDate, 'MM/dd/yyyy')) {\r\n          if (StartDateList && StartDateList.length == 0) {\r\n            endDate.setDate(endDate.getDate() + 1);\r\n            endDate = new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[1]);\r\n          }\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n    }\r\n    const compareDates = (a: DateString, b: DateString): number => {\r\n      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n      return dateA - dateB;\r\n    };\r\n    const sortedDates = StartDateList.sort(compareDates);\r\n    return StartDateList;\r\n  }\r\n\r\n  getCombinedWeeklyRental() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedWeeklyBooths = [];\r\n    var existingBooths = [];   \r\n    const sub = this.rentalService.getCombinedWeeklyBookings(this.marketId,this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        existingBooths = res;\r\n        for (const el of existingBooths) {\r\n          var StartDateList;\r\n          var initialStartDate;\r\n          var marketDays = 0;\r\n          //var marketDay;\r\n          const today: Date = new Date(new Date().toDateString());\r\n\r\n          var startDate = new Date(el.RentalStartDate);\r\n          var endDate = new Date(el.RentalEndDate);\r\n          if (el.Status == \"R\" && startDate < today) {\r\n            startDate = today;\r\n            initialStartDate = startDate;\r\n            endDate = new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[1]);\r\n          }\r\n          await this.fetchMarketDays();        \r\n          StartDateList = await this.CWRentalDateList(startDate,endDate);      \r\n\r\n          if (el.Status == \"R\") {\r\n            if (initialStartDate <= today) {\r\n              el.RentalStartDate = StartDateList[0].startDate\r\n              el.RentalEndDate = StartDateList[StartDateList.length - 1].startDate;\r\n            }\r\n          }\r\n          \r\n          if (el.Status == \"R\") {\r\n            await this.bindCWReservations(el,StartDateList,marketDays);\r\n          }\r\n          else {\r\n            var rentalStartDateRecord = this.weeklyMarketDays.filter(date => new Date(date.RentalStartDays.split('-')[0]) <= new Date(el.RentalStartDate)\r\n              && new Date(date.RentalStartDays.split('-')[1]) >= new Date(el.RentalStartDate))\r\n            if (rentalStartDateRecord.length > 0)\r\n              var rentalStartDate = rentalStartDateRecord[0].RentalStartDays\r\n\r\n            var rentalEndDateRecord = this.weeklyMarketDays.filter(date => new Date(date.RentalEndDays.split('-')[0]) <= new Date(el.RentalEndDate)\r\n              && new Date(date.RentalEndDays.split('-')[1]) >= new Date(el.RentalEndDate))\r\n            if (rentalEndDateRecord.length > 0)\r\n              var rentalEndDate = rentalEndDateRecord[0].RentalEndDays\r\n            \r\n            if (!rentalEndDate) {\r\n              rentalEndDate = this.getDateRange(new Date(rentalEndDate));\r\n            }\r\n            \r\n            const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == rentalEndDate);\r\n            const renewalStartWeek = this.weeklyMarketDays.length > 1 ? this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays : \"\";\r\n\r\n            if (rentalStartDate && rentalEndDate) {\r\n              var month = this.datePipe.transform(el.RentalEndDate, 'MMM');\r\n              const monthMap: Record<string, string> = {\r\n                jan: \"JanuaryMonthPresent\",\r\n                feb: \"FebruaryMonthPresent\",\r\n                mar: \"MarchMonthPresent\",\r\n                apr: \"AprilMonthPresent\",\r\n                may: \"MayMonthPresent\",\r\n                jun: \"JuneMonthPresent\",\r\n                jul: \"JulyMonthPresent\",\r\n                aug: \"AugustMonthPresent\",\r\n                sep: \"SeptemberMonthPresent\",\r\n                oct: \"OctoberMonthPresent\",\r\n                nov: \"NovemberMonthPresent\",\r\n                dec: \"DecemberMonthPresent\"\r\n              };\r\n              \r\n              // Initialize month presence variables dynamically\r\n              const monthPresence: Record<string, boolean> = {};\r\n              Object.keys(monthMap).forEach(key => monthPresence[monthMap[key]] = false);\r\n              \r\n              // Set the correct month to true\r\n              if (monthMap[month.toLowerCase()]) {\r\n                monthPresence[monthMap[month.toLowerCase()]] = true;\r\n              }\r\n              \r\n              // Create an object with dynamic month fields\r\n              const months = [\r\n                \"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \r\n                \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"\r\n              ];\r\n\r\n              const monthValues = months.reduce((acc, month) => {\r\n                acc[month] = this.customCurrency.transform('0.00');\r\n                acc[`Disable${month.slice(0, 3)}Month`] = true;\r\n                return acc;\r\n              }, {} as Record<string, any>);\r\n              \r\n              const ob = {\r\n                WeeklyRentalId: el.WeeklyRentalId,\r\n                BoothNumber: el.BoothNumber,\r\n                BoothType: el.BoothType,\r\n                BoothTypeId: el.BoothTypeId,\r\n                RentStartPeriod: rentalStartDate,\r\n                RentEndPeriod: rentalEndDate,\r\n                RentalStartDate: this.datePipe.transform(new Date(el.RentalStartDate), 'MMM d, y'),\r\n                RentalEndDate: this.datePipe.transform(new Date(el.RentalEndDate), 'MMM d, y'),\r\n                RentalSavedEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n                Product: el.ProductId,\r\n                ProductName: this.vendorProducts.find(e => e.ProductId == el.ProductId)?.ProductName,\r\n                MktDays: marketDays,\r\n                PerDiemRent: this.customCurrency.transform('0.00'),\r\n                StartDateList: StartDateList,\r\n                Rent: this.customCurrency.transform(el.RentalCharge),\r\n                SalesTax: this.customCurrency.transform(el.SalesTax),\r\n                CityTax: this.customCurrency.transform(el.SecLevelTax),\r\n                CurrentRentStartPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                CurrentRentEndPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n                CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n                Sunday: el.Sunday,\r\n                Monday: el.Monday,\r\n                Tuesday: el.Tuesday,\r\n                Wednesday: el.Wednesday,\r\n                Thursday: el.Thursday,\r\n                Friday: el.Friday,\r\n                Saturday: el.Saturday,\r\n                Reservation: el.BoothReserved,\r\n                Drop: el.DoNotRenew,\r\n                NewBooth: false,\r\n                ...monthPresence,\r\n                ...monthValues, // Replaces `Object.fromEntries()`\r\n                DisableStartDate: true,\r\n                BookingCanExtend: true,\r\n                RenewalStartWeek: renewalStartWeek,\r\n                CWRenewalWeek: this.weeklyMarketDays.length > 1 ? this.weeklyMarketDays[rentEndPeriodIndex + 1].RentalEndDays : \"\",\r\n                RentEndPeriodIndex: rentEndPeriodIndex,\r\n                BlockRenewal: false\r\n              };              \r\n              this.selectedWeeklyBooths.push(ob);\r\n              \r\n            }\r\n          }\r\n        }   \r\n        \r\n        this.loaderIcon = Promise.resolve(false);\r\n        this.handleCWEndDateChange();\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  async bindCWReservations(el,StartDateList,marketDays){\r\n    var obj = {\r\n      BoothTypeId: el.BoothTypeId,\r\n      VendorId: this.vendorId,\r\n      RentalStartPeriod: new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[0]),\r\n      RentalEndPeriod: new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[1]),\r\n    }\r\n    var res = await this.rentalService.getBoothRentalCombinedWeeklyCharges(this.marketId,obj).toPromise();\r\n    if(res){\r\n      var rentalStartDateRecord = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalStartDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(el.RentalStartDate), 'MM/dd/yyyy')\r\n        && this.datePipe.transform(new Date(date.RentalStartDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(el.RentalStartDate), 'MM/dd/yyyy'))\r\n      if (rentalStartDateRecord.length > 0)\r\n        var rentalStartDate = rentalStartDateRecord[0].RentalStartDays\r\n\r\n      var rentalEndDateRecord = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalEndDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(el.RentalEndDate), 'MM/dd/yyyy')\r\n        && this.datePipe.transform(new Date(date.RentalEndDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(el.RentalEndDate), 'MM/dd/yyyy'))\r\n      if (rentalEndDateRecord.length > 0)\r\n        var rentalEndDate = rentalEndDateRecord[0].RentalEndDays\r\n\r\n      const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == rentalEndDate);\r\n      const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex].RentalEndDays;\r\n\r\n      const ob = {\r\n        WeeklyRentalId: el.WeeklyRentalId,\r\n        BoothNumber: el.BoothNumber,\r\n        BoothType: el.BoothType,\r\n        BoothTypeId: el.BoothTypeId,\r\n        RentStartPeriod: rentalStartDate,\r\n        RentEndPeriod: rentalEndDate,\r\n        RentalStartDate: this.datePipe.transform(new Date(el.RentalStartDate), 'MMM d, y'),\r\n        RentalEndDate: this.datePipe.transform(new Date(el.RentalEndDate), 'MMM d, y'),\r\n        RentalSavedEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n        Product: el.ProductId,\r\n        ProductName: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n        StartDateList: StartDateList,\r\n        MktDays: marketDays,\r\n        PerDiemRent: this.customCurrency.transform('0.00'),\r\n        Rent: this.customCurrency.transform(res.Rent),\r\n        SalesTax: this.customCurrency.transform(res.SalesTax),\r\n        CityTax: this.customCurrency.transform(res.CityTax),\r\n        CurrentRentStartPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n        CurrentRentEndPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n        CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n        CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n        CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n        Sunday: el.Sunday,\r\n        Monday: el.Monday,\r\n        Tuesday: el.Tuesday,\r\n        Wednesday: el.Wednesday,\r\n        Thursday: el.Thursday,\r\n        Friday: el.Friday,\r\n        Saturday: el.Saturday,\r\n        Reservation: el.BoothReserved,\r\n        Drop: el.DoNotRenew,\r\n        January: this.customCurrency.transform(res.JanRent),\r\n        February: this.customCurrency.transform(res.FebRent),\r\n        March: this.customCurrency.transform(res.MarRent),\r\n        April: this.customCurrency.transform(res.AprRent),\r\n        May: this.customCurrency.transform(res.MayRent),\r\n        June: this.customCurrency.transform(res.JunRent),\r\n        July: this.customCurrency.transform(res.JulRent),\r\n        August: this.customCurrency.transform(res.AugRent),\r\n        September: this.customCurrency.transform(res.SepRent),\r\n        October: this.customCurrency.transform(res.OctRent),\r\n        November: this.customCurrency.transform(res.NovRent),\r\n        December: this.customCurrency.transform(res.DecRent),\r\n        JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n        FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n        MarchMonthPresent: res.MarchMonthPresent,\r\n        AprilMonthPresent: res.AprilMonthPresent,\r\n        MayMonthPresent: res.MayMonthPresent,\r\n        JuneMonthPresent: res.JuneMonthPresent,\r\n        JulyMonthPresent: res.JulyMonthPresent,\r\n        AugustMonthPresent: res.AugustMonthPresent,\r\n        SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n        OctoberMonthPresent: res.OctoberMonthPresent,\r\n        NovemberMonthPresent: res.NovemberMonthPresent,\r\n        DecemberMonthPresent: res.DecemberMonthPresent,\r\n        DisableJanMonth: res.JanRent ? false : true,\r\n        DisableFebMonth: res.FebRent ? false : true,\r\n        DisableMarMonth: res.MarRent ? false : true,\r\n        DisableAprMonth: res.AprRent ? false : true,\r\n        DisableMayMonth: res.MayRent ? false : true,\r\n        DisableJunMonth: res.JunRent ? false : true,\r\n        DisableJulMonth: res.JulRent ? false : true,\r\n        DisableAugMonth: res.AugRent ? false : true,\r\n        DisableSepMonth: res.SepRent ? false : true,\r\n        DisableOctMonth: res.OctRent ? false : true,\r\n        DisableNovMonth: res.NovRent ? false : true,\r\n        DisableDecMonth: res.DecRent ? false : true,\r\n        DisableStartDate: false,\r\n        Status: el.Status,\r\n        NewBooth: false,\r\n        BookingCanExtend: true,\r\n        RenewalStartWeek:renewalStartWeek,\r\n        CWRenewalWeek: this.weeklyMarketDays[rentEndPeriodIndex].RentalEndDays,\r\n        RentEndPeriodIndex:rentEndPeriodIndex,\r\n        BlockRenewal: false\r\n      }\r\n      if (this.allowCWRentalRenewal) {\r\n        this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.bookingDetailsForm.patchValue({\r\n          rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n      }\r\n      this.selectedWeeklyBooths.push(ob);\r\n    };\r\n  }\r\n\r\n  PaymentResponse(response) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (response.PaymentSuccess) {\r\n      this.verifoneId = response.VerifoneId;\r\n      switch (this.rentalType) {\r\n        case 1:\r\n          var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n          if (convenienceFee > 0 && this.paymentOnly) {\r\n            this.paymentOnly = false;\r\n          }\r\n          var obj = {\r\n            VendorId: this.vendorId,\r\n            PaymentOrderId: response.OrderId,\r\n            RentalCharge: this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            SalesTax: 0,\r\n            SecLevelTax: 0,\r\n            OtherCharge: this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            PriorBalance: this.bookingDetailsForm.get('priorBalance').value.toString().includes('(') && this.bookingDetailsForm.get('priorBalance').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')),\r\n            TotalBalanceDue: this.bookingDetailsForm.get('balanceDue').value.toString().includes('(') && this.bookingDetailsForm.get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n            RentalNotes: \"\",\r\n            CashAmount: 0,\r\n            CheckAmount: 0,\r\n            CheckNo: \"\",\r\n            ChangeAmount: 0,\r\n            CardAmount: this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            DirectDebitAmount: 0,\r\n            CardType: \"\",\r\n            PaymentDone: true,\r\n            WebRentalRequest: true,\r\n            PaymentDueDate: null,\r\n            VerifoneId: response.VerifoneId,\r\n            DiscountAmount: this.bookingDetailsForm.get('discount').value.toString().includes('(') && this.bookingDetailsForm.get('discount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            ConvenienceFee: this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n            BookingFee: this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            DailyRentalBooth: [],\r\n            DailyRentalOtherCharges: [],\r\n            AppliedDiscountModel: []\r\n          }\r\n\r\n          var objSelectedBooth = [];\r\n          if (this.selectedBooths.length > 0) {\r\n            this.selectedBooths.forEach((item) => {\r\n              if (item.NewBooth) {\r\n                objSelectedBooth.push({\r\n                  DailyRentalId: item.DailyRentalId,\r\n                  BoothNumber: item.BoothNumber,\r\n                  BoothTypeId: item.BoothTypeId,\r\n                  ProductId: item.Product,\r\n                  BoothType: item.BoothType,\r\n                  RentalDay: new Date(item.RentalDay),\r\n                  RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                })\r\n              }\r\n            });\r\n          }\r\n\r\n          var objSelectedOtherCharge = [];\r\n          if (this.selectedOtherItems.length > 0) {\r\n            this.selectedOtherItems.forEach((item) => {\r\n              if (item.NewItem) {\r\n                objSelectedOtherCharge.push({\r\n                  OtherItemId: item.Id,\r\n                  OtherItemName: item.OtherItem,\r\n                  OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n                  Quantity: item.Quantity,\r\n                  RentalDay: new Date(item.RentalDay),\r\n                  BoothNumber: item.BoothNo,\r\n                  OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  Reference: item.Reference\r\n                })\r\n              }\r\n            });\r\n          }\r\n\r\n          if (objSelectedBooth.length > 0)\r\n            obj.DailyRentalBooth = objSelectedBooth;\r\n\r\n          if (objSelectedOtherCharge.length > 0)\r\n            obj.DailyRentalOtherCharges = objSelectedOtherCharge;\r\n\r\n          const sub = this.rentalService.SaveDailyRental(obj).subscribe(async (res: any) => {\r\n            if (res.Success) {\r\n              this.accountReceipId = res.Id;\r\n              this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n              this.openConfirmationPage = true;\r\n            } else {\r\n              this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n              if (this.verifoneId) {\r\n                this.voidPayment = true;\r\n              }\r\n            }\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }, (err) => {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n            // this.router.navigate([url]);               \r\n\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n\r\n          this.subscriptions.push(sub);\r\n          break;\r\n\r\n        case 4:\r\n          var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n          if (convenienceFee > 0 && this.paymentOnly) {\r\n            this.paymentOnly = false;\r\n          }\r\n          var objCM = {\r\n            VendorId: this.vendorId,\r\n            PaymentOrderId: response.OrderId,\r\n            RentalCharge: this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            SalesTax: 0,\r\n            SecLevelTax: 0,\r\n            OtherCharge: this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            PriorBalance: this.bookingDetailsForm.get('priorBalance').value.toString().includes('(') && this.bookingDetailsForm.get('priorBalance').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')),\r\n            TotalBalanceDue: this.bookingDetailsForm.get('balanceDue').value.toString().includes('(') && this.bookingDetailsForm.get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n            RentalNotes: \"\",\r\n            CashAmount: 0,\r\n            CheckAmount: 0,\r\n            CheckNo: \"\",\r\n            ChangeAmount: 0,\r\n            CardAmount: this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            DirectDebitAmount: 0,\r\n            CardType: \"\",\r\n            PaymentDone: true,\r\n            WebRentalRequest: true,\r\n            PaymentDueDate: null,\r\n            VerifoneId: response.VerifoneId,\r\n            DiscountAmount: this.bookingDetailsForm.get('discount').value.toString().includes('(') && this.bookingDetailsForm.get('discount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            ConvenienceFee: this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n            BookingFee: this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            MonthlyRentalBooth: [],\r\n            MonthlyOtherRentalCharges: [],\r\n            AppliedDiscountModel: []\r\n          }\r\n\r\n          var objSelectedBooth = [];\r\n          if (this.selectedMonthlyBooths.length > 0) {\r\n            this.selectedMonthlyBooths.forEach((item, i) => {\r\n              const rentalStartDateYear = new Date(item.RentalEndDate).getFullYear();\r\n              const rentalStartDateMonth = new Date(item.RentalEndDate).getMonth() + 1;\r\n              const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n              if (item.Reservation) {\r\n                objSelectedBooth.push({\r\n                  MonthlyRentalId: item.MonthlyRentalId,\r\n                  BoothNumber: item.BoothNumber,\r\n                  BoothTypeId: item.BoothTypeId,\r\n                  ProductId: item.Product,\r\n                  BoothType: item.BoothType,\r\n                  RentalStartDate: new Date(item.RentalStartDate),\r\n                  RentalEndDate: new Date(item.RentalEndDate),\r\n                  RentalYearMonth: rentalStartDateYearMonth,\r\n                  BoothReserved: item.Reservation,\r\n                  DoNotRenew: item.Drop,\r\n                  PerDiem: item.PerDiem,\r\n                  PerdiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n                  Monday: item.Monday,\r\n                  Tuesday: item.Tuesday,\r\n                  Wednesday: item.Wednesday,\r\n                  Thursday: item.Thursday,\r\n                  Friday: item.Friday,\r\n                  Saturday: item.Saturday,\r\n                  Sunday: item.Sunday,\r\n                  RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  BookingLog: i + 1,\r\n                  AllRentalDates: item.AllRentalDates\r\n                });\r\n              }\r\n            });\r\n          }\r\n\r\n          if (objSelectedBooth.length > 0)\r\n            objCM.MonthlyRentalBooth = objSelectedBooth;\r\n\r\n          var objSelectedOtherCharge = [];\r\n          if (this.selectedOtherItems.length > 0) {\r\n            this.selectedOtherItems.forEach((item) => {\r\n              const otherRentalYear = new Date(item.RentalMonth.split('-')[0]).getFullYear();\r\n              const otherRentalMonth = new Date(item.RentalMonth.split('-')[0]).getMonth() + 1;\r\n              const otherRentalYearMonth = `${otherRentalYear}${otherRentalMonth <\r\n                10 ? '0' : ''}${otherRentalMonth}`;\r\n\r\n              if (item.Recurring && item.allowOtherItemRenewal) {\r\n                objSelectedOtherCharge.push({\r\n                  OtherItemId: item.Id,\r\n                  MonthOtherRentalId: item.MonthOtherRentalId,\r\n                  OtherItemName: item.OtherItem,\r\n                  OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n                  Quantity: item.Quantity,\r\n                  YearMonth: otherRentalYearMonth,\r\n                  BoothNumber: item.BoothNo,\r\n                  Recurring: item.Recurring,\r\n                  OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  Reference: item.Reference,\r\n                  MonthlyRentalIds: item.MonthlyRentalIds\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objSelectedOtherCharge.length > 0)\r\n            objCM.MonthlyOtherRentalCharges = objSelectedOtherCharge;\r\n\r\n          var objDiscountData = [];\r\n          if (this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0) {\r\n            this.vendorDiscountPlans.forEach((item) => {\r\n              if (item.CheckAll) {\r\n                objDiscountData.push({\r\n                  PlanId: item.PlanSeqId,\r\n                  DiscountAmount: item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n                  OtherCharges: item.OtherItems,\r\n                  SalesTax: item.SalesTaxApplied,\r\n                  SecondLevelTax: item.SecondLevelTaxApplied,\r\n                  DiscountType: item.DiscountType == DiscountType.Percentage ? \"0\" : \"1\",\r\n                  DiscountValue: item.DiscountValue,\r\n                  SalesTaxAmount: item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n                  SecondLevelTaxAmount: item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objDiscountData.length > 0)\r\n            objCM.AppliedDiscountModel = objDiscountData;\r\n\r\n          const subCM = this.rentalService.SaveCombinedMonthlyRentalTransactions(objCM).subscribe(async (res: any) => {\r\n            if (res.Success) {\r\n              this.accountReceipId = res.Id;\r\n              this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n              this.openConfirmationPage = true;\r\n            } else {\r\n              this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n              if (this.verifoneId) {\r\n                this.voidPayment = true;\r\n              }\r\n            }\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }, (err) => {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n            // this.router.navigate([url]);               \r\n\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n\r\n          this.subscriptions.push(subCM);\r\n          break;\r\n    \r\n        case 5:\r\n          var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n          if (convenienceFee > 0 && this.paymentOnly) {\r\n            this.paymentOnly = false;\r\n          }\r\n          var objCombinedWeekly = {\r\n            VendorId: this.vendorId,\r\n            PaymentOrderId: response.OrderId,\r\n            RentalCharge: this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            SalesTax: 0,\r\n            SecLevelTax: 0,\r\n            OtherCharge: this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            PriorBalance: this.bookingDetailsForm.get('priorBalance').value.toString().includes('(') && this.bookingDetailsForm.get('priorBalance').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')),\r\n            TotalBalanceDue: this.bookingDetailsForm.get('balanceDue').value.toString().includes('(') && this.bookingDetailsForm.get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n            RentalNotes: \"\",\r\n            CashAmount: 0,\r\n            CheckAmount: 0,\r\n            CheckNo: \"\",\r\n            ChangeAmount: 0,\r\n            CardAmount: this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            DirectDebitAmount: 0,\r\n            CardType: \"\",\r\n            PaymentDone: true,\r\n            WebRentalRequest: true,\r\n            PaymentDueDate: null,\r\n            VerifoneId: response.VerifoneId,\r\n            DiscountAmount: this.bookingDetailsForm.get('discount').value.toString().includes('(') && this.bookingDetailsForm.get('discount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            ConvenienceFee: this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n            BookingFee: this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            CombinedWeeklyRentalBooth: [],\r\n            WeeklyRentalOtherCharges: [],\r\n            AppliedDiscountModel: []\r\n          }\r\n\r\n          var objSelectedBooth = [];\r\n          if (this.selectedWeeklyBooths.length > 0) {\r\n            this.selectedWeeklyBooths.forEach((item, i) => {\r\n              if (item.Reservation && !item.BlockRenewal) {\r\n                objSelectedBooth.push({\r\n                  WeeklyRentalId: item.WeeklyRentalId,\r\n                  BoothNumber: item.BoothNumber,\r\n                  BoothTypeId: item.BoothTypeId,\r\n                  ProductId: item.Product,\r\n                  BoothType: item.BoothType,\r\n                  RentalWeeekStartDate: new Date(item.RentStartPeriod.split('-')[0]),\r\n                  RentalWeeekEndDate: new Date(item.CWRenewalWeek.split('-')[1]),\r\n                  RentalStartDate: new Date(item.RentalStartDate),\r\n                  RentalEndDate: new Date(item.RentalEndDate),\r\n                  SelectedRentalDates: \"\",\r\n                  BoothReserved: item.Reservation,\r\n                  DoNotRenew: item.Drop,\r\n                  PerDiem: item.PerDiem,\r\n                  PerdiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n                  Monday: item.Monday,\r\n                  Tuesday: item.Tuesday,\r\n                  Wednesday: item.Wednesday,\r\n                  Thursday: item.Thursday,\r\n                  Friday: item.Friday,\r\n                  Saturday: item.Saturday,\r\n                  Sunday: item.Sunday,\r\n                  RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  BookingLog: i + 1\r\n                })\r\n              }\r\n            });\r\n          }\r\n\r\n          if (objSelectedBooth.length > 0)\r\n            objCombinedWeekly.CombinedWeeklyRentalBooth = objSelectedBooth;\r\n\r\n          var objSelectedOtherCharge = [];\r\n          if (this.selectedOtherItems.length > 0) {\r\n            this.selectedOtherItems.forEach((item) => {\r\n              if (item.Recurring && this.allowOtherItemRenewal) {\r\n                objSelectedOtherCharge.push({\r\n                  OtherItemId: item.Id,\r\n                  WeekOtherRentalId: item.WeekOtherRentalId,\r\n                  Quantity: item.Quantity,\r\n                  OtherItemName: item.OtherItem,\r\n                  OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n                  RentalWeek: item.RentalWeek.split('-')[0],\r\n                  BoothNumber: item.BoothNo,\r\n                  Recurring: item.Recurring,\r\n                  OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  Reference: item.Reference,\r\n                  WeeklyOtherRentalIds: item.WeeklyOtherRentalIds\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objSelectedOtherCharge.length > 0)\r\n            objCombinedWeekly.WeeklyRentalOtherCharges = objSelectedOtherCharge;\r\n\r\n          var objDiscountData = [];\r\n          if (this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0) {\r\n            this.vendorDiscountPlans.forEach((item) => {\r\n              if (item.CheckAll) {\r\n                objDiscountData.push({\r\n                  PlanId: item.PlanSeqId,\r\n                  DiscountAmount: item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n                  OtherCharges: item.OtherItems,\r\n                  SalesTax: item.SalesTaxApplied,\r\n                  SecondLevelTax: item.SecondLevelTaxApplied,\r\n                  DiscountType: item.DiscountType == DiscountType.Percentage ? \"0\" : \"1\",\r\n                  DiscountValue: item.DiscountValue,\r\n                  SalesTaxAmount: item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n                  SecondLevelTaxAmount: item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objDiscountData.length > 0)\r\n            obj.AppliedDiscountModel = objDiscountData;\r\n\r\n          const subCW = this.rentalService.SaveCombinedWeeklyRentalTransactions(objCombinedWeekly).subscribe((res: any) => {\r\n            if (res.Success) {\r\n              if (res.Success) {\r\n                this.accountReceipId = res.Id;\r\n                this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n                this.openConfirmationPage = true;\r\n              } else {\r\n                this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n                if (this.verifoneId) {\r\n                  this.voidPayment = true;\r\n                }\r\n              }\r\n              this.loaderIcon = Promise.resolve(false);\r\n            }\r\n          }, (err) => {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n            // this.router.navigate([url]);               \r\n\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n\r\n          this.subscriptions.push(subCW);\r\n          break;\r\n      }\r\n    }\r\n    else {\r\n      this.processPayment = false;\r\n      this.voidPayment = false;\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  voidPaymentResponse() {\r\n    this.voidPayment = false;\r\n      const url =  'home/' + this.marketId\r\n      this.router.navigate([url]);\r\n  }\r\n\r\n  setMinimum(controls) {\r\n    const value = controls.value;\r\n    var enteredAmount = value.toString().includes('(') && value.toString().includes(')') ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    if (!enteredAmount) {\r\n      controls.setValue(this.customCurrency.transform(\"0.00\"));\r\n    }\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge + this.renewalFeeAmount;\r\n    if (enteredAmount > totalDue) {\r\n      this.bookingDetailsForm.get(\"paymentAmount\").setValue(this.customCurrency.transform(totalDue.toString()));\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Payment amount cannot be greater than total due.`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    this.calculateBalance();\r\n  }\r\n\r\n  calculateBalance() {\r\n    const creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    this.creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalSalesTax = this.bookingDetailsForm.get('totalSalesTax').value.toString().includes('(') && this.bookingDetailsForm.get('totalSalesTax').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalSalesTax').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalSalesTax').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalSecondLeveltax = this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().includes('(') && this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var renewalFee = this.renewalFeeAmount.toString().includes('(') && this.renewalFeeAmount.toString().includes(')') ? -1 * parseFloat(this.renewalFeeAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.renewalFeeAmount.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge + totalSalesTax + totalSecondLeveltax;\r\n    if(totalDue > 0){\r\n      totalDue = totalDue + renewalFee;\r\n    }\r\n    else{\r\n      renewalFee = 0;\r\n    }\r\n    const convenienceFee = 0;\r\n\r\n    var totalAmount;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    const balanceAmount = totalDue != 0 ? totalDue - totalAmount : 0;\r\n\r\n    this.bookingDetailsForm.patchValue({\r\n      totalDue: this.customCurrency.transform(totalDue.toString()),\r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),\r\n      additionalCharge: this.customCurrency.transform(renewalFee.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString())      \r\n    })\r\n\r\n    this.paymentAmount = this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.applyCCCharge && creditCardAmount > 0) {\r\n      this.calculateConvenienceFee();\r\n    }\r\n  }\r\n\r\n  handledblClick(event: any) {\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    const inputElement = event.target as HTMLInputElement;\r\n    inputElement.select(); // Select the entire text on double-click\r\n  }\r\n\r\n  handleClick(event: any) {\r\n    // Get the current value of the input field\r\n    let currentValue: string = event.target.value;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    const inputElement = event.target as HTMLInputElement;\r\n    const inputValue = inputElement.value;\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    this.clickTimeout = setTimeout(() => {\r\n      if (inputValue === '$0.00') {\r\n        const selectionLength = inputElement.selectionEnd - inputElement.selectionStart;\r\n\r\n        // If the entire text is not selected, set the cursor position after the \"$\" sign\r\n        if (selectionLength !== inputValue.length) {\r\n          inputElement.setSelectionRange(1, 1);\r\n        }\r\n      }\r\n    }, 200); // Delay to check for double click\r\n  \r\n    if (currentSelectionLength === currentValue.length) {\r\n      return true;\r\n    }\r\n    // Check if the input value is \"$0.00\"\r\n    if (currentValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return;\r\n    }\r\n\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = currentValue.includes('$');\r\n    // Get the cursor position\r\n    const caretPosition = event.target.selectionStart;\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = currentValue.slice(0, caretPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign, adjust the cursor position\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign) {\r\n      // Find the index of \"$\" sign\r\n      const dollarSignIndex = currentValue.indexOf('$');\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(dollarSignIndex + 1, dollarSignIndex + 1);\r\n    }\r\n  }\r\n\r\n   setCurrencyFormat(controls) {\r\n    const value = controls.value;\r\n    let inputValue = value;\r\n    if(inputValue.toString().substring(1,2) == \"$\")\r\n    inputValue = `${inputValue.slice(1)}`;\r\n    controls.setValue(inputValue);\r\n  }\r\n\r\n\r\n  numberOnly(event): boolean {\r\n    const inputValue = event.target.value;\r\n    const charCode = (event.which) ? event.which : event.keyCode;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    // Check if the input value is \"$0.00\"\r\n    if (charCode == 45) {\r\n      return false;\r\n    }\r\n    if (currentSelectionLength === inputValue.length) {\r\n      return true;\r\n    }\r\n    if (inputValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return true; // Allow further input\r\n    }\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = inputValue.includes('$');\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = inputValue.slice(0, currentCursorPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign and \"$\" sign is present, prevent input\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign && charCode !== 46 && (charCode < 48 || charCode > 57)) {\r\n      return false;\r\n    }\r\n    // If the entered character is a dot and there's already a dot in the input, prevent input\r\n    if (charCode == 46 && inputValue.includes('.') && inputValue.indexOf('.') !== currentCursorPosition) {\r\n      return false;\r\n    }\r\n    if (charCode > 31 && (charCode < 46 || charCode > 57 || charCode === 47)) {\r\n      return false;\r\n    }\r\n    return true; // Allow input\r\n  }\r\n\r\n   getCCCredentials() {\r\n    this.paymentService.getCCCredentials(this.marketId).subscribe((res) => {\r\n      if (res !== null) {\r\n        this.paymentGatewayCredentials = res.GatewayDetails ? JSON.parse(res.GatewayDetails) : null;\r\n        this.processCreditCardOnline = res.ProcessCreditCardOnline;\r\n      }\r\n    })\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.applyCCCharge = res.ApplyCcporcessingFeePercentage;\r\n        this.CcfeeinPercentage = res.CcfeeinPercentage;\r\n        this.AllowPartialPay = res.AllowPartialPay;             \r\n        this.bookingDetailsForm.get('paymentAmount').enable();      \r\n        this.allowCWRentalRenewal = res.AllowRenewalsCw;\r\n        this.allowCMRentalRenewal = res.AllowRenewalsCm;\r\n        this.allowOtherItemRenewal = res.AllowRenewingOtherItems;\r\n        this.applyRenewalFee = res.ApplyBookingFee;\r\n        this.bookingRenewalFeeId = res.ApplyBookingFeeId;\r\n        if (this.bookingRenewalFeeId) {\r\n          this.subscriptions.push(this.rentalService.getBookingRenewalFeeById(this.marketId, this.bookingRenewalFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.renewalFeeAmount = (this.rentalType == 1 ? resFee.OtherItemCharge :\r\n                this.rentalType == 4 ? resFee.OtherItemCombinedMonthlyCharge :\r\n                  this.rentalType == 5 ? resFee.OtherItemCombinedWeeklyCharge : 0) ?? 0;\r\n            }\r\n          }));\r\n        }\r\n        if (!this.AllowPartialPay) {\r\n          this.bookingDetailsForm.get('paymentAmount').disable();\r\n          this.bookingDetailsForm.patchValue({\r\n            paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n            totalPayment: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n          })\r\n        }\r\n        this.paymentAmount =  this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n        const creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (this.applyCCCharge && creditCardAmount > 0) {\r\n          this.calculateConvenienceFee();\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  calculateConvenienceFee() {\r\n    var convenienceFee = 0;\r\n    var creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var renewalFee = this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge;\r\n    if(totalDue > 0){\r\n      totalDue = totalDue + renewalFee;\r\n    }\r\n    else{\r\n      renewalFee = 0;\r\n    }\r\n    if (creditCardAmount > 0) {\r\n      var convenienceFee = creditCardAmount * ((this.CcfeeinPercentage) / 100);\r\n      totalDue += convenienceFee;\r\n      this.creditCardAmount += convenienceFee;\r\n    }\r\n    var totalAmount = 0;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    const balanceAmount = totalDue - totalAmount;\r\n\r\n    this.bookingDetailsForm.patchValue({\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),\r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString()),\r\n      totalCharge: this.customCurrency.transform(totalDue.toString())      \r\n    })\r\n    this.paymentAmount =  this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.combinedMonthlyBookingEndDate = res.CombinedMonthlyBookingEndDate;\r\n        this.masterRentChargeforResOtherItems = res.MasterChargeForOtherChargeRenewal;\r\n         this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\";\r\n      }\r\n    });\r\n  }\r\n\r\n  extendCWRental(extendRentalRecord) {\r\n    if (extendRentalRecord) {\r\n      var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber)\r\n      if (recordExist != -1) {\r\n        const rentalDates = [];\r\n        const currentMonthRentalDates = [];\r\n        var rentalstartDate;\r\n        var marketDays = 0;\r\n        this.selectedMarketDays.map((el, i) => {\r\n          const startDate = this.selectedWeeklyBooths[recordExist].RentalStartDate;\r\n          const endDate = new Date(extendRentalRecord.CWRenewalWeek.split(\"-\")[1]);\r\n          const selectedDayOfWeek = el - 1;\r\n          const today: Date = new Date(new Date().toDateString())\r\n          let currentDay = new Date(startDate);\r\n          const currentMonthEnd =  new Date(this.selectedWeeklyBooths[recordExist].RentEndPeriod.split('-')[1]);\r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              if (!rentalstartDate) {\r\n                rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n              }\r\n              marketDays += 1;\r\n              rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n\r\n          currentDay = new Date(startDate);\r\n          while (currentDay <= currentMonthEnd) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              if (!rentalstartDate) {\r\n                rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n              }\r\n              currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n\r\n          const compareDates = (a: DateString, b: DateString): number => {\r\n            const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n          const sortedDates = rentalDates.sort(compareDates);\r\n\r\n          const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n            const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n          const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n        });\r\n\r\n        var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n        var currentRentedEndDate = new Date(this.selectedWeeklyBooths[recordExist].RentalEndDate);\r\n        const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n        var obj1 = {\r\n          RentalDates: filteredRentalDates,\r\n          BoothNumber: this.selectedWeeklyBooths[recordExist].BoothNumber\r\n        }\r\n\r\n        var RentAmount = this.selectedWeeklyBooths[recordExist].Rent;\r\n        var SalesTax = this.selectedWeeklyBooths[recordExist].SalesTax;\r\n        var CityTax = this.selectedWeeklyBooths[recordExist].CityTax;\r\n        var JanRentAmount = this.selectedWeeklyBooths[recordExist].January ?? 0;\r\n        var FebRentAmount = this.selectedWeeklyBooths[recordExist].February ?? 0;\r\n        var MarRentAmount = this.selectedWeeklyBooths[recordExist].March ?? 0;\r\n        var AprRentAmount = this.selectedWeeklyBooths[recordExist].April ?? 0;\r\n        var MayRentAmount = this.selectedWeeklyBooths[recordExist].May ?? 0;\r\n        var JunRentAmount = this.selectedWeeklyBooths[recordExist].June ?? 0;\r\n        var JulRentAmount = this.selectedWeeklyBooths[recordExist].July ?? 0;\r\n        var AugRentAmount = this.selectedWeeklyBooths[recordExist].August ?? 0;\r\n        var SepRentAmount = this.selectedWeeklyBooths[recordExist].September ?? 0;\r\n        var OctRentAmount = this.selectedWeeklyBooths[recordExist].October ?? 0;\r\n        var NovRentAmount = this.selectedWeeklyBooths[recordExist].November ?? 0;\r\n        var DecRentAmount = this.selectedWeeklyBooths[recordExist].December ?? 0;\r\n\r\n        this.totalRentalCharge -= RentAmount.toString().includes('(') && RentAmount.toString().includes(')') ? -1 * parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= SalesTax.toString().includes('(') && SalesTax.toString().includes(')') ? -1 * parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= CityTax.toString().includes('(') && CityTax.toString().includes(')') ? -1 * parseFloat(CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n\r\n        this.bookingDetailsForm.patchValue({\r\n          rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n\r\n        var extendRentalStartPeriod;\r\n        if (!this.selectedWeeklyBooths[recordExist].NewBooth && this.selectedWeeklyBooths[recordExist].Status != \"R\") {\r\n          extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentalSavedEndDate);\r\n          extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n        }\r\n        else {\r\n          extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentStartPeriod.split(\"-\")[0]);\r\n        }\r\n\r\n        var obj = {\r\n          BoothTypeId: this.selectedWeeklyBooths[recordExist].BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n          RentalEndPeriod: new Date(extendRentalRecord.CWRenewalWeek.split(\"-\")[1]),\r\n          PerDiemApplicable: this.selectedWeeklyBooths[recordExist].PerDiem,\r\n          JanRent: JanRentAmount.toString().includes('(') && JanRentAmount.toString().includes(')') ? -1 * parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          FebRent: FebRentAmount.toString().includes('(') && FebRentAmount.toString().includes(')') ? -1 * parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          MarRent: MarRentAmount.toString().includes('(') && MarRentAmount.toString().includes(')') ? -1 * parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          AprRent: AprRentAmount.toString().includes('(') && AprRentAmount.toString().includes(')') ? -1 * parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          MayRent: MayRentAmount.toString().includes('(') && MayRentAmount.toString().includes(')') ? -1 * parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          JunRent: JunRentAmount.toString().includes('(') && JunRentAmount.toString().includes(')') ? -1 * parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          JulRent: JulRentAmount.toString().includes('(') && JulRentAmount.toString().includes(')') ? -1 * parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          AugRent: AugRentAmount.toString().includes('(') && AugRentAmount.toString().includes(')') ? -1 * parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          SepRent: SepRentAmount.toString().includes('(') && SepRentAmount.toString().includes(')') ? -1 * parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          OctRent: OctRentAmount.toString().includes('(') && OctRentAmount.toString().includes(')') ? -1 * parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          NovRent: NovRentAmount.toString().includes('(') && NovRentAmount.toString().includes(')') ? -1 * parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n          DecRent: DecRentAmount.toString().includes('(') && DecRentAmount.toString().includes(')') ? -1 * parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n        }\r\n        this.rentalService.getBoothRentalCombinedWeeklyCharges(this.marketId, obj).subscribe((res: any) => {\r\n          this.selectedWeeklyBooths[recordExist].MktDays = marketDays;\r\n          this.selectedWeeklyBooths[recordExist].RentalEndDate = rentalDates[rentalDates.length - 1].startDate;\r\n          this.selectedWeeklyBooths[recordExist].RentEndPeriod = extendRentalRecord.CWRenewalWeek;\r\n          this.selectedWeeklyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n          this.selectedWeeklyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n          this.selectedWeeklyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n          this.selectedWeeklyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n          this.selectedWeeklyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n          this.selectedWeeklyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n          this.selectedWeeklyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n          this.selectedWeeklyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n          this.selectedWeeklyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n          this.selectedWeeklyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n          this.selectedWeeklyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n          this.selectedWeeklyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n          this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n          this.selectedWeeklyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n          this.selectedWeeklyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n          this.selectedWeeklyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].ExtendRental = true;\r\n\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.bookingDetailsForm.patchValue({\r\n            rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n        });\r\n      }\r\n    }\r\n  }\r\n\r\n  extendCMRental(extendRentalRecord) {\r\n    const extendedRentalEndDates =extendRentalRecord.CMRenewalMonth;\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you wish to extend the bookings till ` + extendedRentalEndDates + '? Please note that the extended period cannot be cancelled',\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then(async (result) => {\r\n      if (result.value) {\r\n            var rentalDates = [];\r\n            let noResale = true;\r\n            const vendorRentalDays = [];\r\n            var  marketDayCountForResale = 0 \r\n            if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n              var rentalstartDate = \"\";\r\n              var selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n              if (selectedBoothRecord.length > 0) {\r\n                selectedBoothRecord.forEach(record => {\r\n                  this.selectedMarketDays.map(el => {\r\n                    const startDate = new Date(record.RentalStartDate);\r\n                    const endDate = new Date(record.RentalEndDate);\r\n                    const selectedDayOfWeek = el - 1;\r\n                    let currentDay = new Date(startDate);\r\n                   while (currentDay <= endDate) {                  \r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        if (!rentalstartDate) {\r\n                          rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                        }\r\n                        rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n\r\n                    const compareDates = (a: DateString, b: DateString): number => {\r\n                      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      return dateA - dateB;\r\n                    };\r\n                    const sortedDates = rentalDates.sort(compareDates);\r\n                  });\r\n                });    \r\n              }\r\n        \r\n              if (extendRentalRecord.MonthlyRentalId != 0)\r\n                var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n                  && e.BoothNumber == extendRentalRecord.BoothNumber && e.MonthlyRentalId == extendRentalRecord.MonthlyRentalId);\r\n              else\r\n                var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n                  && e.BoothNumber == extendRentalRecord.BoothNumber);\r\n          \r\n              if (recordExist != -1) {            \r\n                var rentalstartDate = \"\";\r\n                for(const el of this.selectedMarketDays){\r\n                  const selectedDayOfWeek = el - 1;\r\n                  const startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n                  const endMonth = extendRentalRecord.CMRenewalMonth;\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n                  if (this.combinedMonthlyBookingEndDate) {\r\n                    const rentalEndDateYear = endDate.getFullYear();\r\n                    const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                    const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                    endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n                  }\r\n                  let currentDay = new Date(startDate);\r\n                  while (currentDay <= endDate) {                   \r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n                 }\r\n              }\r\n        \r\n              rentalDates.map(date => {\r\n                const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n                const dateExist = vendorRentalDays.find(el => {\r\n                  const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                  return rentalDateString === targetDateString;\r\n                });\r\n                if (!dateExist) {\r\n                  const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n                  vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                  marketDayCountForResale += 1;\r\n                  if (marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n                    return; // exits the forEach loop when the condition is met\r\n                  }\r\n                }\r\n              });\r\n        \r\n              const obj = {\r\n                VendorID: this.vendorId,\r\n                VendorRentalDate: new Date()\r\n              };\r\n        \r\n              this.subscriptions.push(this.rentalService.getVendorRentalDays(obj).subscribe((res: any[]) => {\r\n                  if (marketDayCountForResale <= this.DaysSellWithoutResaleNumber || marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n                  if (res && res.length > 0) {\r\n                    res.forEach(el => {\r\n                      const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                      const dateExist = vendorRentalDays.find(data => {\r\n                        const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                        return rentalDateString === targetDateString;\r\n                      });\r\n                      if (!dateExist) {\r\n                        const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                        vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                        marketDayCountForResale += 1;\r\n                      }\r\n                    });\r\n                  }\r\n                }\r\n                if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n                  const modal = this.modalResaleNo.nativeElement;\r\n                  modal.classList.add('show');\r\n                  if (modal.classList.contains('show')) {\r\n                    modal.style.display = 'block';\r\n                  }\r\n                  noResale = false;\r\n                }\r\n                else if (this.BusinessLicenseNumberRequired && marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n                  if (!this.businessLicenseNumber) {\r\n                    Swal.fire({\r\n                      title: $localize`Confirm`,\r\n                      text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n                      icon: \"question\",\r\n                      showCancelButton: true,\r\n                      confirmButtonText: $localize`Yes`,\r\n                      cancelButtonText: $localize`No`,\r\n                    }).then((result) => {\r\n                      if (result.value) {\r\n                        this.proceedExtendingRental(extendRentalRecord);\r\n                      }\r\n                      else {\r\n                        //this.refreshAddBooth();\r\n                      }\r\n                    });\r\n                  }\r\n                  else {\r\n                    if (!this.businessLicenseExpiryDate) {\r\n                      Swal.fire({\r\n                        title: $localize`Confirm`,\r\n                        text: $localize`Business License expiry date is not provided! Do you want to continue without that?`,\r\n                        icon: \"question\",\r\n                        showCancelButton: true,\r\n                        confirmButtonText: $localize`Yes`,\r\n                        cancelButtonText: $localize`No`,\r\n                      }).then((result) => {\r\n                        if (result.value) {\r\n                          this.proceedExtendingRental(extendRentalRecord);\r\n                        }\r\n                        else {\r\n                         // this.refreshAddBooth();\r\n                        }\r\n                      });\r\n                    }\r\n                    else {\r\n                      if (new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n                        Swal.fire({\r\n                          title: $localize`Confirm`,\r\n                          text: $localize`Business License is expired! Do you want to continue?`,\r\n                          icon: \"question\",\r\n                          showCancelButton: true,\r\n                          confirmButtonText: $localize`Yes`,\r\n                          cancelButtonText: $localize`No`,\r\n                        }).then((result) => {\r\n                          if (result.value) {\r\n                            this.proceedExtendingRental(extendRentalRecord);\r\n                          }\r\n                          else {\r\n                           // this.refreshAddBooth();\r\n                          }\r\n                        });\r\n                      }\r\n                      else {\r\n                        this.proceedExtendingRental(extendRentalRecord);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n                else {\r\n                  noResale = true;\r\n                  this.proceedExtendingRental(extendRentalRecord);\r\n                }\r\n              }));\r\n            } else {\r\n              this.proceedExtendingRental(extendRentalRecord);\r\n            }\r\n      }\r\n    });\r\n  }\r\n\r\n  async proceedExtendingRental(extendRentalRecord) {\r\n    if (extendRentalRecord.MonthlyRentalId != 0)\r\n      var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber && e.MonthlyRentalId == extendRentalRecord.MonthlyRentalId);\r\n    else\r\n      var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber && e.RentalMarketDay == extendRentalRecord.RentalMarketDay);\r\n\r\n    if (recordExist != -1) {\r\n      if (!this.selectedMonthlyBooths[recordExist].Drop && this.selectedMonthlyBooths[recordExist].Reservation && this.allowCMRentalRenewal) {\r\n        const rentalDates = [];\r\n        var currentMonthRentalDates = [];\r\n        var rentalstartDate;\r\n        var marketDays = 0;\r\n      \r\n        for (const el of this.selectedMarketDays) {\r\n          const selectedDayOfWeek = el - 1;\r\n          var endDateYearMonth;\r\n          const currentDate = new Date();\r\n          const currentYear = currentDate.getFullYear();\r\n          const currentMonth = currentDate.getMonth();\r\n          const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n          var startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n          const endMonth = extendRentalRecord.CMRenewalMonth;\r\n          const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n          const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n          var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n          if (this.combinedMonthlyBookingEndDate) {\r\n            const rentalEndDateYear = endDate.getFullYear();\r\n            const rentalEndDateMonth = endDate.getMonth() + 1;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n            endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n            const rentalStartDate = new Date(startDate);\r\n            var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n            var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n            const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n            // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n            const monthEndDate = await this.getMonthEndingDateFromSetting(PreviousMonthYearAndMonth);\r\n            const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n            if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n              if (new Date() > new Date(monthEndDate)) {\r\n                startDate = new Date();\r\n              }\r\n              else {\r\n                startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n              }\r\n            }\r\n            // }\r\n          }\r\n          var previousRentalYearMonth;\r\n          var currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n          if (this.combinedMonthlyBookingEndDate) {\r\n            const currentStartMonth = this.selectedMonthlyBooths[recordExist].RentStartPeriod;\r\n            const [startMonthDate, startMonthYear] = currentStartMonth.split(' ');\r\n            const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n            var currentMonthEnd = new Date(startMonthYear, startMonthIndex + 1, 0);\r\n            const rentalEndDateYear = currentMonthEnd.getFullYear();\r\n            const rentalEndDateMonth = currentMonthEnd.getMonth() + 1;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            previousRentalYearMonth = rentalEndDateYearMonth;\r\n            if (endDateYearMonth == rentalEndDateYearMonth)\r\n              currentMonthEnd = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n          }\r\n\r\n          let currentDay = new Date(startDate);\r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              if (!rentalstartDate) {\r\n                rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n              }\r\n              marketDays += 1;\r\n              rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n\r\n          if (this.combinedMonthlyBookingEndDate) {\r\n            currentDay = new Date(startDate);\r\n            while (currentDay <= currentMonthEnd) {\r\n              if (currentDay.getDay() === selectedDayOfWeek) {\r\n                if (!rentalstartDate) {\r\n                  rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                }\r\n                //marketDays += 1;\r\n                currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n              }\r\n              currentDay.setDate(currentDay.getDate() + 1);\r\n            }\r\n          }\r\n        }\r\n\r\n        const compareDates = (a: DateString, b: DateString): number => {\r\n          const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          return dateA - dateB;\r\n        };\r\n        const sortedDates = rentalDates.sort(compareDates);\r\n\r\n        if (this.combinedMonthlyBookingEndDate) {\r\n          const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n            const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n          const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n        }\r\n        else {\r\n          currentMonthRentalDates = rentalDates;\r\n        }\r\n\r\n        var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n        var currentRentedEndDate = new Date(this.selectedMonthlyBooths[recordExist].RentalEndDate);\r\n        const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n        var obj1 = {\r\n          RentalDates: filteredRentalDates,\r\n          BoothNumber: this.selectedMonthlyBooths[recordExist].BoothNumber\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.checkRentalExits(this.marketId, obj1).subscribe((res) => {\r\n          if (!res.Success) {\r\n            var RentAmount = this.selectedMonthlyBooths[recordExist].Rent;\r\n            var SalesTax = this.selectedMonthlyBooths[recordExist].SalesTax;\r\n            var CityTax = this.selectedMonthlyBooths[recordExist].CityTax;\r\n            var JanRentAmount = this.selectedMonthlyBooths[recordExist].January ?? 0;\r\n            var FebRentAmount = this.selectedMonthlyBooths[recordExist].February ?? 0;\r\n            var MarRentAmount = this.selectedMonthlyBooths[recordExist].March ?? 0;\r\n            var AprRentAmount = this.selectedMonthlyBooths[recordExist].April ?? 0;\r\n            var MayRentAmount = this.selectedMonthlyBooths[recordExist].May ?? 0;\r\n            var JunRentAmount = this.selectedMonthlyBooths[recordExist].June ?? 0;\r\n            var JulRentAmount = this.selectedMonthlyBooths[recordExist].July ?? 0;\r\n            var AugRentAmount = this.selectedMonthlyBooths[recordExist].August ?? 0;\r\n            var SepRentAmount = this.selectedMonthlyBooths[recordExist].September ?? 0;\r\n            var OctRentAmount = this.selectedMonthlyBooths[recordExist].October ?? 0;\r\n            var NovRentAmount = this.selectedMonthlyBooths[recordExist].November ?? 0;\r\n            var DecRentAmount = this.selectedMonthlyBooths[recordExist].December ?? 0;\r\n\r\n            this.totalRentalCharge -= RentAmount.toString().includes('(') && RentAmount.toString().includes(')') ? -1 * parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= SalesTax.toString().includes('(') && SalesTax.toString().includes(')') ? -1 * parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= CityTax.toString().includes('(') && CityTax.toString().includes(')') ? -1 * parseFloat(CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.bookingDetailsForm.patchValue({\r\n              rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n\r\n            var extendRentalStartPeriod;\r\n            if (!this.selectedMonthlyBooths[recordExist].NewBooth && this.selectedMonthlyBooths[recordExist].Status != \"R\") {\r\n              extendRentalStartPeriod = new Date(this.selectedMonthlyBooths[recordExist].RentalSavedEndDate);\r\n              if (extendRentalStartPeriod.getDate() == 31) {\r\n                extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n              }\r\n              else {\r\n                extendRentalStartPeriod.setMonth(extendRentalStartPeriod.getMonth() + 1);\r\n              }\r\n              extendRentalStartPeriod.setDate(1);\r\n            }\r\n            else {\r\n              extendRentalStartPeriod = this.selectedMonthlyBooths[recordExist].RentalStartDate;\r\n            }\r\n            var obj = {\r\n              BoothTypeId: this.selectedMonthlyBooths[recordExist].BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n              RentalEndPeriod: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n              PerDiemApplicable: this.selectedMonthlyBooths[recordExist].PerDiem,\r\n              JanRent: JanRentAmount.toString().includes('(') && JanRentAmount.toString().includes(')') ? -1 * parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              FebRent: FebRentAmount.toString().includes('(') && FebRentAmount.toString().includes(')') ? -1 * parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MarRent: MarRentAmount.toString().includes('(') && MarRentAmount.toString().includes(')') ? -1 * parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AprRent: AprRentAmount.toString().includes('(') && AprRentAmount.toString().includes(')') ? -1 * parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MayRent: MayRentAmount.toString().includes('(') && MayRentAmount.toString().includes(')') ? -1 * parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JunRent: JunRentAmount.toString().includes('(') && JunRentAmount.toString().includes(')') ? -1 * parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JulRent: JulRentAmount.toString().includes('(') && JulRentAmount.toString().includes(')') ? -1 * parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AugRent: AugRentAmount.toString().includes('(') && AugRentAmount.toString().includes(')') ? -1 * parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              SepRent: SepRentAmount.toString().includes('(') && SepRentAmount.toString().includes(')') ? -1 * parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              OctRent: OctRentAmount.toString().includes('(') && OctRentAmount.toString().includes(')') ? -1 * parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              NovRent: NovRentAmount.toString().includes('(') && NovRentAmount.toString().includes(')') ? -1 * parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              DecRent: DecRentAmount.toString().includes('(') && DecRentAmount.toString().includes(')') ? -1 * parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n            }\r\n\r\n            this.subscriptions.push(this.rentalService.getBoothRentalCombinedMonthlyCharges(this.marketId, obj).subscribe((res: any) => {\r\n              this.selectedMonthlyBooths[recordExist].RentEndPeriod = extendRentalRecord.CMRenewalMonth;\r\n              this.selectedMonthlyBooths[recordExist].RentalEndDate = this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y');\r\n              this.selectedMonthlyBooths[recordExist].MktDays = marketDays;\r\n              this.selectedMonthlyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n              this.selectedMonthlyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n              this.selectedMonthlyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n              this.selectedMonthlyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n              this.selectedMonthlyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n              this.selectedMonthlyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n              this.selectedMonthlyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n              this.selectedMonthlyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n              this.selectedMonthlyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n              this.selectedMonthlyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n              this.selectedMonthlyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n              this.selectedMonthlyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n              this.selectedMonthlyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n              this.selectedMonthlyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n              this.selectedMonthlyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n              this.selectedMonthlyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].StartDateList = currentMonthRentalDates;\r\n              this.selectedMonthlyBooths[recordExist].ExtendRental = true;\r\n              this.selectedMonthlyBooths[recordExist].AllRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n\r\n              this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n              this.bookingDetailsForm.patchValue({\r\n                rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n                totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n              });\r\n              // this.getDiscounts();\r\n            }, err => {\r\n            }));\r\n          }\r\n          else {\r\n            Swal.fire({\r\n              title: $localize`Warning`,\r\n              text: $localize`Rental End Period cannot be extended further`,\r\n              icon: \"warning\",\r\n              confirmButtonText: $localize`Ok`,\r\n            });\r\n          }\r\n        }));\r\n      }\r\n      else {\r\n        this.selectedMonthlyBooths[recordExist].CMRenewalMonth =  this.selectedMonthlyBooths[recordExist].RentEndPeriod;\r\n        this.selectedMonthlyBooths[recordExist].RenewalStartMonth = \"This booking cannot be extended further!\"\r\n        this.selectedMonthlyBooths[recordExist].BookingCanExtend = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  async handleCWEndDateChange() {\r\n\r\n    this.renewAllBoothsFromGrid = true;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n\r\n    let rentalDates = this.calculateRentalDates();\r\n    await this.processVendorRentalDays(rentalDates);\r\n  }\r\n  \r\n  calculateRentalDates() {\r\n    let rentalDates = [];\r\n    const selectedBooths = this.selectedWeeklyBooths.filter(e => e.NewBooth || e.ExtendRental);\r\n  \r\n    selectedBooths.forEach(record => {\r\n      const selectedDayOfWeek = this.getSelectedDayOfWeek(record);\r\n      let currentDay = new Date(record.RentalStartDate);\r\n      const endDate = new Date(record.RentalEndDate);\r\n  \r\n      while (currentDay <= endDate) {\r\n        if (currentDay.getDay() === selectedDayOfWeek) {\r\n          rentalDates.push({ startDate: this.datePipe.transform(currentDay, 'MMM d, y') });\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n    });\r\n  \r\n    return rentalDates;\r\n  }\r\n  \r\n  getSelectedDayOfWeek(record) {\r\n    return record.Sunday ? 0 :\r\n           record.Monday ? 1 :\r\n           record.Tuesday ? 2 :\r\n           record.Wednesday ? 3 :\r\n           record.Thursday ? 4 :\r\n           record.Friday ? 5 :\r\n           record.Saturday ? 6 : null;\r\n  }\r\n  \r\n  async processVendorRentalDays(rentalDates) {\r\n    rentalDates.forEach(date => {\r\n      const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n      if (!this.vendorRentalDays.some(el => this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\") === targetDateString)) {\r\n        this.vendorRentalDays.push({ VendorRentalDate: targetDateString });\r\n        this.marketDayCountForResale += 1;\r\n        if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n          return;\r\n        }\r\n      }\r\n    });\r\n  \r\n    const obj = { VendorID: this.vendorId, VendorRentalDate: new Date() };\r\n    const res = await this.rentalService.getVendorRentalDays(obj).toPromise();\r\n  \r\n    if (res && res.length > 0) {\r\n      res.forEach(el => {\r\n        const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        if (!this.vendorRentalDays.some(data => this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\") === targetDateString)) {\r\n          this.vendorRentalDays.push({ VendorRentalDate: targetDateString });\r\n          this.marketDayCountForResale += 1;\r\n        }\r\n      });\r\n    }\r\n  \r\n    await this.checkResaleAndBusinessLicense();\r\n  }\r\n  \r\n  async checkResaleAndBusinessLicense() {\r\n    if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n      this.showModal(this.modalResaleNo.nativeElement);\r\n    } else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n      if (!this.businessLicenseNumber) {\r\n        await this.promptBusinessLicense();\r\n      } else if (!this.businessLicenseExpiryDate || new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n        await this.promptExpiredBusinessLicense();\r\n      } else {\r\n        this.renewCWAllBooths();\r\n      }\r\n    } else {\r\n      this.renewCWAllBooths();\r\n    }\r\n  }\r\n  \r\n  showModal(modal) {\r\n    modal.classList.add('show');\r\n    modal.style.display = 'block';\r\n  }\r\n  \r\n  async promptBusinessLicense() {\r\n    const result = await Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    });\r\n  \r\n    if (result.value) {\r\n      this.renewCWAllBooths();\r\n    }\r\n  }\r\n  \r\n  async promptExpiredBusinessLicense() {\r\n    const result = await Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Business License is expired! Do you want to continue?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    });\r\n  \r\n    if (result.value) {\r\n      this.renewCWAllBooths();\r\n    }\r\n  }\r\n  \r\n\r\n  async renewCWAllBooths(){\r\n    var nonAvailableBooths = [];\r\n    for (const item of this.selectedWeeklyBooths) {\r\n      // this.selectedWeeklyBooths.forEach((item, i) => {\r\n      if (new Date(item.RentEndPeriod.split('-')[0]) <= new Date(item.CWRenewalWeek.split('-')[0])\r\n        && !item.Drop && item.Reservation && this.allowCWRentalRenewal) {\r\n        if (item.WeeklyRentalId != 0)\r\n          var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == item.RentStartPeriod && e.RentEndPeriod == item.RentEndPeriod\r\n            && e.BoothNumber == item.BoothNumber && e.WeeklyRentalId == item.WeeklyRentalId);\r\n        else\r\n          var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == item.RentStartPeriod && e.RentEndPeriod == item.RentEndPeriod\r\n            && e.BoothNumber == item.BoothNumber && e.RentalMarketDay == item.RentalMarketDay);\r\n\r\n        if (recordExist != -1 && item.Status != \"R\") {\r\n          var rentalstartDate = \"\";\r\n          var marketDays = 0;\r\n          var currentMonthRentalDates = [];\r\n          const startDate = new Date(this.selectedWeeklyBooths[recordExist].RentalStartDate);\r\n          const endDate = new Date(item.CWRenewalWeek.split('-')[1]);       \r\n          const currentMonthEnd =  new Date(this.selectedWeeklyBooths[recordExist].RentEndPeriod.split('-')[1])\r\n          var rentalDates = [];\r\n          this.selectedMarketDays =[];\r\n          this.selectedWeeklyBooths[recordExist].Sunday == true ? this.selectedMarketDays.push(1) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Monday ? this.selectedMarketDays.push(2) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Tuesday == true ? this.selectedMarketDays.push(3) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Wednesday == true ? this.selectedMarketDays.push(4) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Thursday == true ? this.selectedMarketDays.push(5) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Friday == true ? this.selectedMarketDays.push(6) : 0;\r\n          this.selectedWeeklyBooths[recordExist].Saturday == true ? this.selectedMarketDays.push(7) : 0;\r\n\r\n          let currentDay = new Date(startDate);\r\n          rentalDates = await this.CWRentalDateList(startDate,endDate);    \r\n          currentMonthRentalDates =  await this.CWRentalDateList(startDate,currentMonthEnd);    \r\n\r\n          var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n          var currentRentedEndDate = new Date(this.selectedWeeklyBooths[recordExist].RentalEndDate);\r\n          const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n          var obj1 = {\r\n            RentalDates: filteredRentalDates,\r\n            BoothNumber: this.selectedWeeklyBooths[recordExist].BoothNumber\r\n          }\r\n\r\n          const rentalExist = await this.rentalService.checkRentalExits(this.marketId,obj1).toPromise();\r\n          if (!rentalExist.Success) {\r\n            var RentAmount = this.selectedWeeklyBooths[recordExist].Rent;\r\n            var SalesTax = this.selectedWeeklyBooths[recordExist].SalesTax;\r\n            var CityTax = this.selectedWeeklyBooths[recordExist].CityTax;\r\n            var JanRentAmount = this.selectedWeeklyBooths[recordExist].January ?? 0;\r\n            var FebRentAmount = this.selectedWeeklyBooths[recordExist].February ?? 0;\r\n            var MarRentAmount = this.selectedWeeklyBooths[recordExist].March ?? 0;\r\n            var AprRentAmount = this.selectedWeeklyBooths[recordExist].April ?? 0;\r\n            var MayRentAmount = this.selectedWeeklyBooths[recordExist].May ?? 0;\r\n            var JunRentAmount = this.selectedWeeklyBooths[recordExist].June ?? 0;\r\n            var JulRentAmount = this.selectedWeeklyBooths[recordExist].July ?? 0;\r\n            var AugRentAmount = this.selectedWeeklyBooths[recordExist].August ?? 0;\r\n            var SepRentAmount = this.selectedWeeklyBooths[recordExist].September ?? 0;\r\n            var OctRentAmount = this.selectedWeeklyBooths[recordExist].October ?? 0;\r\n            var NovRentAmount = this.selectedWeeklyBooths[recordExist].November ?? 0;\r\n            var DecRentAmount = this.selectedWeeklyBooths[recordExist].December ?? 0;\r\n\r\n            var extendRentalStartPeriod;\r\n            if (!this.selectedWeeklyBooths[recordExist].NewBooth && this.selectedWeeklyBooths[recordExist].Status != \"R\") {\r\n              extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentalSavedEndDate);\r\n              extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n            }\r\n            else {\r\n              extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentStartPeriod.split(\"-\")[0]);\r\n            }\r\n\r\n            var obj = {\r\n              BoothTypeId: this.selectedWeeklyBooths[recordExist].BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n              RentalEndPeriod: new Date(item.CWRenewalWeek.split(\"-\")[1]),\r\n              PerDiemApplicable: this.selectedWeeklyBooths[recordExist].PerDiem,\r\n              JanRent: JanRentAmount.toString().includes('(') && JanRentAmount.toString().includes(')') ? -1 * parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              FebRent: FebRentAmount.toString().includes('(') && FebRentAmount.toString().includes(')') ? -1 * parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MarRent: MarRentAmount.toString().includes('(') && MarRentAmount.toString().includes(')') ? -1 * parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AprRent: AprRentAmount.toString().includes('(') && AprRentAmount.toString().includes(')') ? -1 * parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MayRent: MayRentAmount.toString().includes('(') && MayRentAmount.toString().includes(')') ? -1 * parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JunRent: JunRentAmount.toString().includes('(') && JunRentAmount.toString().includes(')') ? -1 * parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JulRent: JulRentAmount.toString().includes('(') && JulRentAmount.toString().includes(')') ? -1 * parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AugRent: AugRentAmount.toString().includes('(') && AugRentAmount.toString().includes(')') ? -1 * parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              SepRent: SepRentAmount.toString().includes('(') && SepRentAmount.toString().includes(')') ? -1 * parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              OctRent: OctRentAmount.toString().includes('(') && OctRentAmount.toString().includes(')') ? -1 * parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              NovRent: NovRentAmount.toString().includes('(') && NovRentAmount.toString().includes(')') ? -1 * parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              DecRent: DecRentAmount.toString().includes('(') && DecRentAmount.toString().includes(')') ? -1 * parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n            }\r\n\r\n            const res = await this.rentalService.getBoothRentalCombinedWeeklyCharges(this.marketId,obj).toPromise();\r\n            if (res) {\r\n             this.selectedWeeklyBooths[recordExist].MktDays = marketDays;\r\n              this.selectedWeeklyBooths[recordExist].RentalEndDate = rentalDates[rentalDates.length - 1].startDate;\r\n              this.selectedWeeklyBooths[recordExist].RentEndPeriod = item.RentEndPeriod;\r\n              this.selectedWeeklyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n              this.selectedWeeklyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n              this.selectedWeeklyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n              this.selectedWeeklyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n              this.selectedWeeklyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n              this.selectedWeeklyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n              this.selectedWeeklyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n              this.selectedWeeklyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n              this.selectedWeeklyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n              this.selectedWeeklyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n              this.selectedWeeklyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n              this.selectedWeeklyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n              this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n              this.selectedWeeklyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n              this.selectedWeeklyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n              this.selectedWeeklyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n              this.selectedWeeklyBooths[recordExist].StartDateList = currentMonthRentalDates;\r\n              this.selectedWeeklyBooths[recordExist].ExtendRental = true;\r\n\r\n              this.updateTotalCharges(res.Rent, res.SalesTax, res.CityTax);                    \r\n      //        this.getDiscounts();\r\n            }\r\n          }\r\n          else {\r\n            nonAvailableBooths.push(this.selectedWeeklyBooths[recordExist].BoothNumber);\r\n            this.selectedWeeklyBooths[recordExist].CWRenewalWeek = item.RentEndPeriod;\r\n            this.selectedWeeklyBooths[recordExist].RenewalStartWeek = \"This booking cannot be extended further!\"\r\n            this.selectedWeeklyBooths[recordExist].BookingCanExtend = false;\r\n            this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(\"0\");\r\n            this.selectedWeeklyBooths[recordExist].BlockRenewal = true;\r\n          }\r\n        }\r\n      }\r\n      else{\r\n        var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == item.RentStartPeriod && e.RentEndPeriod == item.RentEndPeriod\r\n          && e.BoothNumber == item.BoothNumber && e.WeeklyRentalId == item.WeeklyRentalId);\r\n        item.CWRenewalWeek = item.RentEndPeriod;\r\n        item.RenewalStartWeek = \"This booking cannot be extended further!\"\r\n        item.BookingCanExtend = false;\r\n        this.selectedWeeklyBooths[recordExist].BlockRenewal = true;\r\n        //if (!this.allowCWRentalRenewal) {\r\n          if (recordExist != -1) {\r\n            this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(\"0\")\r\n          }\r\n       // }\r\n      }\r\n    }\r\n\r\n    if (nonAvailableBooths.length > 0) {\r\n      const nonAvailableBoothsString = nonAvailableBooths.join(', ');\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Cannot be renewed further as the booth number ` + nonAvailableBoothsString + ` is not available`,\r\n        icon: \"info\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  updateCMOtherItemRecord(record){\r\n    if (record.Recurring) {\r\n      const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == record.RentalMonth);\r\n      const renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex + 1].RentalMonths;\r\n      record.BookingCanExtend = true;\r\n      record.Quantity = 1;\r\n      record.RenewalStartMonth = renewalStartMonth;\r\n      record.CMRenewalMonth = renewalStartMonth;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendCMOtherRental(record);\r\n    }\r\n    else {    \r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.CMRenewalMonth = record.RentalMonth;\r\n      this.totalOtherRentalCharge -= record.OtherItemtotal.toString().includes('(') && record.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.OtherItemtotal = this.customCurrency.transform(\"0\");\r\n      record.Quantity = 0;\r\n      record.OtherItemCharge = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  updateCWOtherItemRecord(record){\r\n    if (record.Recurring) {\r\n      const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e => e.RentalEndDays == record.RentalWeek);\r\n      var renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex + 1].RentalEndDays;\r\n      if (record.RentalWeek == \"R\") {\r\n        renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex].RentalEndDays;\r\n      }\r\n      record.BookingCanExtend = true;\r\n      record.Quantity = 1;\r\n      record.RenewalStartWeek = renewalStartWeek\r\n      record.CWRenewalWeek = renewalStartWeek;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendCWOtherRental(record);\r\n    }\r\n    else {\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.CWRenewalWeek = record.RentalWeek;\r\n      this.totalOtherRentalCharge -= record.OtherItemtotal.toString().includes('(') && record.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.OtherItemtotal = this.customCurrency.transform(\"0\");\r\n      record.Quantity = 0;\r\n      record.OtherItemCharge = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  updateCWRentalRecord(record) {\r\n    if (record.Reservation && this.allowCWRentalRenewal && !record.BlockRenewal) {\r\n      const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e => e.RentalEndDays == record.CurrentRentEndPeriod);\r\n      const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex + 1].RentalEndDays;\r\n      record.BookingCanExtend = true;\r\n      record.RenewalStartWeek = renewalStartWeek\r\n      record.CWRenewalWeek = renewalStartWeek;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendCWRental(record);\r\n    }\r\n    else {\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.CWRenewalWeek = record.CurrentRentEndPeriod;\r\n      this.totalRentalCharge -= record.Rent.toString().includes('(') && record.Rent.toString().includes(')') ? -1 * parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.Rent = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  renewCWOtherCharges() {\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.proceedRenewingCWOtherCharges();\r\n    }\r\n  }\r\n\r\n   getActualAmountFromInp(value) {\r\n    var amount = value.toString().includes('(') && value.toString().includes(')') ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    return amount;\r\n  }\r\n\r\n  disableSavePayment() {\r\n    var proceedPayment = false;\r\n    this.paymentAdjustedWithPriorBal = false;\r\n    const rentalCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('rentalCharge').value)\r\n    const otherCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('otherCharge').value)\r\n    const salesTax = this.getActualAmountFromInp(this.bookingDetailsForm.get('totalSalesTax').value)\r\n    const secondTax = this.getActualAmountFromInp(this.bookingDetailsForm.get('totalSecondLeveltax').value)\r\n    const additionalCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('additionalCharge').value)\r\n    const priorBalance = this.getActualAmountFromInp(this.bookingDetailsForm.get('priorBalance').value)\r\n    var totalCharges = rentalCharge + otherCharge + salesTax + secondTax + additionalCharge;\r\n    if(totalCharges + priorBalance == 0){\r\n      proceedPayment = true;\r\n      this.paymentAdjustedWithPriorBal = true;\r\n    }\r\n    \r\n    const paymentAmount = this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n    if (paymentAmount > 0 || proceedPayment) {\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n\r\n  addDays(date: Date, days: number): Date {\r\n    const result = new Date(date);\r\n    result.setDate(result.getDate() + days);\r\n    return result;\r\n  }\r\n\r\n  proceedRenewingCWOtherCharges(){\r\n    for(const item of this.selectedOtherItems){\r\n      if (new Date(item.RentalWeek.split('-')[0]) <= new Date(item.CWRenewalWeek.split('-')[0])\r\n        && item.Recurring && this.allowOtherItemRenewal) {\r\n        var nextDate = this.addDays(new Date(item.RentalWeek.split('-')[0]), 7);\r\n        var rentalWeekDate = this.weeklyMarketDays.filter(date => new Date(date.RentalEndDays.split('-')[0]) <= new Date(nextDate)\r\n          && new Date(date.RentalEndDays.split('-')[1]) >= new Date(nextDate))\r\n        if (rentalWeekDate.length > 0)\r\n          var rentalStartWeek = rentalWeekDate[0].RentalStartDays;\r\n\r\n        var recordExist = this.selectedOtherItems.findIndex(e => e.RentalWeek == item.RentalWeek && e.Id == item.Id && e.Reference == item.Reference && e.BoothNo == item.BoothNo)\r\n        var otherItemCharge;\r\n        if (this.otherItemList.length > 0) {\r\n          otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n          if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n            otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n          }\r\n        } else {\r\n          otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n        }\r\n        if (item.Status != \"R\") {\r\n          var obj = {\r\n            MarketId: this.marketId,\r\n            OtherItemId: item.Id,\r\n            VendorId: this.vendorId,\r\n            Quantity: item.Quantity,\r\n            OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n          }\r\n          this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n            if (recordExist != -1) {\r\n              const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n              const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n              const finalCharge = isNegative ? -totalValue : totalValue;\r\n              item.OtherItemtotal = this.customCurrency.transform((finalCharge * item.Quantity).toString());\r\n\r\n              this.selectedOtherItems[recordExist].OtherItemCharge = otherItemCharge;\r\n              this.selectedOtherItems[recordExist].Quantity = item.Quantity;\r\n              this.selectedOtherItems[recordExist].OtherItemtotal = item.OtherItemtotal;\r\n              this.selectedOtherItems[recordExist].RentalWeek = rentalStartWeek;\r\n              this.selectedOtherItems[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax.toString());\r\n              this.selectedOtherItems[recordExist].CityTax = this.customCurrency.transform(res.CityTax.toString());\r\n              this.selectedOtherItems[recordExist].BoothNo = item.othChgBooths ?? \"none\";\r\n              this.selectedOtherItems[recordExist].Recurring = item.Recurring;\r\n              this.selectedOtherItems[recordExist].WeeklyOtherRentalIds = \"\";\r\n            }\r\n            this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.bookingDetailsForm.patchValue({\r\n              otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n          });\r\n        }\r\n      }\r\n      else{\r\n        var recordExist = this.selectedOtherItems.findIndex(e => e.MonthOtherRentalId == item.MonthOtherRentalId)\r\n        item.BookingCanExtend = false;\r\n        item.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n        item.CWRenewalWeek =\"\"\r\n        if (!this.allowOtherItemRenewal) {\r\n          if (recordExist != -1) {\r\n            this.selectedOtherItems[recordExist].OtherItemCharge = this.customCurrency.transform(\"0\")\r\n            this.selectedOtherItems[recordExist].OtherItemtotal = this.customCurrency.transform(\"0\")\r\n          }\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  closeResaleModal(){\r\n   // this.refreshAddBooth();\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  resaleOptionValidation() {\r\n    this.exemptResaleReason = \"\";\r\n    this.resaleNo = \"\";\r\n  }\r\n    \r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<form [formGroup]=\"bookingDetailsForm\" *ngIf=\"!processPayment && !savePayment\">\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-center\">\r\n            <hr class=\"my-2\" />\r\n        </div>\r\n    </div>\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-left\">\r\n            <label class=\"fw-700\">{{RentalTypeText}} Bookings:</label>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"rentalType == 2\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left mt-2\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 8rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Renew Start Month</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Renew End Month</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Rent</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedMonthlyBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedMonthlyBooths; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Booth # : {{item.BoothNumber}}<br />\r\n                                    Status : <span style=\"color: red\">{{item.Status == 'R'? 'Reserved' : 'Booked'}}</span><br />\r\n                                    <a (click)=\"toggleDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\"\r\n                                         style=\"width: 10%;\"> {{ item.showDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showDetails\">\r\n                                        Product : {{item.ProductName}}<br />\r\n                                        Rent Charged :{{item.CurrentRent}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecondTax}}<br />\r\n                                        Booking Start Week : {{item.CurrentRentStartPeriod}}<br />\r\n                                        Booking End Week : {{item.CurrentRentEndPeriod}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Reservation\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"updateRentalRecord(item)\" [disabled]=\"!allowMonthlyRentalRenewal\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartMonth}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.MonthlyRenewalMonth\"\r\n                                    [ngModelOptions]=\"{standalone: true}\" (change)=\"extendMonthlyRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                    <ng-container *ngFor=\"let marketDay of monthlyMarketDays; let i = index\">\r\n                                        <option *ngIf=\"item.Status == 'R'\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                            {{ marketDay.RentalMonths }}\r\n                                        </option>\r\n                                        <option *ngIf=\"item.Status != 'R' && i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                            {{ marketDay.RentalMonths }}\r\n                                        </option>\r\n                                    </ng-container>\r\n                                </select></td>\r\n                                <td class=\"text-left\">{{item.Rent}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedMonthlyBooths.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"5\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <label class=\"fw-700\">Other Rentals Bookings:</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Bookings</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Month</th>\r\n                                <th scope=\"col\" class=\"border text-center\" style=\"width: 13rem;\">Renewal End Month</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Charge</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Qty</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 5rem;\">Total</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedOtherItems.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedOtherItems; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Product: {{item.OtherItem}}<br />\r\n                                    Status : <span style=\"color: red\">Booked</span><br />\r\n                                    <a (click)=\"toggleOtherItemsDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showOtherItemsDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\" style=\"width: 15%;\">\r\n                                        {{ item.showOtherItemsDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showOtherItemsDetails\">\r\n                                        Booking Start Month : {{item.CurrentRentalMonth}}<br />\r\n                                        Rent Charged : {{item.CurrentOtherItemtotal}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}}: {{item.CurrentSecLevelTax}}<br />                                       \r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Recurring\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" [disabled]=\"!allowOtherItemRenewal\" (change)=\"updateMonthlytherItemRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">\r\n                                    {{item.RenewalStartMonth}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.MonthlyRenewalMonth\"\r\n                                        [ngModelOptions]=\"{standalone: true}\" (change)=\"extendMonthlyOtherRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                        <ng-container *ngFor=\"let marketDay of monthlyMarketDays; let i = index\">\r\n                                            <option *ngIf=\"i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalMonths\">\r\n                                                {{ marketDay.RentalMonths }}\r\n                                            </option>\r\n                                        </ng-container>\r\n                                    </select>\r\n                                </td>\r\n                                <td class=\"text-left\"> {{item.OtherItemCharge}}</td>\r\n                                <td class=\"text-left\"> {{item.Quantity}}</td>\r\n                                <td class=\"text-left\"> {{item.OtherItemtotal}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedOtherItems.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"7\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div *ngIf=\"rentalType == 3\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left mt-2\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Product</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal End Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Week Day</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 8rem;\">Rent</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedWeeklyBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedWeeklyBooths; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Booth # : {{item.BoothNumber}}<br />\r\n                                    Status : <span style=\"color: red\">{{item.Status == 'R'? 'Reserved' : 'Booked'}}</span><br />\r\n                                    <a (click)=\"toggleWeeklyBookingDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\"\r\n                                            style=\"width: 10%;\"> {{ item.showDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showDetails\">\r\n                                        Product : {{item.ProductName}}<br />\r\n                                        Rent Charged :{{item.CurrentRent}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecondTax}}<br />\r\n                                        Booking Start Week : {{item.CurrentRentStartPeriod}}<br />\r\n                                        Booking End Week : {{item.CurrentRentEndPeriod}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.ProductName}}\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Reservation\"\r\n                                                [ngModelOptions]=\"{standalone: true}\" (change)=\"updateWeeklyRentalRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartWeek}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CWRenewalWeek\"\r\n                                        [ngModelOptions]=\"{standalone: true}\" (change)=\"extendWeeklyRental(item)\"\r\n                                        [disabled]=\"!item.BookingCanExtend\">\r\n                                        <ng-container *ngFor=\"let marketDay of weeklyMarketDays; let i = index\">\r\n                                            <option *ngIf=\"i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                                {{ marketDay.RentalEndDays }}\r\n                                            </option>\r\n                                        </ng-container>\r\n                                    </select></td>\r\n                                <td class=\"text-left\">{{item.WeekDay}}</td>\r\n                                <td class=\"text-left\">{{item.Rent}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedWeeklyBooths.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"7\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row mt-2\">\r\n            <div class=\"col-12 text-left\">\r\n                <label class=\"fw-700\">Other Rentals Bookings:</label>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div class=\"table-responsive\">\r\n                    <table class=\"table table-bordered\">\r\n                        <thead>\r\n                            <tr>\r\n                                <th scope=\"col\" class=\"right-border text-left\" style=\"width: 10rem;\">Booking Details</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 10rem;\">Renew Booking</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal Start Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 13rem;\">Renewal End Week</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Charge</th>\r\n                                <th scope=\"col\" class=\"border text-left\" style=\"width: 8rem;\">Qty</th>\r\n                                <th scope=\"col\" class=\"left-border text-left\" style=\"width: 5rem;\">Total</th>\r\n                            </tr>\r\n                        </thead>\r\n                        <tbody *ngIf=\"selectedWeeklyBooths.length > 0\">\r\n                            <tr *ngFor=\"let item of selectedOtherItems; let i = index\">\r\n                                <td scope=\"row\">\r\n                                    Product: {{item.OtherItem}}<br />\r\n                                    Status : <span style=\"color: red\">Booked</span><br />\r\n                                    <a (click)=\"toggleOtherItemsDetails(i)\" class=\"showDetails\">\r\n                                        <img [src]=\"item.showOtherItemsDetails ? '../assets/images/minus.jpg' : '../assets/images/plus.jpg'\" style=\"width: 15%;\">\r\n                                        {{ item.showOtherItemsDetails ? 'Hide Details' : 'Show Details' }}\r\n                                    </a>\r\n                                    <div *ngIf=\"item.showOtherItemsDetails\">\r\n                                        Booking Start Week : {{item.CurrentRentalWeek}}<br />\r\n                                        Rent Charged : {{item.CurrentOtherItemtotal}}<br />\r\n                                        Sales Tax : {{item.CurrentSalesTax}}<br />\r\n                                        {{secondTaxName}} : {{item.CurrentSecLevelTax}}<br />\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-center\">\r\n                                    <div class=\"checkbox-wrapper mt-2\">\r\n                                        <label class=\"pure-material-checkbox\">\r\n                                            <input type=\"checkbox\" class=\"CheckboxClass\" [(ngModel)]=\"item.Recurring\"\r\n                                            [ngModelOptions]=\"{standalone: true}\" (change)=\"updateWeeklyOtherItemRecord(item)\">\r\n                                            <span></span>\r\n                                        </label>\r\n                                    </div>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.RenewalStartWeek}}\r\n                                </td>\r\n                                <td class=\"text-left\"><select class=\"form-control\" [(ngModel)]=\"item.CWRenewalWeek\"\r\n                                    [ngModelOptions]=\"{standalone: true}\" (change)=\"extendCWOtherRental(item)\" [disabled]=\"!item.BookingCanExtend\">\r\n                                    <ng-container *ngFor=\"let marketDay of weeklyMarketDays; let i = index\">\r\n                                        <option *ngIf=\"i > item.RentEndPeriodIndex\" [ngValue]=\"marketDay.RentalEndDays\">\r\n                                            {{ marketDay.RentalEndDays}}\r\n                                        </option>\r\n                                    </ng-container>\r\n                                </select>\r\n                                </td>\r\n                                <td class=\"text-left\">{{item.OtherItemCharge}}</td>\r\n                                <td class=\"text-left\">{{item.Quantity}}</td>\r\n                                <td class=\"text-left\">{{item.OtherItemtotal}}</td>\r\n                            </tr>\r\n                        </tbody>\r\n                        <tbody *ngIf=\"selectedOtherItems.length == 0\">\r\n                            <tr><td scope=\"row\" colspan=\"7\">No records found</td></tr>\r\n                        </tbody>\r\n                    </table>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <div class=\"row\">\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n            <label class=\"mb-0\">Prior Balance</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"priorBalance\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Rental Charge</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"rentalCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Other Charges</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"otherCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Discount</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"discount\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Sales Tax</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalSalesTax\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">{{secondTaxName}}</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalSecondLeveltax\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Additional Charges</label>\r\n            <input type=\"text\" class=\"form-control d-inline text-right\" formControlName=\"additionalCharge\" readonly>\r\n        </div>\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n            <label class=\"mb-0\">Total Charge:</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalCharge\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Payment Amount</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"paymentAmount\"\r\n            (keypress)=\"numberOnly($event)\" \r\n            (input)=\"setCurrencyFormat(this.bookingDetailsForm.get('paymentAmount'))\"\r\n            (blur)=\"setMinimum(this.bookingDetailsForm.get('paymentAmount'))\"\r\n            (click)=\"handleClick($event)\" (dblclick)=\"handledblClick($event)\"\r\n            (change)=\"setMinimum(this.bookingDetailsForm.get('paymentAmount'))\">\r\n            <br />\r\n            <label class=\"mb-0\">CC Convenience Fee</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"convenienceFee\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Total Payment</label>\r\n            <input type=\"text\" class=\"form-control text-right fw-700\" formControlName=\"totalPayment\" readonly>\r\n            <br />\r\n            <label class=\"mb-0\">Balance due</label>\r\n            <input type=\"text\" class=\"form-control text-right\" formControlName=\"balanceDue\" readonly>\r\n        </div>\r\n        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left\"></div>\r\n    </div>\r\n\r\n    <div *ngFor=\"let rule of rulesFormArray; let i = index\">\r\n        <div class=\"row\">\r\n            <div class=\"col-12 text-left\">\r\n                <div>\r\n                    <label class=\"mb-0\">\r\n                        <input type=\"checkbox\" class=\"CheckboxClass mt-3\" [formControlName]=\"isChecked\"\r\n                            (change)=\"updateArrayDirectly(i,$event)\">\r\n                        <label class=\"chkAlign mb-0\">{{rule.rulesAndRegualtions}}</label>\r\n                    </label>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <div class=\"row\" *ngIf=\"rule.AgreementLinkRequired\">\r\n            <div class=\"col-12 text-left mt-1\">\r\n                <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                    class=\"img-fluid\" />\r\n                &nbsp;<a [href]=\"rule.AgreementBlobURL\" target=\"_blank\" class=\"rules\">{{rule.AgreementLinkTextContent}}</a>\r\n            </div>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"row\">\r\n        <div class=\"col-12 text-right mt-3 mb-3\">\r\n            <button class=\"btn btn-outline-primary mr-1\">Cancel</button>\r\n            <button class=\"btn btn-primary\" (click)=\"saveRentalWithPayment()\" [disabled]=\"disableSavePayment() || !allCheckboxesCheckedValidator()\">Submit</button>\r\n        </div>\r\n    </div>\r\n</form>\r\n\r\n<div *ngIf=\"processPayment\">\r\n    <app-payment [VendorId]=\"vendorId\" [keyedInTransaction]=\"keyedInTransaction\" [MarketId]=\"marketId\"\r\n        [CCAmount]=\"paymentAmount\" [TransactionType]=\"transactionType\" [voidPayment]=\"voidPayment\"\r\n        (PaymentResponse)=\"PaymentResponse($event)\" [VerifoneId]=\"verifoneId\"\r\n        (ClosePaymentPage)=\"ClosePaymentPage($event)\"></app-payment>\r\n</div>\r\n\r\n<div *ngIf=\"openConfirmationPage\">\r\n    <app-rental-confirmation [VendorId]=\"vendorId\" [AccountReceipId]=\"accountReceipId\" [RentalType]=\"this.rentalType\"></app-rental-confirmation>\r\n</div>\r\n\r\n<div class=\"modal fade bd-example-modal-xl\" #modalResaleNo id=\"modalResaleNo\" tabindex=\"-1\" role=\"dialog\"\r\n    aria-labelledby=\"exampleModalCenterTitle\" aria-hidden=\"true\">\r\n    <div class=\"modal-dialog modal-dialog-centered modal-md\" role=\"document\">\r\n        <div class=\"modal-content\">\r\n            <div class=\"modal-header modal-headerNewBooths\">\r\n                <h5 class=\"modal-title\" id=\"exampleModalCenterTitle\" i18n>Resale Number</h5>\r\n                <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\"\r\n                    (click)=\"closeResaleModal()\">\r\n                    <span aria-hidden=\"true\">&times;</span>\r\n                </button>\r\n            </div>\r\n            <div class=\"modal-body\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <label class=\"pure-material-checkbox\">Resale Number is required! Please select one of the\r\n                                following options.</label>\r\n                        </div>\r\n                        <hr class=\"my-3\">\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <div class=\"md-radio col-md-12 col-8\">\r\n                                <input type=\"radio\" id=\"resaleNo1\" name=\"resaleOptions\" value=\"1\"\r\n                                    [(ngModel)]=\"resaleNoOption\" (change)=\"resaleOptionValidation()\">\r\n                                <label for=\"resaleNo1\" i18n>Proceed without resale number.</label>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <div class=\"md-radio col-md-12 col-8\">\r\n                                <input type=\"radio\" id=\"resaleNo2\" name=\"resaleOptions\" value=\"2\"\r\n                                    [(ngModel)]=\"resaleNoOption\" (change)=\"resaleOptionValidation()\">\r\n                                <label for=\"resaleNo2\" i18n>Exempt from resale number.</label>\r\n                            </div>\r\n                            <div class=\"col-md-12 col-8 mt-2\">\r\n                                <label for=\"reasonInput\">Reason</label>\r\n                                <input type=\"text\" id=\"reasonInput\" class=\"form-control\"\r\n                                    [(ngModel)]=\"exemptResaleReason\" [disabled]=\"resaleNoOption != '2'\" />\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <div class=\"md-radio col-md-12 col-8\">\r\n                                <input type=\"radio\" id=\"resaleNo3\" name=\"resaleOptions\" value=\"3\"\r\n                                    [(ngModel)]=\"resaleNoOption\" (change)=\"resaleOptionValidation()\">\r\n                                <label for=\"resaleNo3\" i18n>Enter resale number now.</label>\r\n                            </div>\r\n                            <div class=\"col-md-12 col-8 mt-2\">\r\n                                <label for=\"resaleNumberInput\">Resale Number</label>\r\n                                <input type=\"text\" id=\"resaleNumberInput\" class=\"form-control\" [(ngModel)]=\"resaleNo\"\r\n                                    [disabled]=\"resaleNoOption != '3'\" maxlength=\"30\" />\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"checkbox-wrapper mt-2\">\r\n                            <div class=\"md-radio col-md-12 col-8\">\r\n                                <input type=\"radio\" id=\"resaleNo4\" name=\"resaleOptions\" value=\"4\"\r\n                                    [(ngModel)]=\"resaleNoOption\" (change)=\"resaleOptionValidation()\">\r\n                                <label for=\"resaleNo4\" i18n>Do not proceed.</label>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div class=\"modal-footer d-block pt-1 pb-2\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mt-1\">\r\n                            <button class=\"btn btn-primary mr-1\" data-dismiss=\"modal\" aria-label=\"Close\" i18n>OK</button>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</div>","import { DatePipe } from '@angular/common';\r\nimport { Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormArray, FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { PaymentService } from 'src/app/services/paymentService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport Swal from 'sweetalert2';\r\nimport { DiscountType } from 'src/app/Shared/enum';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { GeneralService } from 'src/app/services/General.service';\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n\r\n@Component({\r\n  selector: 'app-booking-details-weekly-monthly',\r\n  templateUrl: './booking-details-weekly-monthly.component.html',\r\n  styleUrls: ['./booking-details-weekly-monthly.component.scss']\r\n})\r\nexport class BookingDetailsWeeklyMonthlyComponent  implements OnInit, OnDestroy {\r\n  @Input() rentalType;\r\n  RentalTypeText;\r\n  voidPayment = false;\r\n  selectedBooths = [];\r\n  selectedMonthlyBooths =[]\r\n  public loaderIcon: Promise<boolean>;\r\n  private subscriptions: Subscription[] = [];\r\n  @Input() vendorId;\r\n  @Input() marketId;\r\n  processPayment = false;\r\n  paymentAmount = 0;\r\n  vendorProducts=[];\r\n  vendorDiscountPlans=[];\r\n  priorBalance;\r\n  paymentGatewayCredentials;\r\n  PromptRenewOther = false;\r\n  processCreditCardOnline;\r\n  verifoneId;\r\n  paymentOnly = false;\r\n  masterRentChargeforResOtherItems = false;\r\n  openConfirmationPage = false;\r\n  creditCardAmount = 0;\r\n  accountReceipId;\r\n  selectedWeeklyBooths;\r\n  private clickTimeout: any;\r\n  selectedMarketDays = [];\r\n  rentEndPeriodIndex;\r\n  private monthEndDateCache = new Map<string, Date>();\r\n  totalRentalCharge = 0.00;\r\n  totalOtherRentalCharge = 0.00;\r\n  totalSalesTax = 0.00;\r\n  totalSecondLeveltax = 0.00\r\n  totalCharge = 0.00;\r\n  otherItemList = [];\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  bookingDetailsForm: FormGroup;\r\n  selectedOtherItems = [];\r\n  applyCCCharge = false;\r\n  CcfeeinPercentage;\r\n  AllowPartialPay;\r\n  vendorRentalDays;\r\n  marketDayCountForResale = 0;\r\n  actualTotalDue = 0;\r\n  renewAllBoothsFromGrid;\r\n  keyedInTransaction = true;\r\n  MonthlyBookingEndDate = false;\r\n  transactionType=\"CREDITSALE\"\r\n  monthlyMarketDays = [];\r\n  allrentedOtherItems = [];\r\n  showDetails: boolean = false;\r\n  ResaleNumberRequired  = false;\r\n  DaysSellWithoutResaleNumber;\r\n  BusinessLicenseNumberRequired  = false;\r\n  DaysSellWithoutBusiLicNumber;\r\n  resaleOptionSelected;\r\n  resaleNoOption = \"1\";\r\n  exemptResale = false;\r\n  resaleNo = \"\";\r\n  exemptResaleReason = \"\";\r\n  businessLicenseNumber;\r\n  businessLicenseExpiryDate;\r\n  secondTaxName=\"\";\r\n  weeklyMarketDays =[];\r\n  @ViewChild('modalResaleNo', { static: false }) modalResaleNo: ElementRef;\r\n  totalDiscountCharge;\r\n  applyRenewalFee = false;\r\n  bookingRenewalFeeId;\r\n  renewalFeeAmount = 0\r\n  rules: any[] = [];\r\n  allowWeeklyRentalRenewal = false;\r\n  allowMonthlyRentalRenewal = false;\r\n  allowOtherItemRenewal = false;\r\n  paymentAdjustedWithPriorBal = false;\r\n  savePayment = false;\r\n  constructor(\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    public vendorService: VendorService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private paymentService: PaymentService,\r\n    private toastr: ToastrService,\r\n    private generalService: GeneralService,\r\n    private marketInfoService: MarketInfoService,\r\n    private datePipe: DatePipe) {\r\n    this.bookingDetailsForm = this.formbuilder.group({\r\n      priorBalance: [this.customCurrency.transform('0')],\r\n      totalCharge: [this.customCurrency.transform('0')],\r\n      paymentAmount: [this.customCurrency.transform('0')],\r\n      convenienceFee: [this.customCurrency.transform('0')],\r\n      totalPayment: [this.customCurrency.transform('0')],\r\n      balanceDue: [this.customCurrency.transform('0')],\r\n      rentalCharge: [this.customCurrency.transform('0')],\r\n      otherCharge: [this.customCurrency.transform('0')],\r\n      discount: [this.customCurrency.transform('0')],\r\n      additionalCharge: [this.customCurrency.transform('0')],\r\n      totalSalesTax: [this.customCurrency.transform('0')],\r\n      totalSecondLeveltax: [this.customCurrency.transform('0')],\r\n      rules: this.formbuilder.array(this.initializeRulesArray())\r\n    });\r\n\r\n    this.subscriptions.push(\r\n      this.bookingDetailsForm.get('totalCharge')?.valueChanges.subscribe((val) => {\r\n        if (!this.AllowPartialPay)\r\n          var totalCharge = val.toString().includes('(') && val.toString().includes(')') ? -1 * parseFloat(val.toString().replace(/[^0-9.-]/g, '')) : parseFloat(val.toString().replace(/[^0-9.-]/g, ''));\r\n        var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0) {\r\n          val = totalCharge - convenienceFee;\r\n          val = this.customCurrency.transform(val);\r\n        }\r\n        this.bookingDetailsForm.get('paymentAmount')?.setValue(val, { emitEvent: false });\r\n        this.calculateBalance();\r\n      })\r\n    );\r\n  }\r\n    \r\n  ngOnInit(): void {\r\n    const rentalTypeMapping: { [key: string]: string } = {\r\n      '2': 'Monthly',\r\n      '3': 'Weekly'\r\n    };\r\n\r\n    this.rentalType = parseInt(this.rentalType);\r\n    this.RentalTypeText = rentalTypeMapping[this.rentalType] || '';\r\n    this.marketInfoService.setMarketId(this.marketId);\r\n    this.getMonthlyMarketDays();\r\n    this.getOtherRentalItems();\r\n    //   this.getVendorProducts();\r\n    this.getVendorBalances();\r\n    this.getCCCredentials();\r\n    this.getWebRentalSetting();\r\n    this.getRentalPaymentSettings();\r\n    this.getMarketRulesAndRegulations();\r\n  }\r\n\r\n  getOtherRentalItems() {\r\n    this.rentalService.getOtherRentalItems(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        response.map((el, i) => {\r\n          const ob = {\r\n            Id: el.OtherItemId,\r\n            OtherItem: el.OtherItem,\r\n            OtherItemCharge: this.customCurrency.transform(el.OtherItemCombinedMonthlyCharge),\r\n            Quantity: 0,\r\n            OtherItemtotal: this.customCurrency.transform('0'),\r\n            Recurring: el.Recurring,\r\n            othChgBooths: \"none\"\r\n          }\r\n          this.otherItemList.push(ob);\r\n        });\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  initializeRulesArray(): FormGroup[] {\r\n    return this.rules.map(rule => this.formbuilder.group({\r\n      isChecked: [false],  // Initialize checkbox with false\r\n      rulesAndRegualtions: [rule.rulesAndRegualtions],\r\n      AgreementLinkRequired: [rule.AgreementLinkRequired],\r\n      AgreementBlobURL: [rule.AgreementBlobURL],\r\n      AgreementLinkTextContent: [rule.AgreementLinkTextContent]\r\n    }));\r\n  }\r\n\r\n updateArrayDirectly(index: number, updatedValue: any) {\r\n    const isChecked = (event.target as HTMLInputElement).checked;\r\n    const control = this.rulesFormArray.at(index);\r\n    if (control) {\r\n      this.bookingDetailsForm.value['rules'][index].isChecked = isChecked;\r\n    }\r\n  }\r\n\r\n getMarketRulesAndRegulations() {\r\n    const sub = this.generalService.getWebrentalMarketRules(this.marketId).subscribe((rules: any) => {\r\n      if (rules) {\r\n        const rulesArray = this.bookingDetailsForm.get('rules') as FormArray;\r\n        rules.forEach(rule => {\r\n          rulesArray.push(this.formbuilder.group({\r\n            id: rule.ID,\r\n            isChecked: false,\r\n            rulesAndRegualtions: rule.Rules,\r\n            AgreementLinkRequired : rule.AgreementLinkRequired ?? false,\r\n            AgreementLinkTextContent: rule.AgreementLinkTextContent ?? \"\",\r\n            AgreementBlobURL : rule.AgreementBlobURL ?? \"\"\r\n          }));\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n allCheckboxesCheckedValidator(control: AbstractControl) {\r\n    var allChecked = this.bookingDetailsForm.value['rules'].filter(e=>!e.isChecked).length > 0 ? false : true;\r\n    return allChecked;\r\n  }\r\n\r\n  get rulesFormArray() {\r\n    return this.bookingDetailsForm.value['rules'] as FormArray;\r\n  }\r\n\r\n  getVendorProducts() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.GetVendorProductsById(this.marketId, this.vendorId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.vendorProducts = res.body;\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }    \r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  ClosePaymentPage(){\r\n    this.processPayment = false;\r\n  }\r\n\r\n  getMonthlyMarketDays() {\r\n    forkJoin({\r\n      response: this.marketInfoService.getMonthlyMarketDays(this.marketId),\r\n      weeklyMarket: this.marketInfoService.getWeeklyMarketDays(this.marketId),\r\n      resRentalSettings: this.rentalService.getRentalSettings(this.marketId),\r\n      vendorProducts: this.rentalService.GetVendorProductsById(this.marketId, this.vendorId)\r\n    }).subscribe(\r\n      async ({ response, resRentalSettings, vendorProducts,weeklyMarket }: any) => {\r\n        if (response) {\r\n          this.monthlyMarketDays = response;\r\n        }\r\n        if(weeklyMarket){\r\n          this.weeklyMarketDays = weeklyMarket;\r\n        }\r\n        if (vendorProducts) {\r\n          this.vendorProducts = vendorProducts.body;\r\n        }\r\n\r\n        if (resRentalSettings) {\r\n          this.MonthlyBookingEndDate = resRentalSettings.MonthlyBookingEndDate;\r\n          if (this.MonthlyBookingEndDate && this.rentalType == 4) {\r\n            const currentDate = new Date();\r\n            const currentYear = currentDate.getFullYear();\r\n            const currentMonth = currentDate.getMonth();\r\n            const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n            const currentMonthEndDate =await this.getMonthEndingDateFromSetting(currentYearMonth);\r\n            if (currentMonthEndDate <= new Date(currentDate)) {\r\n              var currentDateYearAndMonth = this.datePipe.transform(currentDate, 'MMMM yyyy');\r\n              this.monthlyMarketDays = response.filter(e => e.RentalMonths != currentDateYearAndMonth)\r\n            }\r\n          }\r\n        }\r\n        // this.selectedMonthlyMarketDays();  \r\n        if (this.rentalType == 2) {\r\n          this.getMonthlyBookings();\r\n          this.getMonthlyOtherRentals();\r\n        }\r\n        else if(this.rentalType == 3){\r\n          this.getWeeklyRental();\r\n          this.getWeeklyOtherRentals();\r\n        }\r\n      }, (err) => {\r\n      });\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  getVendorBalances() {\r\n    this.rentalService.getVendorBalances(this.vendorId, this.marketId).subscribe((res: any) => {\r\n     if (res) {\r\n        this.priorBalance = res.PriorBalance;\r\n        this.actualTotalDue = res.PriorBalance;\r\n        this.bookingDetailsForm.patchValue({\r\n          priorBalance: this.customCurrency.transform(this.priorBalance),\r\n          totalCharge: this.customCurrency.transform(this.priorBalance)\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  getMonthEndDate(inputDate: Date): Date {\r\n    const nextMonthFirstDay = new Date(inputDate);\r\n    nextMonthFirstDay.setMonth(nextMonthFirstDay.getMonth() + 1, 1);\r\n    const monthEndDate = new Date(nextMonthFirstDay);\r\n    monthEndDate.setDate(monthEndDate.getDate() - 1);\r\n    return monthEndDate;\r\n  }\r\n\r\n toggleDetails(index: number) {\r\n    this.selectedMonthlyBooths[index].showDetails = !this.selectedMonthlyBooths[index].showDetails;\r\n  }\r\n\r\n  toggleOtherItemsDetails(index: number) {\r\n    this.selectedOtherItems[index].showOtherItemsDetails = !this.selectedOtherItems[index].showOtherItemsDetails;\r\n  }\r\n\r\n  toggleWeeklyBookingDetails(index: number) {\r\n    this.selectedWeeklyBooths[index].showDetails = !this.selectedWeeklyBooths[index].showDetails;\r\n  }\r\n\r\n  async getMonthlyBookings(): Promise<any> {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedMonthlyBooths = [];\r\n    var existingBooths = [];\r\n    const sub = this.rentalService.getMonthlyBookings(this.marketId, this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        existingBooths = res;\r\n        this.bindMonthlyRentalData(existingBooths);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  async bindMonthlyRentalData(existingBooths) {\r\n    for (const el of existingBooths) {\r\n      const StartDateList = [];\r\n      var initialStartDate;\r\n      var marketDays = 0;\r\n      var marketDay;\r\n      const today: Date = new Date(new Date().toDateString());\r\n\r\n      var startDate = new Date(el.RentalStartDate);\r\n      var endDate = new Date(el.RentalEndDate);\r\n      if (el.Status == \"R\" && startDate < today) {\r\n        startDate = today;\r\n        initialStartDate = startDate;\r\n        endDate = this.getMonthEndDate(startDate);\r\n      }\r\n\r\n      var selectedDayOfWeek = new Date(el.RentalStartDate).getDay();\r\n      marketDay = this.datePipe.transform(el.RentalStartDate, 'EEE');\r\n      let currentDay = new Date(startDate);\r\n      while (currentDay <= endDate) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n            marketDays += 1;\r\n            StartDateList.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n        }\r\n\r\n        if (this.datePipe.transform(currentDay, 'MM/dd/yyyy') == this.datePipe.transform(endDate, 'MM/dd/yyyy')) {\r\n          if (StartDateList && StartDateList.length == 0) {\r\n            endDate.setDate(endDate.getDate() + 1);\r\n            endDate = this.getMonthEndDate(endDate);\r\n          }\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = StartDateList.sort(compareDates);\r\n      switch (el) {\r\n        case 1: marketDay = 'Sun'\r\n          break;\r\n        case 2: marketDay = 'Mon'\r\n          break;\r\n        case 3: marketDay = 'Tue'\r\n          break;\r\n        case 4: marketDay = 'Wed'\r\n          break;\r\n        case 5: marketDay = 'Thu'\r\n          break;\r\n        case 6: marketDay = 'Fri'\r\n          break;\r\n        case 7: marketDay = 'Sat'\r\n          break;\r\n      }\r\n\r\n      if (el.Status == \"R\") {\r\n        if (initialStartDate <= today) {\r\n          el.RentalStartDate = StartDateList[0].startDate\r\n          el.RentalEndDate = StartDateList[StartDateList.length - 1].startDate;\r\n        }\r\n      }\r\n\r\n      const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'));\r\n      var renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths\r\n\r\n      if (el.Status == \"R\") {\r\n        renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex].RentalMonths\r\n        var obj = {\r\n          BoothTypeId: el.BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalStartPeriod: new Date(el.RentalStartDate),\r\n          RentalEndPeriod: new Date(el.RentalEndDate),\r\n          RentalMarketDay: marketDay\r\n        }\r\n        const res = await this.rentalService.getBoothRentalMontlyCharges(this.marketId, obj).toPromise();\r\n        if (res) {\r\n          const ob = {\r\n            MonthlyRentalId: el.MonthlyRentalId,\r\n            BoothNumber: el.BoothNumber,\r\n            BoothType: el.BoothType,\r\n            BoothTypeId: el.BoothTypeId,\r\n            RentalStartDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n            RentalEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n            RentalSavedEndDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n            RentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n            RentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'),\r\n            Product: el.ProductId,\r\n            ProductName: this.vendorProducts.filter(e => e.ProductId == el.ProductId)[0]?.ProductName,\r\n            StartDateList: StartDateList,\r\n            MktDays: marketDays,\r\n            PerDiemRent: this.customCurrency.transform('0.00'),\r\n            Rent: this.customCurrency.transform(res.Rent),\r\n            SalesTax: this.customCurrency.transform(res.SalesTax),\r\n            CityTax: this.customCurrency.transform(res.CityTax),\r\n            CurrentRentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n            CurrentRentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'),\r\n            CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n            CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n            CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n            Sunday: el.Sunday,\r\n            Monday: el.Monday,\r\n            Tuesday: el.Tuesday,\r\n            Wednesday: el.Wednesday,\r\n            Thursday: el.Thursday,\r\n            Friday: el.Friday,\r\n            Saturday: el.Saturday,\r\n            Reservation: el.BoothReserved,\r\n            Drop: el.DoNotRenew,\r\n            January: this.customCurrency.transform(res.JanRent),\r\n            February: this.customCurrency.transform(res.FebRent),\r\n            March: this.customCurrency.transform(res.MarRent),\r\n            April: this.customCurrency.transform(res.AprRent),\r\n            May: this.customCurrency.transform(res.MayRent),\r\n            June: this.customCurrency.transform(res.JunRent),\r\n            July: this.customCurrency.transform(res.JulRent),\r\n            August: this.customCurrency.transform(res.AugRent),\r\n            September: this.customCurrency.transform(res.SepRent),\r\n            October: this.customCurrency.transform(res.OctRent),\r\n            November: this.customCurrency.transform(res.NovRent),\r\n            December: this.customCurrency.transform(res.DecRent),\r\n            JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n            FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n            MarchMonthPresent: res.MarchMonthPresent,\r\n            AprilMonthPresent: res.AprilMonthPresent,\r\n            MayMonthPresent: res.MayMonthPresent,\r\n            JuneMonthPresent: res.JuneMonthPresent,\r\n            JulyMonthPresent: res.JulyMonthPresent,\r\n            AugustMonthPresent: res.AugustMonthPresent,\r\n            SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n            OctoberMonthPresent: res.OctoberMonthPresent,\r\n            NovemberMonthPresent: res.NovemberMonthPresent,\r\n            DecemberMonthPresent: res.DecemberMonthPresent,\r\n            DisableJanMonth: res.JanRent ? false : true,\r\n            DisableFebMonth: res.FebRent ? false : true,\r\n            DisableMarMonth: res.MarRent ? false : true,\r\n            DisableAprMonth: res.AprRent ? false : true,\r\n            DisableMayMonth: res.MayRent ? false : true,\r\n            DisableJunMonth: res.JunRent ? false : true,\r\n            DisableJulMonth: res.JulRent ? false : true,\r\n            DisableAugMonth: res.AugRent ? false : true,\r\n            DisableSepMonth: res.SepRent ? false : true,\r\n            DisableOctMonth: res.OctRent ? false : true,\r\n            DisableNovMonth: res.NovRent ? false : true,\r\n            DisableDecMonth: res.DecRent ? false : true,\r\n            DiasbleStartDate: false,\r\n            Status: el.Status,\r\n            NewBooth: false,\r\n            ExtendRental: true,\r\n            BookingCanExtend: true,\r\n            AllRentalDates: StartDateList.map(el => new Date(el.startDate)),\r\n            RenewalStartMonth: renewalStartMonth,\r\n            MonthlyRenewalMonth: this.monthlyMarketDays[rentEndPeriodIndex].RentalMonths,\r\n            RentEndPeriodIndex: rentEndPeriodIndex\r\n          }\r\n          if (this.allowMonthlyRentalRenewal) {\r\n            this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.bookingDetailsForm.patchValue({\r\n              rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n          }\r\n          this.selectedMonthlyBooths.push(ob);\r\n        }\r\n      }\r\n      else {\r\n        var rentalStartPeriod;\r\n        if (this.MonthlyBookingEndDate && this.rentalType == 4) {\r\n          let rentalStartDate = new Date(el.RentalStartDate);\r\n          var startMonth = rentalStartDate.getMonth() + 1;\r\n          var startYear = rentalStartDate.getFullYear();\r\n          const startYearAndMonth = `${startYear}${startMonth < 10 ? '0' : ''}${startMonth}`;\r\n          const rentalMonthEndDate = await this.getMonthEndingDateFromSetting(startYearAndMonth);\r\n\r\n          if (new Date(el.RentalStartDate) > rentalMonthEndDate) {\r\n            rentalStartDate = new Date(el.RentalStartDate);\r\n            const dayOfMonth = rentalStartDate.getDate();\r\n            rentalStartDate.setMonth(rentalStartDate.getMonth() + 1);\r\n\r\n            if (rentalStartDate.getDate() < dayOfMonth) {\r\n              rentalStartDate.setDate(0); // Set to the last day of the previous month\r\n            }\r\n            rentalStartPeriod = this.datePipe.transform(rentalStartDate, 'MMMM yyyy');\r\n          }\r\n          else {\r\n            rentalStartPeriod = this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy');\r\n          }\r\n        }\r\n        else {\r\n          rentalStartPeriod = this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy');\r\n        }\r\n\r\n        const ob = {\r\n          MonthlyRentalId: el.MonthlyRentalId,\r\n          BoothNumber: el.BoothNumber,\r\n          BoothType: el.BoothType,\r\n          BoothTypeId: el.BoothTypeId,\r\n          RentalStartDate: this.datePipe.transform(el.RentalStartDate, 'MMM d, y'),\r\n          RentalEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n          RentalSavedEndDate: this.datePipe.transform(el.RentalEndDate, 'MMM d, y'),\r\n          RentStartPeriod: rentalStartPeriod,\r\n          RentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'),\r\n          Product: el.ProductId,\r\n          ProductName: this.vendorProducts.filter(e => e.ProductId == el.ProductId)[0]?.ProductName,\r\n          StartDateList: StartDateList,\r\n          MktDays: marketDays,\r\n          PerDiemRent: this.customCurrency.transform('0.00'),\r\n          Rent: this.customCurrency.transform('0.00'),\r\n          SalesTax: this.customCurrency.transform('0.00'),\r\n          CityTax: this.customCurrency.transform('0.00'),\r\n          CurrentRentStartPeriod: this.datePipe.transform(el.RentalStartDate, 'MMMM yyyy'),\r\n          CurrentRentEndPeriod: this.datePipe.transform(el.RentalEndDate, 'MMMM yyyy'), \r\n          CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n          CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n          CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n          Sunday: el.Sunday,\r\n          Monday: el.Monday,\r\n          Tuesday: el.Tuesday,\r\n          Wednesday: el.Wednesday,\r\n          Thursday: el.Thursday,\r\n          Friday: el.Friday,\r\n          Saturday: el.Saturday,\r\n          Reservation: el.BoothReserved,\r\n          Drop: el.DoNotRenew,\r\n          Status: el.Status,\r\n          BookingCanExtend: true,\r\n          January: this.customCurrency.transform('0.00'),\r\n          February: this.customCurrency.transform('0.00'),\r\n          March: this.customCurrency.transform('0.00'),\r\n          April: this.customCurrency.transform('0.00'),\r\n          May: this.customCurrency.transform('0.00'),\r\n          June: this.customCurrency.transform('0.00'),\r\n          July: this.customCurrency.transform('0.00'),\r\n          August: this.customCurrency.transform('0.00'),\r\n          September: this.customCurrency.transform('0.00'),\r\n          October: this.customCurrency.transform('0.00'),\r\n          November: this.customCurrency.transform('0.00'),\r\n          December: this.customCurrency.transform('0.00'),\r\n          JanuaryMonthPresent: el.JanuaryMonthPresent,\r\n          FebruaryMonthPresent: el.FebruaryMonthPresent,\r\n          MarchMonthPresent: el.MarchMonthPresent,\r\n          AprilMonthPresent: el.AprilMonthPresent,\r\n          MayMonthPresent: el.MayMonthPresent,\r\n          JuneMonthPresent: el.JuneMonthPresent,\r\n          JulyMonthPresent: el.JulyMonthPresent,\r\n          AugustMonthPresent: el.AugustMonthPresent,\r\n          SeptemberMonthPresent: el.SeptemberMonthPresent,\r\n          OctoberMonthPresent: el.OctoberMonthPresent,\r\n          NovemberMonthPresent: el.NovemberMonthPresent,\r\n          DecemberMonthPresent: el.DecemberMonthPresent,\r\n          DisableJanMonth: true,\r\n          DisableFebMonth: true,\r\n          DisableMarMonth: true,\r\n          DisableAprMonth: true,\r\n          DisableMayMonth: true,\r\n          DisableJunMonth: true,\r\n          DisableJulMonth: true,\r\n          DisableAugMonth: true,\r\n          DisableSepMonth: true,\r\n          DisableOctMonth: true,\r\n          DisableNovMonth: true,\r\n          DisableDecMonth: true,\r\n          DiasbleStartDate: true,\r\n          NewBooth: false,\r\n          AllRentalDates: StartDateList.map(el => new Date(el.startDate)),\r\n          RenewalStartMonth: renewalStartMonth,\r\n          MonthlyRenewalMonth: this.monthlyMarketDays[rentEndPeriodIndex + 1].RentalMonths,\r\n          RentEndPeriodIndex:rentEndPeriodIndex\r\n        }\r\n        this.selectedMonthlyBooths.push(ob);\r\n      }\r\n    };\r\n\r\n    await this.handleMonthlyEndDateChange();\r\n    this.loaderIcon = Promise.resolve(false);\r\n  }\r\n\r\n  getDaysDifference(date1: Date, date2: Date): number {\r\n    // Normalize both dates to start of the day (midnight)\r\n    const start = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());\r\n    const end = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());\r\n    // Calculate the difference in time (milliseconds)\r\n    const timeDiff = Math.abs(end.getTime() - start.getTime());\r\n    // Convert time difference from milliseconds to days\r\n    const dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));\r\n    return dayDiff;\r\n  }\r\n\r\n  async handleMonthlyEndDateChange() {\r\n    this.renewAllBoothsFromGrid = false;\r\n    if (this.selectedMonthlyBooths.length === 0) {\r\n      await this.renewAllBooths();\r\n      return;\r\n    }\r\n  \r\n    this.renewAllBoothsFromGrid = true;\r\n    let rentalDates: any[] = [];\r\n    let noResale = true;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n  \r\n    if ((this.ResaleNumberRequired && !this.exemptResale) || this.BusinessLicenseNumberRequired) {\r\n      await this.processSelectedBooths(rentalDates);\r\n  \r\n      for (const item of this.selectedMonthlyBooths) {\r\n        if (this.shouldProcessBooth(item)) {\r\n          await this.processBoothRentalDates(item, rentalDates);\r\n        }\r\n      }\r\n  \r\n      this.updateVendorRentalDays(rentalDates);\r\n  \r\n      const vendorRentalDaysObj = { VendorID: this.vendorId, VendorRentalDate: new Date() };\r\n      const vendorRentalDaysRes = await this.rentalService.getVendorRentalDays(vendorRentalDaysObj).toPromise();\r\n  \r\n      if (this.marketDayCountForResale <= this.DaysSellWithoutResaleNumber ||\r\n          this.marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n        this.addVendorRentalDays(vendorRentalDaysRes);\r\n      }\r\n  \r\n      await this.checkResaleOrBusinessLicense(noResale);\r\n    } else {\r\n      await this.renewAllBooths();\r\n    }\r\n  }\r\n\r\n  updateMonthlytherItemRecord(record){\r\n    if (record.Recurring) {\r\n      const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == record.RentalMonth);\r\n      const renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex + 1].RentalMonths;\r\n      record.BookingCanExtend = true;\r\n      record.Quantity = 1;\r\n      record.RenewalStartMonth = renewalStartMonth;\r\n      record.MonthlyRenewalMonth = renewalStartMonth;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendMonthlyOtherRental(record);\r\n    }\r\n    else {    \r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.MonthlyRenewalMonth = record.RentalMonth;\r\n      this.totalOtherRentalCharge -= record.OtherItemtotal.toString().includes('(') && record.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.OtherItemtotal = this.customCurrency.transform(\"0\");\r\n      record.Quantity = 0;\r\n      record.OtherItemCharge = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  extendMonthlyOtherRental(item) {\r\n    const endMonth = new Date(item.MonthlyRenewalMonth);\r\n    const currentMonth = new Date(item.RentalMonth);\r\n    if (currentMonth < new Date(item.MonthlyRenewalMonth) && item.Recurring && this.allowOtherItemRenewal) {\r\n      var nextDate = currentMonth.setMonth(currentMonth.getMonth() + 1);\r\n      var rentalMonthDate = this.monthlyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n        && this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n      if (rentalMonthDate.length > 0)\r\n        var rentalStartMonth = rentalMonthDate[0].RentalMonths;\r\n\r\n      var recordExist = this.selectedOtherItems.findIndex(e => e.RentalMonth == rentalStartMonth && e.Id == item.Id && e.Reference == item.Reference && e.BoothNumber == item.BoothNo)\r\n      var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n      if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n        otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n      }\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: item.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: item.Quantity,\r\n        OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n      }\r\n\r\n      this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n        const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        item.OtherItemtotal =this.customCurrency.transform((parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) + (finalCharge * item.Quantity)).toString());\r\n        item.Quantity += item.Quantity;\r\n        item.MonthlyRentalIds += ',' + item.Id\r\n        item.MonthlyRenewalMonth = rentalStartMonth;\r\n\r\n        this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.bookingDetailsForm.patchValue({\r\n          otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n      });\r\n    }\r\n    else {\r\n      item.BookingCanExtend = false;\r\n      item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      item.MonthlyRenewalMonth = item.RentalMonth;\r\n    }\r\n  }\r\n\r\n  getDateFromDateTime(date){\r\n    return new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n  }\r\n\r\n  renewMonthlyOtherCharges() {\r\n    if (this.selectedOtherItems.length > 0) {\r\n          this.proceedRenewingOtherCharges();\r\n    }\r\n  }\r\n\r\n  async proceedRenewingOtherCharges(){\r\n    for(const item of this.selectedOtherItems){\r\n       const endMonth = new Date(item.MonthlyRenewalMonth);\r\n       const currentMonth = new Date(item.RentalMonth);\r\n       if (this.getDateFromDateTime(currentMonth) <= this.getDateFromDateTime(new Date(item.MonthlyRenewalMonth)) && item.Recurring && this.allowOtherItemRenewal) {\r\n         var nextDate = currentMonth.setMonth(currentMonth.getMonth() + 1);\r\n         var rentalMonthDate = this.monthlyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n           && this.datePipe.transform(new Date(date.RentalMonths), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n         if (rentalMonthDate.length > 0)\r\n           var rentalEndMonth = rentalMonthDate[0].RentalMonths;\r\n \r\n         var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n         if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n           otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n         }\r\n         var obj = {\r\n           MarketId: this.marketId,\r\n           OtherItemId: item.Id,\r\n           VendorId: this.vendorId,\r\n           Quantity: item.Quantity,\r\n           OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n         }\r\n \r\n         var res = await this.rentalService.getOtherItemsRentalCharges(obj).toPromise();\r\n         const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n         const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n         const finalCharge = isNegative ? -totalValue : totalValue;\r\n         const OtherItemtotal = this.customCurrency.transform((finalCharge * item.Quantity).toString());\r\n         item.Quantity = item.Quantity;\r\n         item.MonthlyRentalIds += ',' + item.Id\r\n         item.OtherItemtotal = OtherItemtotal;\r\n         item.MonthlyRenewalMonth = rentalEndMonth;\r\n \r\n         this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n         this.bookingDetailsForm.patchValue({\r\n           otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n           totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n           totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n           totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n         });\r\n         \r\n       }\r\n       else{\r\n         item.BookingCanExtend = false;\r\n         item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n         item.MonthlyRenewalMonth = item.RentalMonth;\r\n       }\r\n     }\r\n   }  \r\n  // Helper functions\r\n  \r\n  // Process selected booths for rental dates\r\n  async processSelectedBooths(rentalDates: any[]) {\r\n    const selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth || e.ExtendRental);\r\n    for (const record of selectedBoothRecord) {\r\n      for (const el of this.selectedMarketDays) {\r\n        this.addRentalDates(record, rentalDates, el - 1);\r\n      }\r\n    }\r\n  }\r\n  \r\n  // Check if the booth should be processed\r\n  shouldProcessBooth(item: any): boolean {\r\n    return new Date(item.RentEndPeriod.split('-')[0]) < new Date(item.MonthlyRenewalMonth) &&\r\n      !item.Drop && item.Reservation;\r\n  }\r\n  \r\n  // Process rental dates for a booth\r\n  async processBoothRentalDates(item: any, rentalDates: any[]) {\r\n    const recordExist = this.selectedMonthlyBooths.findIndex(e =>\r\n      e.RentStartPeriod === item.RentStartPeriod && e.RentEndPeriod === item.RentEndPeriod &&\r\n      e.BoothNumber === item.BoothNumber && (item.MonthlyRentalId === 0 || e.MonthlyRentalId === item.MonthlyRentalId)\r\n    );\r\n  \r\n    if (recordExist !== -1) {\r\n      const startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n      let endDate = await this.calculateEndDate(item);\r\n  \r\n      // Loop through selected market days and add dates\r\n      this.selectedMarketDays.forEach((el) => {\r\n        this.addRentalDates({ RentalStartDate: startDate, RentalEndDate: endDate }, rentalDates, el - 1);\r\n      });\r\n    }\r\n  }\r\n  \r\n  // Add rental dates based on the day of the week\r\n  addRentalDates(record: any, rentalDates: any[], dayOfWeek: number) {\r\n    let currentDay = new Date(record.RentalStartDate);\r\n    const endDate = new Date(record.RentalEndDate);\r\n  \r\n    while (currentDay <= endDate) {\r\n      if (currentDay.getDay() === dayOfWeek) {\r\n        rentalDates.push({ startDate: this.datePipe.transform(currentDay, 'MMM d, y') });\r\n      }\r\n      currentDay.setDate(currentDay.getDate() + 1);\r\n    }\r\n  }\r\n  \r\n  // Calculate end date based on MonthlyRenewalMonth\r\n  async calculateEndDate(item: any): Promise<Date> {\r\n    const [endMonthDate, endMonthYear] = item.MonthlyRenewalMonth.split(' ');\r\n    const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n    let endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n  \r\n    if (this.MonthlyBookingEndDate) {\r\n      const rentalEndDateYearMonth = `${endDate.getFullYear()}${(endDate.getMonth() + 1).toString().padStart(2, '0')}`;\r\n      endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n    }\r\n  \r\n    return endDate;\r\n  }\r\n  \r\n  // Update vendor rental days by comparing with existing rental dates\r\n  updateVendorRentalDays(rentalDates: any[]) {\r\n    rentalDates.forEach(date => {\r\n      const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n      const dateExist = this.vendorRentalDays.some(el => {\r\n        const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        return rentalDateString === targetDateString;\r\n      });\r\n  \r\n      if (!dateExist) {\r\n        const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n        this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n        this.marketDayCountForResale += 1;\r\n      }\r\n    });\r\n  }\r\n\r\n  getActualAmountFromInp(value) {\r\n    var amount = value.toString().includes('(') && value.toString().includes(')') ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    return amount;\r\n  }\r\n\r\n  disableSavePayment() {\r\n    var proceedPayment = false;\r\n    this.paymentAdjustedWithPriorBal = false;\r\n    const rentalCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('rentalCharge').value)\r\n    const otherCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('otherCharge').value)\r\n    const salesTax = this.getActualAmountFromInp(this.bookingDetailsForm.get('totalSalesTax').value)\r\n    const secondTax = this.getActualAmountFromInp(this.bookingDetailsForm.get('totalSecondLeveltax').value)\r\n    const additionalCharge = this.getActualAmountFromInp(this.bookingDetailsForm.get('additionalCharge').value)\r\n    const priorBalance = this.getActualAmountFromInp(this.bookingDetailsForm.get('priorBalance').value)\r\n    var totalCharges = rentalCharge + otherCharge + salesTax + secondTax + additionalCharge;\r\n    if(totalCharges + priorBalance == 0){\r\n      proceedPayment = true;\r\n      this.paymentAdjustedWithPriorBal = true;\r\n    }\r\n    const paymentAmount = this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n    if (paymentAmount > 0 || proceedPayment) {\r\n      return false\r\n    }\r\n    else\r\n      return true\r\n  }\r\n  \r\n  // Add vendor rental days from API response\r\n  addVendorRentalDays(res: any[]) {\r\n    res.forEach(el => {\r\n      const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n      const dateExist = this.vendorRentalDays.some(data => {\r\n        const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n        return rentalDateString === targetDateString;\r\n      });\r\n  \r\n      if (!dateExist) {\r\n        const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        this.vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n        this.marketDayCountForResale += 1;\r\n      }\r\n    });\r\n  }\r\n  \r\n  // Check conditions for resale or business license\r\n  async checkResaleOrBusinessLicense(noResale: boolean) {\r\n    if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && \r\n        this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n      const modal = this.modalResaleNo.nativeElement;\r\n      modal.classList.add('show');\r\n      modal.style.display = 'block';\r\n      noResale = false;\r\n    } else if (this.BusinessLicenseNumberRequired && \r\n               this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n      await this.handleBusinessLicenseNumber();\r\n    } else {\r\n      await this.renewAllBooths();\r\n    }\r\n  }\r\n  \r\n  // Handle business license number validation\r\n  async handleBusinessLicenseNumber() {\r\n    if (!this.businessLicenseNumber) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else {\r\n      await this.checkBusinessLicenseExpiry();\r\n    }\r\n  }\r\n  \r\n  // Check business license expiry date\r\n  async checkBusinessLicenseExpiry() {\r\n    if (!this.businessLicenseExpiryDate) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License expiry date is not provided! Do you want to continue without that?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else if (new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n      const result = await Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Business License is expired! Do you want to continue?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      });\r\n  \r\n      if (result.value) {\r\n        await this.renewAllBooths();\r\n      }\r\n    } else {\r\n     await this.renewAllBooths();\r\n    }\r\n  }\r\n  \r\n\r\n  async getMonthEndingDateFromSetting(rentalYearMonth: string): Promise<Date> {\r\n    if (this.monthEndDateCache.has(rentalYearMonth)) {\r\n      return this.monthEndDateCache.get(rentalYearMonth);\r\n    }\r\n    const response = await this.rentalService.GetSelectedMonthEndDate(rentalYearMonth,this.marketId).toPromise();\r\n    if (response) {\r\n      const monthEndDate = new Date(response.MonthEndDateSelected);\r\n      this.monthEndDateCache.set(rentalYearMonth, monthEndDate);\r\n      return monthEndDate;\r\n    }\r\n    else {\r\n      return null\r\n    }\r\n  }\r\n\r\n  async renewAllBooths() {\r\n    const nonAvailableBooths = [];\r\n\r\n    for (const item of this.selectedMonthlyBooths) {\r\n      if (item.Status != \"R\") {\r\n        const { RentEndPeriod, MonthlyRenewalMonth, Drop, Reservation, MonthlyRentalId, BoothNumber, RentStartPeriod } = item;\r\n        const rentEndDate = new Date(RentEndPeriod.split('-')[0]);\r\n        const renewalMonth = new Date(MonthlyRenewalMonth);\r\n\r\n        if (rentEndDate < renewalMonth && !Drop && Reservation && this.allowMonthlyRentalRenewal) {\r\n          const recordExist = this.selectedMonthlyBooths.findIndex(e =>\r\n            e.RentStartPeriod === RentStartPeriod &&\r\n            e.RentEndPeriod === RentEndPeriod &&\r\n            e.BoothNumber === BoothNumber &&\r\n            e.MonthlyRentalId === MonthlyRentalId &&\r\n            e.Reservation && !e.Drop\r\n          );\r\n\r\n          if (recordExist != -1) {\r\n            const rentalDates = [];\r\n            var currentMonthRentalDates = [];\r\n            var rentalstartDate = \"\";\r\n            var marketDays = 0;\r\n            this.selectedMarketDays = [];\r\n            this.selectedMonthlyBooths[recordExist].Sunday == true ? this.selectedMarketDays.push(1) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Monday ? this.selectedMarketDays.push(2) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Tuesday == true ? this.selectedMarketDays.push(3) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Wednesday == true ? this.selectedMarketDays.push(4) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Thursday == true ? this.selectedMarketDays.push(5) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Friday == true ? this.selectedMarketDays.push(6) : 0;\r\n            this.selectedMonthlyBooths[recordExist].Saturday == true ? this.selectedMarketDays.push(7) : 0;\r\n            for (const el of this.selectedMarketDays) {\r\n              const currentDate = new Date();\r\n              const currentYear = currentDate.getFullYear();\r\n              const currentMonth = currentDate.getMonth();\r\n              var endDateYearMonth;\r\n              const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n              var startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n              const endMonth = item.MonthlyRenewalMonth;\r\n              const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n              const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n              var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n              var previousRentalYearMonth;\r\n              if (this.MonthlyBookingEndDate) {\r\n                const rentalEndDateYear = endDate.getFullYear();\r\n                const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n                endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n                const rentalStartDate = new Date(startDate);\r\n                var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n                var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n                const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n                // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n                const monthEndDate = await this.getMonthEndingDateFromSetting(PreviousMonthYearAndMonth);\r\n                const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n                if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n                  if (new Date() > new Date(monthEndDate)) {\r\n                    startDate = new Date();\r\n                  }\r\n                  else {\r\n                    startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n                  }\r\n                }\r\n                // }\r\n              }\r\n              var previousRentalYearMonth;\r\n              var currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n              if (this.MonthlyBookingEndDate) {\r\n                const currentStartMonth = this.selectedMonthlyBooths[recordExist].RentStartPeriod;\r\n                const [startMonthDate, startMonthYear] = currentStartMonth.split(' ');\r\n                const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n                var currentMonthEnd = new Date(startMonthYear, startMonthIndex + 1, 0);\r\n                const rentalEndDateYear = currentMonthEnd.getFullYear();\r\n                const rentalEndDateMonth = currentMonthEnd.getMonth() + 1;\r\n                const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                previousRentalYearMonth = rentalEndDateYearMonth;\r\n                if (endDateYearMonth == rentalEndDateYearMonth)\r\n                  currentMonthEnd = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n              }\r\n              const selectedDayOfWeek = el - 1\r\n              let currentDay = new Date(startDate);\r\n              while (currentDay <= endDate) {\r\n                if (currentDay.getDay() === selectedDayOfWeek) {\r\n                  if (!rentalstartDate) {\r\n                    rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                  }\r\n                  marketDays += 1;\r\n                  rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                }\r\n                currentDay.setDate(currentDay.getDate() + 1);\r\n              }\r\n\r\n              if (this.MonthlyBookingEndDate) {\r\n                currentDay = new Date(startDate);\r\n                while (currentDay <= currentMonthEnd) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    if (!rentalstartDate) {\r\n                      rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                    }\r\n                    currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n              }\r\n            };\r\n\r\n            const compareDates = (a: DateString, b: DateString): number => {\r\n              const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n              return dateA - dateB;\r\n            };\r\n            const sortedDates = rentalDates.sort(compareDates);\r\n\r\n            if (this.MonthlyBookingEndDate) {\r\n              const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n                const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                return dateA - dateB;\r\n              };\r\n              const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n            }\r\n            else {\r\n              currentMonthRentalDates = rentalDates;\r\n            }\r\n\r\n            var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n            var currentRentedEndDate = new Date(this.selectedMonthlyBooths[recordExist].RentalEndDate);\r\n            const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n            var obj1 = {\r\n              RentalDates: filteredRentalDates,\r\n              BoothNumber: this.selectedMonthlyBooths[recordExist].BoothNumber\r\n            }\r\n\r\n            const rentalExist = await this.rentalService.checkRentalExits(this.marketId, obj1).toPromise();\r\n            if (!rentalExist.Success) {\r\n              await this.updateBoothRentDetails(recordExist, rentalDates, marketDays);\r\n            } else {\r\n              nonAvailableBooths.push(BoothNumber);\r\n            }\r\n          }\r\n        }\r\n        else {\r\n          item.MonthlyRenewalMonth = item.RentEndPeriod;\r\n          item.RenewalStartMonth = \"This booking cannot be extended further!\"\r\n          item.BookingCanExtend = false;\r\n          nonAvailableBooths.push(item.BoothNumber);\r\n        }\r\n      }\r\n    }\r\n  }\r\n  \r\n  private async getEndDate(MonthlyRenewalMonth, startDate: Date) {\r\n    const [endMonthDate, endMonthYear] = MonthlyRenewalMonth.split(' ');\r\n    const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n    return new Date(endMonthYear, endMonthIndex + 1, 0);\r\n  }\r\n  \r\n  private async getPreviousMonthEndDate(startDate: Date) {\r\n    const rentalStartDate = new Date(startDate);\r\n    rentalStartDate.setMonth(rentalStartDate.getMonth() - 1);\r\n    const previousMonth = rentalStartDate.getMonth() + 1;\r\n    const previousYear = rentalStartDate.getFullYear();\r\n    return await this.getMonthEndingDateFromSetting(`${previousYear}${previousMonth.toString().padStart(2, '0')}`);\r\n  }\r\n  \r\n  private filterCurrentMonthDates(startDate: Date, selectedDayOfWeek: number, currentMonthRentalDates: any[]) {\r\n    let currentDay = new Date(startDate);\r\n    const currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n    while (currentDay <= currentMonthEnd) {\r\n      if (currentDay.getDay() === selectedDayOfWeek) {\r\n        currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n      }\r\n      currentDay.setDate(currentDay.getDate() + 1);\r\n    }\r\n    return currentMonthRentalDates;\r\n  }\r\n  \r\n  private sortDates(dates: any[]): any[] {\r\n    return dates.sort((a, b) => new Date(a.startDate).getTime() - new Date(b.startDate).getTime());\r\n  }\r\n  \r\n  private filterDatesAfterEndDate(allRentalDates: Date[], currentRentedEndDate: string): Date[] {\r\n    const currentEndDate = new Date(currentRentedEndDate);\r\n    return allRentalDates.filter(date => date > currentEndDate);\r\n  }\r\n  \r\n  private async updateBoothRentDetails(recordExist: number, rentalDates: any[], marketDays: number) {\r\n    const { BoothTypeId, RenewalStartMonth, Status, PerDiem, Rent, SalesTax, CityTax } = this.selectedMonthlyBooths[recordExist];\r\n    var marketDay;\r\n    if (this.selectedMonthlyBooths[recordExist].Sunday == true) {\r\n      marketDay = 'Sun'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Monday == true) {\r\n      marketDay = 'Mon'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Tuesday == true) {\r\n      marketDay = 'Tue'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Wednesday == true) {\r\n      marketDay = 'Wed'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Thursday == true) {\r\n      marketDay = 'Thu'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Friday == true) {\r\n      marketDay = 'Fri'\r\n    }\r\n    else if (this.selectedMonthlyBooths[recordExist].Saturday == true) {\r\n      marketDay = 'Sat'\r\n    }\r\n\r\n    const res = await this.rentalService.getBoothRentalMontlyCharges(this.marketId, {\r\n      BoothTypeId,\r\n      VendorId: this.vendorId,\r\n      RentalStartPeriod: new Date(RenewalStartMonth),\r\n      RentalEndPeriod: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n      PerDiemApplicable: PerDiem,\r\n      RentalMarketDay: marketDay,\r\n      Rent: this.parseCurrency(Rent),\r\n      SalesTax: this.parseCurrency(SalesTax),\r\n      CityTax: this.parseCurrency(CityTax)\r\n    }).toPromise();\r\n  \r\n    if (res) {\r\n        RentalEndDate: this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y'),\r\n        this.selectedMonthlyBooths[recordExist].RentalEndDate = this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y');\r\n        this.selectedMonthlyBooths[recordExist].MktDays = marketDays;\r\n        this.selectedMonthlyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n        this.selectedMonthlyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n        this.selectedMonthlyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n        this.selectedMonthlyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n        this.selectedMonthlyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n        this.selectedMonthlyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n        this.selectedMonthlyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n        this.selectedMonthlyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n        this.selectedMonthlyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n        this.selectedMonthlyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n        this.selectedMonthlyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n        this.selectedMonthlyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n        this.selectedMonthlyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n        this.selectedMonthlyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n        this.selectedMonthlyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n        this.selectedMonthlyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n        this.selectedMonthlyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n        this.selectedMonthlyBooths[recordExist].ExtendRental = true;\r\n        this.selectedMonthlyBooths[recordExist].AllRentalDates =  rentalDates.map(el => new Date(el.startDate));  \r\n      this.updateTotalCharges(res.Rent, res.SalesTax, res.CityTax);\r\n    }\r\n  }\r\n  \r\n  private parseCurrency(value: string) {\r\n    return value.includes('(') && value.includes(')') ? -parseFloat(value.replace(/[^0-9.-]/g, '')) : parseFloat(value.replace(/[^0-9.-]/g, ''));\r\n  }\r\n  \r\n  private updateTotalCharges(Rent, SalesTax, CityTax) {\r\n    this.totalRentalCharge += Rent;\r\n    this.totalSalesTax += SalesTax;\r\n    this.totalSecondLeveltax += CityTax;\r\n    this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n     this.bookingDetailsForm.patchValue({\r\n      rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n      totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n      totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n      totalCharge: this.customCurrency.transform(this.totalCharge.toString())     \r\n    });\r\n  }\r\n  \r\n  getMonthlyOtherRentals() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedOtherItems = [];\r\n    const currentYear = new Date().getFullYear();\r\n    const currentMonth = new Date().getMonth() + 1;\r\n    const currentYearMonth = `${currentYear}${currentMonth < 10 ? '0' : ''}${currentMonth}`;\r\n    const sub = this.rentalService.getMonthlyOtherRentals(this.marketId, this.vendorId).subscribe(async (res: any[]) => {\r\n      if (res) {\r\n        this.allrentedOtherItems = res;\r\n        for(const el of res){\r\n          if (el.YearMonth >= currentYearMonth) {        \r\n            const year = parseInt(el.YearMonth.substring(0, 4));\r\n            const month = parseInt(el.YearMonth.substring(4, 6));\r\n            const date = new Date(year, month - 1, 1);\r\n            const formattedDate = this.datePipe.transform(date, 'MMMM yyyy');\r\n            const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths ==formattedDate);\r\n            const renewalStartMonth = this.monthlyMarketDays.length > 1 ? this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths : \"\";\r\n          \r\n            const index = this.selectedOtherItems.findIndex(item => item.Id === el.OtherItemId && item.RentalMonth == formattedDate && item.Reference == el.Reference && item.BoothNo == el.BoothNumber && item.Recurring == el.Recurring);\r\n            if (index !== -1) {\r\n              this.selectedOtherItems[index].Quantity += el.Quantity;\r\n              this.selectedOtherItems[index].MonthlyRentalIds += ',' + el.OtherRentalId\r\n              var otherItemTotal = (el.OtherCharge * this.selectedOtherItems[index].Quantity).toString();    \r\n              this.selectedOtherItems[index].OtherItemtotal = otherItemTotal;\r\n            }\r\n            else {           \r\n              var otherItemTotal = (el.OtherCharge *  el.Quantity).toString();           \r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(\"0\"),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform(\"0\"),\r\n                RentalMonth: formattedDate,\r\n                SalesTax: this.customCurrency.transform('0'),\r\n                CityTax: this.customCurrency.transform('0'),\r\n                CurrentRentalMonth: formattedDate,\r\n                CurrentOtherItemtotal: this.customCurrency.transform(el.OtherCharge.toString()),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n                CurrentSecLevelTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                MonthlyRentalIds: el.OtherRentalId.toString(),\r\n                RenewalStartMonth: renewalStartMonth,\r\n                MonthlyRenewalMonth:renewalStartMonth,\r\n                BookingCanExtend: true,\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n            }\r\n          }\r\n          else {\r\n            const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths ==formattedDate);\r\n            const renewalStartMonth = this.monthlyMarketDays.length > 1 ? this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths : \"\";\r\n            var obj = {\r\n              MarketId: this.marketId,\r\n              OtherItemId: el.OtherItemId,\r\n              VendorId: this.vendorId,\r\n              Quantity: el.Quantity,\r\n              OtherItemCharge: el.OtherCharge\r\n            }\r\n            const date = new Date(currentYear, currentMonth - 1, 1);\r\n            const formattedDate = this.datePipe.transform(date, 'MMMM yyyy');\r\n            const res = await this.rentalService.getOtherItemsRentalCharges(obj).toPromise();\r\n            if(res)\r\n            {\r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform((el.OtherCharge * el.Quantity).toString()),\r\n                RentalMonth: formattedDate,\r\n                SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n                CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                MonthlyRentalIds: '',\r\n                Status: \"R\",\r\n                RentEndPeriodIndex:rentEndPeriodIndex,\r\n                BookingCanExtend: true,\r\n                RenewalStartMonth: formattedDate,\r\n                MonthlyRenewalMonth:formattedDate,\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n              const OtherItemtotal = el.OtherCharge * el.Quantity;\r\n              if (this.allowOtherItemRenewal) {\r\n                this.totalOtherRentalCharge = OtherItemtotal;\r\n                this.totalSalesTax = res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalSecondLeveltax = res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n                this.totalCharge = this.priorBalance + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n                this.bookingDetailsForm.patchValue({\r\n                  otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n                  totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                  totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                  totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n                });\r\n              }\r\n            }\r\n          }\r\n        }\r\n        this.renewMonthlyOtherCharges();\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  saveRentalWithPayment() {  \r\n    this.savePayment = false;     \r\n    var creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n     var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n    const totalAmountPaid = creditCardAmount  + convenienceFee;\r\n    if (totalAmountPaid != 0 || (totalAmountPaid == 0 && this.paymentAdjustedWithPriorBal)) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Are you sure you want to proceed with the payment?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          if (this.paymentAdjustedWithPriorBal) {\r\n            var obj = {\r\n              PaymentSuccess: true,\r\n              OrderId: \"\",\r\n              VerifoneId: 0\r\n            }\r\n            this.savePayment = true;\r\n            this.PaymentResponse(obj)\r\n          } else {\r\n            if (this.paymentGatewayCredentials && this.processCreditCardOnline)\r\n              this.processPayment = true;\r\n            else {\r\n              Swal.fire({\r\n                title: $localize`Warning`,\r\n                text: $localize`Credit card cannot be processed.`,\r\n                icon: \"warning\",\r\n                confirmButtonText: $localize`Ok`,\r\n              });\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n    else {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please enter the payment amount!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  PaymentResponse(response) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (response.PaymentSuccess) {\r\n      this.verifoneId = response.VerifoneId;\r\n      switch (this.rentalType) {\r\n       case 2:\r\n          var convenienceFee = this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n          if (convenienceFee > 0 && this.paymentOnly) {\r\n            this.paymentOnly = false;\r\n          }\r\n          var objM = {\r\n            VendorId: this.vendorId,\r\n            PaymentOrderId: response.OrderId,\r\n            RentalCharge: this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            SalesTax: 0,\r\n            SecLevelTax: 0,\r\n            OtherCharge: this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            PriorBalance: this.bookingDetailsForm.get('priorBalance').value.toString().includes('(') && this.bookingDetailsForm.get('priorBalance').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('priorBalance').value.toString().replace(/[^0-9.-]/g, '')),\r\n            TotalBalanceDue: this.bookingDetailsForm.get('balanceDue').value.toString().includes('(') && this.bookingDetailsForm.get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n            RentalNotes: \"\",\r\n            CashAmount: 0,\r\n            CheckAmount: 0,\r\n            CheckNo: \"\",\r\n            ChangeAmount: 0,\r\n            CardAmount: this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            DirectDebitAmount: 0,\r\n            CardType: \"\",\r\n            PaymentDone: true,\r\n            WebRentalRequest: true,\r\n            PaymentDueDate: null,\r\n            VerifoneId: response.VerifoneId,\r\n            DiscountAmount: this.bookingDetailsForm.get('discount').value.toString().includes('(') && this.bookingDetailsForm.get('discount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('discount').value.toString().replace(/[^0-9.-]/g, '')),\r\n            ConvenienceFee: this.bookingDetailsForm.get('convenienceFee').value.toString().includes('(') && this.bookingDetailsForm.get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n            BookingFee: this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n            MonthlyRentalBooth: [],\r\n            MonthlyOtherRentalCharges: [],\r\n            AppliedDiscountModel: []\r\n          }\r\n\r\n          var objSelectedBooth = [];\r\n          var objReturnData = [];\r\n          if (this.selectedMonthlyBooths.length > 0) {\r\n            this.selectedMonthlyBooths.forEach((item, i) => {\r\n              const rentalStartDateYear = new Date(item.RentalEndDate).getFullYear();\r\n              const rentalStartDateMonth = new Date(item.RentalEndDate).getMonth() + 1;\r\n              const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n              if (item.Reservation) {\r\n                objSelectedBooth.push({\r\n                  MonthlyRentalId: item.MonthlyRentalId,\r\n                  BoothNumber: item.BoothNumber,\r\n                  BoothTypeId: item.BoothTypeId,\r\n                  ProductId: item.Product,\r\n                  BoothType: item.BoothType,\r\n                  RentalStartDate: new Date(item.RentalStartDate),\r\n                  RentalEndDate: new Date(item.RentalEndDate),\r\n                  RentalYearMonth: rentalStartDateYearMonth,\r\n                  BoothReserved: item.Reservation,\r\n                  DoNotRenew: item.Drop,\r\n                  PerDiem: item.PerDiem,\r\n                  PerdiemRent: item.PerDiemRent.includes('(') && item.PerDiemRent.includes(')') ? -1 * parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')) : parseFloat(item.PerDiemRent.replace(/[^0-9.-]/g, '')),\r\n                  Monday: item.Monday,\r\n                  Tuesday: item.Tuesday,\r\n                  Wednesday: item.Wednesday,\r\n                  Thursday: item.Thursday,\r\n                  Friday: item.Friday,\r\n                  Saturday: item.Saturday,\r\n                  Sunday: item.Sunday,\r\n                  RentalCharge: item.Rent.includes('(') && item.Rent.includes(')') ? -1 * parseFloat(item.Rent.replace(/[^0-9.-]/g, '')) : parseFloat(item.Rent.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  JanRent: item.January ? (item.January.includes('(') && item.January.includes(')') ? -1 * parseFloat(item.January.replace(/[^0-9.-]/g, '')) : parseFloat(item.January.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  FebRent: item.February ? (item.February.includes('(') && item.February.includes(')') ? -1 * parseFloat(item.February.replace(/[^0-9.-]/g, '')) : parseFloat(item.February.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MarRent: item.March ? (item.March.includes('(') && item.March.includes(')') ? -1 * parseFloat(item.March.replace(/[^0-9.-]/g, '')) : parseFloat(item.March.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AprRent: item.April ? (item.April.includes('(') && item.April.includes(')') ? -1 * parseFloat(item.April.replace(/[^0-9.-]/g, '')) : parseFloat(item.April.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  MayRent: item.May ? (item.May.includes('(') && item.May.includes(')') ? -1 * parseFloat(item.May.replace(/[^0-9.-]/g, '')) : parseFloat(item.May.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JunRent: item.June ? (item.June.includes('(') && item.June.includes(')') ? -1 * parseFloat(item.June.replace(/[^0-9.-]/g, '')) : parseFloat(item.June.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  JulRent: item.July ? (item.July.includes('(') && item.July.includes(')') ? -1 * parseFloat(item.July.replace(/[^0-9.-]/g, '')) : parseFloat(item.July.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  AugRent: item.August ? (item.August.includes('(') && item.August.includes(')') ? -1 * parseFloat(item.August.replace(/[^0-9.-]/g, '')) : parseFloat(item.August.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  SepRent: item.September ? (item.September.includes('(') && item.September.includes(')') ? -1 * parseFloat(item.September.replace(/[^0-9.-]/g, '')) : parseFloat(item.September.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  OctRent: item.October ? (item.October.includes('(') && item.October.includes(')') ? -1 * parseFloat(item.October.replace(/[^0-9.-]/g, '')) : parseFloat(item.October.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  NovRent: item.November ? (item.November.includes('(') && item.November.includes(')') ? -1 * parseFloat(item.November.replace(/[^0-9.-]/g, '')) : parseFloat(item.November.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  DecRent: item.December ? (item.December.includes('(') && item.December.includes(')') ? -1 * parseFloat(item.December.replace(/[^0-9.-]/g, '')) : parseFloat(item.December.replace(/[^0-9.-]/g, ''))) : 0,\r\n                  BookingLog: i + 1,\r\n                  AllRentalDates: item.AllRentalDates\r\n                });\r\n              }\r\n\r\n              if (item.NewBooth) {\r\n                objReturnData.push({\r\n                  MonthlyRentalId: item.MonthlyRentalId,\r\n                  BoothNumber: item.BoothNumber,\r\n                  BoothType: item.BoothType,\r\n                  BoothTypeId: item.BoothTypeId,\r\n                  Product: item.Product,\r\n                  RentStartPeriod: item.RentStartPeriod,\r\n                  RentEndPeriod: item.RentEndPeriod,\r\n                  RentalSavedEndDate: item.RentalEndDate,\r\n                  RentalStartDate: item.RentalStartDate,\r\n                  RentalEndDate: item.RentalEndDate,\r\n                  MktDays: item.MktDays,\r\n                  Rent: item.Rent,\r\n                  SalesTax: item.SalesTax,\r\n                  CityTax: item.CityTax,\r\n                  PerDiem: item.PerDiem,\r\n                  PerdiemRent: item.PerDiemRent,\r\n                  Sunday: item.Sunday,\r\n                  Monday: item.Monday,\r\n                  Tuesday: item.Tuesday,\r\n                  Wednesday: item.Wednesday,\r\n                  Thursday: item.Thursday,\r\n                  Friday: item.Friday,\r\n                  Saturday: item.Saturday,\r\n                  Reservation: item.Reservation,\r\n                  Drop: item.Drop,\r\n                  January: item.January,\r\n                  February: item.February,\r\n                  March: item.March,\r\n                  April: item.April,\r\n                  May: item.May,\r\n                  June: item.June,\r\n                  July: item.July,\r\n                  August: item.August,\r\n                  September: item.September,\r\n                  October: item.October,\r\n                  November: item.November,\r\n                  December: item.December,\r\n                  JanuaryMonthPresent: item.January ? true : false,\r\n                  FebruaryMonthPresent: item.February ? true : false,\r\n                  MarchMonthPresent: item.March ? true : false,\r\n                  AprilMonthPresent: item.April ? true : false,\r\n                  MayMonthPresent: item.May ? true : false,\r\n                  JuneMonthPresent: item.June ? true : false,\r\n                  JulyMonthPresent: item.July ? true : false,\r\n                  AugustMonthPresent: item.August ? true : false,\r\n                  SeptemberMonthPresent: item.September ? true : false,\r\n                  OctoberMonthPresent: item.October ? true : false,\r\n                  NovemberMonthPresent: item.November ? true : false,\r\n                  DecemberMonthPresent: item.December ? true : false,\r\n                  NewBooth: true,\r\n                  Status: \"N\",\r\n                  StartDateList: item.StartDateList,\r\n                  DisableStartDate: false,\r\n                  AllRentalDates: item.AllRentalDates\r\n                });\r\n              }\r\n            });\r\n          }\r\n\r\n          if (objSelectedBooth.length > 0)\r\n            objM.MonthlyRentalBooth = objSelectedBooth;\r\n\r\n          var objSelectedOtherCharge = [];\r\n          if (this.selectedOtherItems.length > 0) {\r\n            this.selectedOtherItems.forEach((item) => {\r\n              const otherRentalYear = new Date(item.RentalMonth.split('-')[0]).getFullYear();\r\n              const otherRentalMonth = new Date(item.RentalMonth.split('-')[0]).getMonth() + 1;\r\n              const otherRentalYearMonth = `${otherRentalYear}${otherRentalMonth <\r\n                10 ? '0' : ''}${otherRentalMonth}`;\r\n\r\n              if (item.Recurring) {\r\n                objSelectedOtherCharge.push({\r\n                  OtherItemId: item.Id,\r\n                  MonthOtherRentalId: item.MonthOtherRentalId,\r\n                  OtherItemName: item.OtherItem,\r\n                  OtherItemCharge: item.OtherItemtotal.includes('(') && item.OtherItemtotal.includes(')') ? -1 * parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')),\r\n                  Quantity: item.Quantity,\r\n                  YearMonth: otherRentalYearMonth,\r\n                  BoothNumber: item.BoothNo,\r\n                  Recurring: item.Recurring,\r\n                  OtherCharge: item.OtherItemCharge.includes('(') && item.OtherItemCharge.includes(')') ? -1 * parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemCharge.replace(/[^0-9.-]/g, '')),\r\n                  SalesTax: item.SalesTax.includes('(') && item.SalesTax.includes(')') ? -1 * parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTax.replace(/[^0-9.-]/g, '')),\r\n                  SecLevelTax: item.CityTax.includes('(') && item.CityTax.includes(')') ? -1 * parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')) : parseFloat(item.CityTax.replace(/[^0-9.-]/g, '')),\r\n                  Reference: item.Reference,\r\n                  MonthlyRentalIds: item.MonthlyRentalIds\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objSelectedOtherCharge.length > 0)\r\n            objM.MonthlyOtherRentalCharges = objSelectedOtherCharge;\r\n\r\n          var objDiscountData = [];\r\n          if (this.vendorDiscountPlans.length > 0 && this.totalDiscountCharge > 0) {\r\n            this.vendorDiscountPlans.forEach((item) => {\r\n              if (item.CheckAll) {\r\n                objDiscountData.push({\r\n                  PlanId: item.PlanSeqId,\r\n                  DiscountAmount: item.AppliedDiscount.includes('(') && item.AppliedDiscount.includes(')') ? -1 * parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')) : parseFloat(item.AppliedDiscount.replace(/[^0-9.-]/g, '')),\r\n                  OtherCharges: item.OtherItems,\r\n                  SalesTax: item.SalesTaxApplied,\r\n                  SecondLevelTax: item.SecondLevelTaxApplied,\r\n                  DiscountType: item.DiscountType == DiscountType.Percentage ? \"0\" : \"1\",\r\n                  DiscountValue: item.DiscountValue,\r\n                  SalesTaxAmount: item.SalesTaxAmount.includes('(') && item.SalesTaxAmount.includes(')') ? -1 * parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SalesTaxAmount.replace(/[^0-9.-]/g, '')),\r\n                  SecondLevelTaxAmount: item.SecondLevelTaxAmount.includes('(') && item.SecondLevelTaxAmount.includes(')') ? -1 * parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, '')) : parseFloat(item.SecondLevelTaxAmount.replace(/[^0-9.-]/g, ''))\r\n                })\r\n              }\r\n            });\r\n          }\r\n          if (objDiscountData.length > 0)\r\n            objM.AppliedDiscountModel = objDiscountData;\r\n\r\n          const subCM = this.rentalService.saveMonthlyRental(this.marketId,objM).subscribe(async (res: any) => {\r\n            if (res.Success) {\r\n              this.accountReceipId = res.Id;\r\n              this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n              this.openConfirmationPage = true;\r\n            } else {\r\n              this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n              if (this.verifoneId) {\r\n                this.voidPayment = true;\r\n              }\r\n            }\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }, (err) => {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n            // this.router.navigate([url]);               \r\n\r\n            this.loaderIcon = Promise.resolve(false);\r\n          });\r\n\r\n          this.subscriptions.push(subCM);\r\n          break;\r\n      }\r\n    }\r\n    else {\r\n      this.processPayment = false;\r\n      this.voidPayment = false;\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  setMinimum(controls) {\r\n    const value = controls.value;\r\n    var enteredAmount = value.toString().includes('(') && value.toString().includes(')') ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    if (!enteredAmount) {\r\n      controls.setValue(this.customCurrency.transform(\"0.00\"));\r\n    }\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge + this.renewalFeeAmount;\r\n    if (enteredAmount > totalDue) {\r\n      this.bookingDetailsForm.get(\"paymentAmount\").setValue(this.customCurrency.transform(totalDue.toString()));\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Payment amount cannot be greater than total due.`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    this.calculateBalance();\r\n  }\r\n\r\n  calculateBalance() {\r\n    const creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    this.creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalSalesTax = this.bookingDetailsForm.get('totalSalesTax').value.toString().includes('(') && this.bookingDetailsForm.get('totalSalesTax').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalSalesTax').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalSalesTax').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalSecondLeveltax = this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().includes('(') && this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalSecondLeveltax').value.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    var renewalFee = this.renewalFeeAmount.toString().includes('(') && this.renewalFeeAmount.toString().includes(')') ? -1 * parseFloat(this.renewalFeeAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.renewalFeeAmount.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge + totalSalesTax + totalSecondLeveltax;\r\n    if(totalDue > 0){\r\n      totalDue = totalDue + renewalFee;\r\n    }\r\n    else{\r\n      renewalFee = 0;\r\n    }\r\n    const convenienceFee = 0;\r\n\r\n    var totalAmount;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    const balanceAmount = totalDue != 0 ? totalDue - totalAmount : 0;\r\n\r\n    this.bookingDetailsForm.patchValue({\r\n      totalDue: this.customCurrency.transform(totalDue.toString()),\r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),\r\n      additionalCharge: this.customCurrency.transform(renewalFee.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString())\r\n    })\r\n\r\n    this.paymentAmount = this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if (this.applyCCCharge && creditCardAmount > 0) {\r\n      this.calculateConvenienceFee();\r\n    }\r\n  }\r\n\r\n  handledblClick(event: any) {\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    const inputElement = event.target as HTMLInputElement;\r\n    inputElement.select(); // Select the entire text on double-click\r\n  }\r\n\r\n  handleClick(event: any) {\r\n    // Get the current value of the input field\r\n    let currentValue: string = event.target.value;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    const inputElement = event.target as HTMLInputElement;\r\n    const inputValue = inputElement.value;\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    this.clickTimeout = setTimeout(() => {\r\n      if (inputValue === '$0.00') {\r\n        const selectionLength = inputElement.selectionEnd - inputElement.selectionStart;\r\n\r\n        // If the entire text is not selected, set the cursor position after the \"$\" sign\r\n        if (selectionLength !== inputValue.length) {\r\n          inputElement.setSelectionRange(1, 1);\r\n        }\r\n      }\r\n    }, 200); // Delay to check for double click\r\n  \r\n    if (currentSelectionLength === currentValue.length) {\r\n      return true;\r\n    }\r\n    // Check if the input value is \"$0.00\"\r\n    if (currentValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return;\r\n    }\r\n\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = currentValue.includes('$');\r\n    // Get the cursor position\r\n    const caretPosition = event.target.selectionStart;\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = currentValue.slice(0, caretPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign, adjust the cursor position\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign) {\r\n      // Find the index of \"$\" sign\r\n      const dollarSignIndex = currentValue.indexOf('$');\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(dollarSignIndex + 1, dollarSignIndex + 1);\r\n    }\r\n  }\r\n\r\n   setCurrencyFormat(controls) {\r\n    const value = controls.value;\r\n    let inputValue = value;\r\n    if(inputValue.toString().substring(1,2) == \"$\")\r\n    inputValue = `${inputValue.slice(1)}`;\r\n    controls.setValue(inputValue);\r\n  }\r\n\r\n\r\n  numberOnly(event): boolean {\r\n    const inputValue = event.target.value;\r\n    const charCode = (event.which) ? event.which : event.keyCode;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    // Check if the input value is \"$0.00\"\r\n    if (charCode == 45) {\r\n      return false;\r\n    }\r\n    if (currentSelectionLength === inputValue.length) {\r\n      return true;\r\n    }\r\n    if (inputValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return true; // Allow further input\r\n    }\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = inputValue.includes('$');\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = inputValue.slice(0, currentCursorPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign and \"$\" sign is present, prevent input\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign && charCode !== 46 && (charCode < 48 || charCode > 57)) {\r\n      return false;\r\n    }\r\n    // If the entered character is a dot and there's already a dot in the input, prevent input\r\n    if (charCode == 46 && inputValue.includes('.') && inputValue.indexOf('.') !== currentCursorPosition) {\r\n      return false;\r\n    }\r\n    if (charCode > 31 && (charCode < 46 || charCode > 57 || charCode === 47)) {\r\n      return false;\r\n    }\r\n    return true; // Allow input\r\n  }\r\n\r\n   getCCCredentials() {\r\n    this.paymentService.getCCCredentials(this.marketId).subscribe((res) => {\r\n      if (res !== null) {\r\n        this.paymentGatewayCredentials = res.GatewayDetails ? JSON.parse(res.GatewayDetails) : null;\r\n        this.processCreditCardOnline = res.ProcessCreditCardOnline;\r\n      }\r\n    })\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.applyCCCharge = res.ApplyCcporcessingFeePercentage;\r\n        this.CcfeeinPercentage = res.CcfeeinPercentage;\r\n        this.AllowPartialPay = res.AllowPartialPay;             \r\n        this.allowWeeklyRentalRenewal = res.AllowRenewalsMonthly;\r\n        this.allowMonthlyRentalRenewal = res.AllowRenewalsMonthly;\r\n        this.allowOtherItemRenewal = res.AllowRenewingOtherItems;\r\n        this.applyRenewalFee = res.ApplyBookingFee;\r\n        this.bookingRenewalFeeId = res.ApplyBookingFeeId;\r\n        if (this.bookingRenewalFeeId) {\r\n          this.subscriptions.push(this.rentalService.getBookingRenewalFeeById(this.marketId, this.bookingRenewalFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.renewalFeeAmount = (this.rentalType == 2 ? resFee.OtherItemMonthlyCharge :\r\n                this.rentalType == 3 ? resFee.OtherItemWeeklyCharge : 0) ?? 0;\r\n            }\r\n          }));\r\n        }\r\n        this.bookingDetailsForm.get('paymentAmount').enable();\r\n        if (!this.AllowPartialPay) {\r\n          this.bookingDetailsForm.get('paymentAmount').disable();\r\n          this.bookingDetailsForm.patchValue({\r\n            paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n            totalPayment: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n          })\r\n        }\r\n        this.paymentAmount =  this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n        const creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (this.applyCCCharge && creditCardAmount > 0) {\r\n          this.calculateConvenienceFee();\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  calculateConvenienceFee() {\r\n    var convenienceFee = 0;\r\n    var creditCardAmount = this.bookingDetailsForm.get('paymentAmount').value.toString().includes('(') && this.bookingDetailsForm.get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalrentalCharge = this.bookingDetailsForm.get('rentalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('rentalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('rentalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var otherRentalCharge = this.bookingDetailsForm.get('otherCharge').value.toString().includes('(') && this.bookingDetailsForm.get('otherCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('otherCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var renewalFee = this.bookingDetailsForm.get('additionalCharge').value.toString().includes('(') && this.bookingDetailsForm.get('additionalCharge').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('additionalCharge').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue + totalrentalCharge + otherRentalCharge;\r\n    if(totalDue > 0){\r\n      totalDue = totalDue + renewalFee;\r\n    }\r\n    else{\r\n      renewalFee = 0;\r\n    }\r\n    if (creditCardAmount > 0) {\r\n      var convenienceFee = creditCardAmount * ((this.CcfeeinPercentage) / 100);\r\n      totalDue += convenienceFee;\r\n      this.creditCardAmount += convenienceFee;\r\n    }\r\n    var totalAmount = 0;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    const balanceAmount = totalDue - totalAmount;\r\n\r\n    this.bookingDetailsForm.patchValue({\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),     \r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString()),\r\n      totalCharge: this.customCurrency.transform(totalDue.toString()),\r\n    })\r\n    this.paymentAmount =  this.bookingDetailsForm.get('totalPayment').value.toString().includes('(') && this.bookingDetailsForm.get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.bookingDetailsForm.get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n  }\r\n\r\n  getRentalPaymentSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.rentalService.getRentalSettings(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.ResaleNumberRequired = res.ResaleNumberRequired;\r\n        this.DaysSellWithoutResaleNumber = res.DaysSellWithoutResaleNumber;\r\n        this.BusinessLicenseNumberRequired = res.BusinessLicenseNumberRequired;\r\n        this.DaysSellWithoutBusiLicNumber = res.DaysSellWithoutBusiLicNumber;\r\n        this.MonthlyBookingEndDate = res.MonthlyBookingEndDate;\r\n        this.masterRentChargeforResOtherItems = res.MasterChargeForOtherChargeRenewal;\r\n        this.secondTaxName = res.SecondTaxName ? res.SecondTaxName: \"Sec Level Tax\";\r\n      }\r\n    });\r\n  }\r\n\r\n  updateRentalRecord(record) {\r\n    if (record.Reservation && this.allowMonthlyRentalRenewal) {\r\n      const rentEndPeriodIndex = this.monthlyMarketDays.findIndex(e => e.RentalMonths == record.RentEndPeriod);\r\n      const renewalStartMonth = this.monthlyMarketDays[rentEndPeriodIndex +1].RentalMonths\r\n      record.BookingCanExtend = true;\r\n      record.RenewalStartMonth =renewalStartMonth\r\n      record.MonthlyRenewalMonth = renewalStartMonth;\r\n      record.RentEndPeriodIndex =rentEndPeriodIndex\r\n      this.extendMonthlyRental(record);\r\n    }\r\n    else{\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      record.MonthlyRenewalMonth = record.RentalMonth;\r\n      this.totalRentalCharge -= record.Rent.toString().includes('(') && record.Rent.toString().includes(')') ? -1 * parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.Rent = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  extendMonthlyRental(extendRentalRecord) {\r\n    const extendedRentalEndDates =extendRentalRecord.MonthlyRenewalMonth;\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you wish to extend the bookings till ` + extendedRentalEndDates + '? Please note that the extended period cannot be cancelled',\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then(async (result) => {\r\n      if (result.value) {\r\n            var rentalDates = [];\r\n            let noResale = true;\r\n            const vendorRentalDays = [];\r\n            var  marketDayCountForResale = 0 \r\n            if ((this.ResaleNumberRequired && !this.exemptResale) || (this.BusinessLicenseNumberRequired)) {\r\n              var rentalstartDate = \"\";\r\n              var selectedBoothRecord = this.selectedMonthlyBooths.filter(e => e.NewBooth == true || e.ExtendRental == true);\r\n              if (selectedBoothRecord.length > 0) {\r\n                selectedBoothRecord.forEach(record => {\r\n                  this.selectedMarketDays.map(el => {\r\n                    const startDate = new Date(record.RentalStartDate);\r\n                    const endDate = new Date(record.RentalEndDate);\r\n                    const selectedDayOfWeek = el - 1;\r\n                    let currentDay = new Date(startDate);\r\n                   while (currentDay <= endDate) {                  \r\n                      if (currentDay.getDay() === selectedDayOfWeek) {\r\n                        if (!rentalstartDate) {\r\n                          rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                        }\r\n                        rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                      }\r\n                      currentDay.setDate(currentDay.getDate() + 1);\r\n                    }\r\n\r\n                    const compareDates = (a: DateString, b: DateString): number => {\r\n                      const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                      return dateA - dateB;\r\n                    };\r\n                    const sortedDates = rentalDates.sort(compareDates);\r\n                  });\r\n                });    \r\n              }\r\n        \r\n              if (extendRentalRecord.MonthlyRentalId != 0)\r\n                var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n                  && e.BoothNumber == extendRentalRecord.BoothNumber && e.MonthlyRentalId == extendRentalRecord.MonthlyRentalId);\r\n              else\r\n                var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n                  && e.BoothNumber == extendRentalRecord.BoothNumber);\r\n          \r\n              if (recordExist != -1) {            \r\n                var rentalstartDate = \"\";\r\n                for(const el of this.selectedMarketDays){\r\n                  const selectedDayOfWeek = el - 1;\r\n                  const startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n                  const endMonth = extendRentalRecord.MonthlyRenewalMonth;\r\n                  const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                  const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                  var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n                  if (this.MonthlyBookingEndDate) {\r\n                    const rentalEndDateYear = endDate.getFullYear();\r\n                    const rentalEndDateMonth = endDate.getMonth() + 1;\r\n                    const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n                    endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n                  }\r\n                  let currentDay = new Date(startDate);\r\n                  while (currentDay <= endDate) {                   \r\n                    if (currentDay.getDay() === selectedDayOfWeek) {\r\n                      rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n                    }\r\n                    currentDay.setDate(currentDay.getDate() + 1);\r\n                  }\r\n                 }\r\n              }\r\n        \r\n              rentalDates.map(date => {\r\n                const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n                const dateExist = vendorRentalDays.find(el => {\r\n                  const rentalDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                  return rentalDateString === targetDateString;\r\n                });\r\n                if (!dateExist) {\r\n                  const formattedDate = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n                  vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                  marketDayCountForResale += 1;\r\n                  if (marketDayCountForResale > this.DaysSellWithoutResaleNumber) {\r\n                    return; // exits the forEach loop when the condition is met\r\n                  }\r\n                }\r\n              });\r\n        \r\n              const obj = {\r\n                VendorID: this.vendorId,\r\n                VendorRentalDate: new Date()\r\n              };\r\n        \r\n              this.subscriptions.push(this.rentalService.getVendorRentalDays(obj).subscribe((res: any[]) => {\r\n                  if (marketDayCountForResale <= this.DaysSellWithoutResaleNumber || marketDayCountForResale <= this.DaysSellWithoutBusiLicNumber) {\r\n                  if (res && res.length > 0) {\r\n                    res.forEach(el => {\r\n                      const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                      const dateExist = vendorRentalDays.find(data => {\r\n                        const rentalDateString = this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\");\r\n                        return rentalDateString === targetDateString;\r\n                      });\r\n                      if (!dateExist) {\r\n                        const formattedDate = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n                        vendorRentalDays.push({ VendorRentalDate: formattedDate });\r\n                        marketDayCountForResale += 1;\r\n                      }\r\n                    });\r\n                  }\r\n                }\r\n                if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n                  const modal = this.modalResaleNo.nativeElement;\r\n                  modal.classList.add('show');\r\n                  if (modal.classList.contains('show')) {\r\n                    modal.style.display = 'block';\r\n                  }\r\n                  noResale = false;\r\n                }\r\n                else if (this.BusinessLicenseNumberRequired && marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n                  if (!this.businessLicenseNumber) {\r\n                    Swal.fire({\r\n                      title: $localize`Confirm`,\r\n                      text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n                      icon: \"question\",\r\n                      showCancelButton: true,\r\n                      confirmButtonText: $localize`Yes`,\r\n                      cancelButtonText: $localize`No`,\r\n                    }).then((result) => {\r\n                      if (result.value) {\r\n                        this.proceedExtendingRental(extendRentalRecord);\r\n                      }\r\n                      else {\r\n                        //this.refreshAddBooth();\r\n                      }\r\n                    });\r\n                  }\r\n                  else {\r\n                    if (!this.businessLicenseExpiryDate) {\r\n                      Swal.fire({\r\n                        title: $localize`Confirm`,\r\n                        text: $localize`Business License expiry date is not provided! Do you want to continue without that?`,\r\n                        icon: \"question\",\r\n                        showCancelButton: true,\r\n                        confirmButtonText: $localize`Yes`,\r\n                        cancelButtonText: $localize`No`,\r\n                      }).then((result) => {\r\n                        if (result.value) {\r\n                          this.proceedExtendingRental(extendRentalRecord);\r\n                        }\r\n                        else {\r\n                         // this.refreshAddBooth();\r\n                        }\r\n                      });\r\n                    }\r\n                    else {\r\n                      if (new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n                        Swal.fire({\r\n                          title: $localize`Confirm`,\r\n                          text: $localize`Business License is expired! Do you want to continue?`,\r\n                          icon: \"question\",\r\n                          showCancelButton: true,\r\n                          confirmButtonText: $localize`Yes`,\r\n                          cancelButtonText: $localize`No`,\r\n                        }).then((result) => {\r\n                          if (result.value) {\r\n                            this.proceedExtendingRental(extendRentalRecord);\r\n                          }\r\n                          else {\r\n                           // this.refreshAddBooth();\r\n                          }\r\n                        });\r\n                      }\r\n                      else {\r\n                        this.proceedExtendingRental(extendRentalRecord);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n                else {\r\n                  noResale = true;\r\n                  this.proceedExtendingRental(extendRentalRecord);\r\n                }\r\n              }));\r\n            } else {\r\n              this.proceedExtendingRental(extendRentalRecord);\r\n            }\r\n      }\r\n    });\r\n  }\r\n\r\n  async proceedExtendingRental(extendRentalRecord) {\r\n    if (extendRentalRecord.MonthlyRentalId != 0)\r\n      var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber && e.MonthlyRentalId == extendRentalRecord.MonthlyRentalId);\r\n    else\r\n      var recordExist = this.selectedMonthlyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber && e.RentalMarketDay == extendRentalRecord.RentalMarketDay);\r\n\r\n    if (recordExist != -1) {\r\n      if (!this.selectedMonthlyBooths[recordExist].Drop && this.selectedMonthlyBooths[recordExist].Reservation && this.allowMonthlyRentalRenewal) {\r\n        const rentalDates = [];\r\n        var currentMonthRentalDates = [];\r\n        var rentalstartDate;\r\n        var marketDays = 0;\r\n        var marketDay;\r\n        \r\n        if (this.selectedMonthlyBooths[recordExist].Sunday == true) {\r\n          marketDay = 'Sun'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Monday == true) {\r\n          marketDay = 'Mon'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Tuesday == true) {\r\n          marketDay = 'Tue'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Wednesday == true) {\r\n          marketDay = 'Wed'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Thursday == true) {\r\n          marketDay = 'Thu'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Friday == true) {\r\n          marketDay = 'Fri'\r\n        }\r\n        else if (this.selectedMonthlyBooths[recordExist].Saturday == true) {\r\n          marketDay = 'Sat'\r\n        }\r\n      \r\n        for (const el of this.selectedMarketDays) {\r\n          const selectedDayOfWeek = el - 1;\r\n          var endDateYearMonth;\r\n          const currentDate = new Date();\r\n          const currentYear = currentDate.getFullYear();\r\n          const currentMonth = currentDate.getMonth();\r\n          const currentYearMonth = `${currentYear}${(currentMonth + 1) < 10 ? '0' : ''}${(currentMonth + 1)}`;\r\n          var startDate = new Date(this.selectedMonthlyBooths[recordExist].RentalStartDate);\r\n          const endMonth = extendRentalRecord.MonthlyRenewalMonth;\r\n          const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n          const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n          var endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n          if (this.MonthlyBookingEndDate) {\r\n            const rentalEndDateYear = endDate.getFullYear();\r\n            const rentalEndDateMonth = endDate.getMonth() + 1;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            endDate = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n            endDateYearMonth = rentalEndDateYearMonth;\r\n\r\n            const rentalStartDate = new Date(startDate);\r\n            var previousMonth = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getMonth() + 1;\r\n            var PreviousMonthYear = new Date(rentalStartDate.setMonth(rentalStartDate.getMonth() - 1)).getFullYear();\r\n            const PreviousMonthYearAndMonth = `${PreviousMonthYear}${previousMonth < 10 ? '0' : ''}${previousMonth}`;\r\n            // if (PreviousMonthYearAndMonth >= currentYearMonth) {\r\n            const monthEndDate = await this.getMonthEndingDateFromSetting(PreviousMonthYearAndMonth);\r\n            const dateDiff = this.getDaysDifference(monthEndDate, new Date(startDate)); //calculates the diff between current month start date and previous monthend date     \r\n            if (dateDiff <= 7 && new Date(monthEndDate) < startDate) {\r\n              if (new Date() > new Date(monthEndDate)) {\r\n                startDate = new Date();\r\n              }\r\n              else {\r\n                startDate = new Date(monthEndDate.setDate(monthEndDate.getDate() + 1));\r\n              }\r\n            }\r\n            // }\r\n          }\r\n          var previousRentalYearMonth;\r\n          var currentMonthEnd = new Date(startDate.getFullYear(), startDate.getMonth() + 1, 0);\r\n          if (this.MonthlyBookingEndDate) {\r\n            const currentStartMonth = this.selectedMonthlyBooths[recordExist].RentStartPeriod;\r\n            const [startMonthDate, startMonthYear] = currentStartMonth.split(' ');\r\n            const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n            var currentMonthEnd = new Date(startMonthYear, startMonthIndex + 1, 0);\r\n            const rentalEndDateYear = currentMonthEnd.getFullYear();\r\n            const rentalEndDateMonth = currentMonthEnd.getMonth() + 1;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            previousRentalYearMonth = rentalEndDateYearMonth;\r\n            if (endDateYearMonth == rentalEndDateYearMonth)\r\n              currentMonthEnd = await this.getMonthEndingDateFromSetting(rentalEndDateYearMonth);\r\n          }\r\n\r\n          let currentDay = new Date(startDate);\r\n          while (currentDay <= endDate) {\r\n            if (currentDay.getDay() === selectedDayOfWeek) {\r\n              if (!rentalstartDate) {\r\n                rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n              }\r\n              marketDays += 1;\r\n              rentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n            }\r\n            currentDay.setDate(currentDay.getDate() + 1);\r\n          }\r\n\r\n          if (this.MonthlyBookingEndDate) {\r\n            currentDay = new Date(startDate);\r\n            while (currentDay <= currentMonthEnd) {\r\n              if (currentDay.getDay() === selectedDayOfWeek) {\r\n                if (!rentalstartDate) {\r\n                  rentalstartDate = this.datePipe.transform(new Date(currentDay), 'MMM d, y');\r\n                }\r\n                //marketDays += 1;\r\n                currentMonthRentalDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n              }\r\n              currentDay.setDate(currentDay.getDate() + 1);\r\n            }\r\n          }\r\n        }\r\n\r\n        const compareDates = (a: DateString, b: DateString): number => {\r\n          const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n          return dateA - dateB;\r\n        };\r\n        const sortedDates = rentalDates.sort(compareDates);\r\n\r\n        if (this.MonthlyBookingEndDate) {\r\n          const compareCurrentMonthDates = (a: DateString, b: DateString): number => {\r\n            const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n            return dateA - dateB;\r\n          };\r\n          const currentMonthSortedDates = currentMonthRentalDates.sort(compareCurrentMonthDates);\r\n        }\r\n        else {\r\n          currentMonthRentalDates = rentalDates;\r\n        }\r\n\r\n        var allRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n        var currentRentedEndDate = new Date(this.selectedMonthlyBooths[recordExist].RentalEndDate);\r\n        const filteredRentalDates = allRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n        var obj1 = {\r\n          RentalDates: filteredRentalDates,\r\n          BoothNumber: this.selectedMonthlyBooths[recordExist].BoothNumber\r\n        }\r\n\r\n        this.subscriptions.push(this.rentalService.checkRentalExits(this.marketId, obj1).subscribe((res) => {\r\n          if (!res.Success) {\r\n            var RentAmount = this.selectedMonthlyBooths[recordExist].Rent;\r\n            var SalesTax = this.selectedMonthlyBooths[recordExist].SalesTax;\r\n            var CityTax = this.selectedMonthlyBooths[recordExist].CityTax;          \r\n            var JanRentAmount = this.selectedMonthlyBooths[recordExist].January ?? 0;\r\n            var FebRentAmount = this.selectedMonthlyBooths[recordExist].February ?? 0;\r\n            var MarRentAmount = this.selectedMonthlyBooths[recordExist].March ?? 0;\r\n            var AprRentAmount = this.selectedMonthlyBooths[recordExist].April ?? 0;\r\n            var MayRentAmount = this.selectedMonthlyBooths[recordExist].May ?? 0;\r\n            var JunRentAmount = this.selectedMonthlyBooths[recordExist].June ?? 0;\r\n            var JulRentAmount = this.selectedMonthlyBooths[recordExist].July ?? 0;\r\n            var AugRentAmount = this.selectedMonthlyBooths[recordExist].August ?? 0;\r\n            var SepRentAmount = this.selectedMonthlyBooths[recordExist].September ?? 0;\r\n            var OctRentAmount = this.selectedMonthlyBooths[recordExist].October ?? 0;\r\n            var NovRentAmount = this.selectedMonthlyBooths[recordExist].November ?? 0;\r\n            var DecRentAmount = this.selectedMonthlyBooths[recordExist].December ?? 0;\r\n\r\n            this.totalRentalCharge -= RentAmount.toString().includes('(') && RentAmount.toString().includes(')') ? -1 * parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= SalesTax.toString().includes('(') && SalesTax.toString().includes(')') ? -1 * parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= CityTax.toString().includes('(') && CityTax.toString().includes(')') ? -1 * parseFloat(CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.bookingDetailsForm.patchValue({\r\n              rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n\r\n            var extendRentalStartPeriod;\r\n            if (!this.selectedMonthlyBooths[recordExist].NewBooth && this.selectedMonthlyBooths[recordExist].Status != \"R\") {\r\n              extendRentalStartPeriod = new Date(this.selectedMonthlyBooths[recordExist].RentalSavedEndDate);\r\n              if (extendRentalStartPeriod.getDate() == 31) {\r\n                extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n              }\r\n              else {\r\n                extendRentalStartPeriod.setMonth(extendRentalStartPeriod.getMonth() + 1);\r\n              }\r\n              extendRentalStartPeriod.setDate(1);\r\n            }\r\n            else {\r\n              extendRentalStartPeriod = this.selectedMonthlyBooths[recordExist].RentalStartDate;\r\n            }\r\n            var obj = {\r\n              BoothTypeId: this.selectedMonthlyBooths[recordExist].BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n              RentalEndPeriod: new Date(rentalDates[rentalDates.length - 1].startDate),\r\n              PerDiemApplicable: this.selectedMonthlyBooths[recordExist].PerDiem,\r\n              RentalMarketDay : marketDay,\r\n              JanRent: JanRentAmount.toString().includes('(') && JanRentAmount.toString().includes(')') ? -1 * parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              FebRent: FebRentAmount.toString().includes('(') && FebRentAmount.toString().includes(')') ? -1 * parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MarRent: MarRentAmount.toString().includes('(') && MarRentAmount.toString().includes(')') ? -1 * parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AprRent: AprRentAmount.toString().includes('(') && AprRentAmount.toString().includes(')') ? -1 * parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MayRent: MayRentAmount.toString().includes('(') && MayRentAmount.toString().includes(')') ? -1 * parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JunRent: JunRentAmount.toString().includes('(') && JunRentAmount.toString().includes(')') ? -1 * parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JulRent: JulRentAmount.toString().includes('(') && JulRentAmount.toString().includes(')') ? -1 * parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AugRent: AugRentAmount.toString().includes('(') && AugRentAmount.toString().includes(')') ? -1 * parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              SepRent: SepRentAmount.toString().includes('(') && SepRentAmount.toString().includes(')') ? -1 * parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              OctRent: OctRentAmount.toString().includes('(') && OctRentAmount.toString().includes(')') ? -1 * parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              NovRent: NovRentAmount.toString().includes('(') && NovRentAmount.toString().includes(')') ? -1 * parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              DecRent: DecRentAmount.toString().includes('(') && DecRentAmount.toString().includes(')') ? -1 * parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n            }\r\n\r\n            this.subscriptions.push(this.rentalService.getBoothRentalMontlyCharges(this.marketId, obj).subscribe((res: any) => {\r\n              this.selectedMonthlyBooths[recordExist].RentEndPeriod = extendRentalRecord.MonthlyRenewalMonth;\r\n              this.selectedMonthlyBooths[recordExist].RentalEndDate = this.datePipe.transform(new Date(rentalDates[rentalDates.length - 1].startDate), 'MMM d, y');\r\n              this.selectedMonthlyBooths[recordExist].MktDays = marketDays;\r\n              this.selectedMonthlyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n              this.selectedMonthlyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n              this.selectedMonthlyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n              this.selectedMonthlyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n              this.selectedMonthlyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n              this.selectedMonthlyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n              this.selectedMonthlyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n              this.selectedMonthlyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n              this.selectedMonthlyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n              this.selectedMonthlyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n              this.selectedMonthlyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n              this.selectedMonthlyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n              this.selectedMonthlyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n              this.selectedMonthlyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n              this.selectedMonthlyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n              this.selectedMonthlyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n              this.selectedMonthlyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n              this.selectedMonthlyBooths[recordExist].StartDateList = currentMonthRentalDates;\r\n              this.selectedMonthlyBooths[recordExist].ExtendRental = true;\r\n              this.selectedMonthlyBooths[recordExist].AllRentalDates = rentalDates.map(el => new Date(el.startDate));\r\n\r\n              this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n              this.bookingDetailsForm.patchValue({\r\n                rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n                totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n              });\r\n              // this.getDiscounts();\r\n            }, err => {\r\n            }));\r\n          }\r\n          else {\r\n            Swal.fire({\r\n              title: $localize`Warning`,\r\n              text: $localize`Rental End Period cannot be extended further`,\r\n              icon: \"warning\",\r\n              confirmButtonText: $localize`Ok`,\r\n            });\r\n          }\r\n        }));\r\n      }\r\n      else {\r\n        this.selectedMonthlyBooths[recordExist].MonthlyRenewalMonth =  this.selectedMonthlyBooths[recordExist].RentEndPeriod;\r\n        this.selectedMonthlyBooths[recordExist].RenewalStartMonth = \"This booking cannot be extended further!\"\r\n        this.selectedMonthlyBooths[recordExist].BookingCanExtend = false;\r\n      }\r\n    }\r\n  }\r\n\r\n  closeResaleModal(){\r\n   // this.refreshAddBooth();\r\n    const modal = this.modalResaleNo.nativeElement;\r\n    if (modal.classList.contains('show')) {\r\n      modal.style.display = 'none';\r\n      modal.classList.remove('show');\r\n    }\r\n  }\r\n\r\n  resaleOptionValidation() {\r\n    this.exemptResaleReason = \"\";\r\n    this.resaleNo = \"\";\r\n  }\r\n\r\n  getWeeklyRental() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedWeeklyBooths = [];\r\n    var existingBooths = [];\r\n    const sub = this.rentalService.getWeeklyBookings(this.marketId,this.vendorId).subscribe((res: any[]) => {\r\n      if (res) {\r\n        existingBooths = res;\r\n        existingBooths.forEach((el) => {\r\n          var marketDay;\r\n          if (el.Sunday) {\r\n            marketDay = 'Sun'\r\n          }\r\n          else if (el.Monday) {\r\n            marketDay = 'Mon'\r\n          }\r\n          else if (el.Tuesday) {\r\n            marketDay = 'Tue'\r\n          }\r\n          else if (el.Wednesday) {\r\n            marketDay = 'Wed'\r\n          }\r\n          else if (el.Thursday) {\r\n            marketDay = 'Thu'\r\n          }\r\n          else if (el.Friday) {\r\n            marketDay = 'Fri'\r\n          }\r\n          else if (el.Saturday) {\r\n            marketDay = 'Sat'\r\n          }\r\n          \r\n          if (el.Status == \"R\") {\r\n            const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == rentalEndDate);\r\n            const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays\r\n            var obj = {\r\n              BoothTypeId: el.BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[0]),\r\n              RentalEndPeriod: new Date(this.weeklyMarketDays[0].RentalEndDays.split('-')[1]),\r\n              RentalMarketDay: marketDay\r\n            }\r\n            this.rentalService.getBoothRentalWeeklyCharges(this.marketId,obj).subscribe((res: any) => {\r\n              const ob = {\r\n                WeeklyRentalId: el.WeeklyRentalId,\r\n                BoothNumber: el.BoothNumber,\r\n                BoothType: el.BoothType,\r\n                BoothTypeId: el.BoothTypeId,\r\n                RentStartPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                CurrentRentStartPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                RentEndPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                CurrentRentEndPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                RentalSavedEndDate: this.weeklyMarketDays[0].RentalEndDays.split('-')[1],\r\n                Product: el.ProductId,\r\n                ProductName: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n                Rent: this.customCurrency.transform(res.Rent),\r\n                SalesTax: this.customCurrency.transform(res.SalesTax),\r\n                CityTax: this.customCurrency.transform(res.CityTax),\r\n                CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n                CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n                Sunday: el.Sunday,\r\n                Monday: el.Monday,\r\n                Tuesday: el.Tuesday,\r\n                Wednesday: el.Wednesday,\r\n                Thursday: el.Thursday,\r\n                Friday: el.Friday,\r\n                Saturday: el.Saturday,\r\n                Reservation: el.BoothReserved,\r\n                WeekDay: marketDay,\r\n                Drop: el.DoNotRenew,\r\n                January: this.customCurrency.transform(res.JanRent),\r\n                February: this.customCurrency.transform(res.FebRent),\r\n                March: this.customCurrency.transform(res.MarRent),\r\n                April: this.customCurrency.transform(res.AprRent),\r\n                May: this.customCurrency.transform(res.MayRent),\r\n                June: this.customCurrency.transform(res.JunRent),\r\n                July: this.customCurrency.transform(res.JulRent),\r\n                August: this.customCurrency.transform(res.AugRent),\r\n                September: this.customCurrency.transform(res.SepRent),\r\n                October: this.customCurrency.transform(res.OctRent),\r\n                November: this.customCurrency.transform(res.NovRent),\r\n                December: this.customCurrency.transform(res.DecRent),\r\n                JanuaryMonthPresent: res.JanuaryMonthPresent,\r\n                FebruaryMonthPresent: res.FebruaryMonthPresent,\r\n                MarchMonthPresent: res.MarchMonthPresent,\r\n                AprilMonthPresent: res.AprilMonthPresent,\r\n                MayMonthPresent: res.MayMonthPresent,\r\n                JuneMonthPresent: res.JuneMonthPresent,\r\n                JulyMonthPresent: res.JulyMonthPresent,\r\n                AugustMonthPresent: res.AugustMonthPresent,\r\n                SeptemberMonthPresent: res.SeptemberMonthPresent,\r\n                OctoberMonthPresent: res.OctoberMonthPresent,\r\n                NovemberMonthPresent: res.NovemberMonthPresent,\r\n                DecemberMonthPresent: res.DecemberMonthPresent,\r\n                DisableJanMonth: res.JanRent ? false : true,\r\n                DisableFebMonth: res.FebRent ? false : true,\r\n                DisableMarMonth: res.MarRent ? false : true,\r\n                DisableAprMonth: res.AprRent ? false : true,\r\n                DisableMayMonth: res.MayRent ? false : true,\r\n                DisableJunMonth: res.JunRent ? false : true,\r\n                DisableJulMonth: res.JulRent ? false : true,\r\n                DisableAugMonth: res.AugRent ? false : true,\r\n                DisableSepMonth: res.SepRent ? false : true,\r\n                DisableOctMonth: res.OctRent ? false : true,\r\n                DisableNovMonth: res.NovRent ? false : true,\r\n                DisableDecMonth: res.DecRent ? false : true,\r\n                Status: el.Status,\r\n                NewBooth: false,\r\n                BookingCanExtend: true,\r\n                RenewalStartWeek:renewalStartWeek,\r\n                CWRenewalWeek:this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays,\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n               this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n              this.bookingDetailsForm.patchValue({\r\n                rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n                totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n              });\r\n              this.selectedWeeklyBooths.push(ob);\r\n            });\r\n          }\r\n          else {\r\n            var JanuaryMonthPresent = false;\r\n            var FebruaryMonthPresent = false;\r\n            var MarchMonthPresent = false;\r\n            var AprilMonthPresent = false;\r\n            var MayMonthPresent = false;\r\n            var JuneMonthPresent = false;\r\n            var JulyMonthPresent = false;\r\n            var AugustMonthPresent = false;\r\n            var SeptemberMonthPresent = false;\r\n            var OctoberMonthPresent = false;\r\n            var NovemberMonthPresent = false;\r\n            var DecemberMonthPresent = false;\r\n\r\n            var rentalStartDateRecord = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalStartDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(el.RentalStartDate), 'MM/dd/yyyy')\r\n              && this.datePipe.transform(new Date(date.RentalStartDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(el.RentalStartDate), 'MM/dd/yyyy'))\r\n            if (rentalStartDateRecord.length > 0)\r\n              var rentalStartDate = rentalStartDateRecord[0].RentalStartDays;\r\n\r\n            var rentalEndDateRecord = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalEndDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(el.RentalEndDate), 'MM/dd/yyyy')\r\n              && this.datePipe.transform(new Date(date.RentalEndDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(el.RentalEndDate), 'MM/dd/yyyy'))\r\n            if (rentalEndDateRecord.length > 0)\r\n              var rentalEndDate = rentalEndDateRecord[0].RentalEndDays;\r\n\r\n            const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == rentalEndDate);\r\n            const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays\r\n\r\n            if (rentalStartDate && rentalEndDate) {\r\n              var month = this.datePipe.transform(rentalEndDate.split('-')[1], 'MMM');\r\n              switch (month.toLowerCase()) {\r\n                case \"jan\":\r\n                  JanuaryMonthPresent = true;\r\n                  break;\r\n                case \"feb\":\r\n                  FebruaryMonthPresent = true;\r\n                  break;\r\n                case \"mar\":\r\n                  MarchMonthPresent = true;\r\n                  break;\r\n                case \"apr\":\r\n                  AprilMonthPresent = true;\r\n                  break;\r\n                case \"may\":\r\n                  MayMonthPresent = true;\r\n                  break;\r\n                case \"jun\":\r\n                  JuneMonthPresent = true;\r\n                  break;\r\n                case \"jul\":\r\n                  JulyMonthPresent = true;\r\n                  break;\r\n                case \"aug\":\r\n                  AugustMonthPresent = true;\r\n                  break;\r\n                case \"sep\":\r\n                  SeptemberMonthPresent = true;\r\n                  break;\r\n                case \"oct\":\r\n                  OctoberMonthPresent = true;\r\n                  break;\r\n                case \"nov\":\r\n                  NovemberMonthPresent = true;\r\n                  break;\r\n                case \"dec\":\r\n                  DecemberMonthPresent = true;\r\n                  break;\r\n              }\r\n\r\n              const ob = {\r\n                WeeklyRentalId: el.WeeklyRentalId,\r\n                BoothNumber: el.BoothNumber,\r\n                BoothType: el.BoothType,\r\n                BoothTypeId: el.BoothTypeId,\r\n                RentStartPeriod: rentalStartDate,\r\n                RentEndPeriod: rentalEndDate,\r\n                CurrentRentStartPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                CurrentRentEndPeriod: this.weeklyMarketDays[0].RentalEndDays,\r\n                RentalSavedEndDate: rentalEndDate,\r\n                Product: el.ProductId,\r\n                ProductName: this.vendorProducts.filter(e=>e.ProductId == el.ProductId)[0]?.ProductName,\r\n                Rent: this.customCurrency.transform('0.00'),\r\n                SalesTax: this.customCurrency.transform('0.00'),\r\n                CityTax: this.customCurrency.transform('0.00'),\r\n                CurrentRent: this.customCurrency.transform(el.RentalCharge),\r\n                CurrentSalesTax: this.customCurrency.transform(el.SalesTax),\r\n                CurrentSecondTax: this.customCurrency.transform(el.SecLevelTax),\r\n                Sunday: el.Sunday,\r\n                Monday: el.Monday,\r\n                Tuesday: el.Tuesday,\r\n                Wednesday: el.Wednesday,\r\n                Thursday: el.Thursday,\r\n                Friday: el.Friday,\r\n                Saturday: el.Saturday,\r\n                WeekDay: marketDay,\r\n                Reservation: el.BoothReserved,\r\n                Drop: el.DoNotRenew,\r\n                January: this.customCurrency.transform('0.00'),\r\n                February: this.customCurrency.transform('0.00'),\r\n                March: this.customCurrency.transform('0.00'),\r\n                April: this.customCurrency.transform('0.00'),\r\n                May: this.customCurrency.transform('0.00'),\r\n                June: this.customCurrency.transform('0.00'),\r\n                July: this.customCurrency.transform('0.00'),\r\n                August: this.customCurrency.transform('0.00'),\r\n                September: this.customCurrency.transform('0.00'),\r\n                October: this.customCurrency.transform('0.00'),\r\n                November: this.customCurrency.transform('0.00'),\r\n                December: this.customCurrency.transform('0.00'),\r\n                NewBooth: false,\r\n                JanuaryMonthPresent: JanuaryMonthPresent,\r\n                FebruaryMonthPresent: FebruaryMonthPresent,\r\n                MarchMonthPresent: MarchMonthPresent,\r\n                AprilMonthPresent: AprilMonthPresent,\r\n                MayMonthPresent: MayMonthPresent,\r\n                JuneMonthPresent: JuneMonthPresent,\r\n                JulyMonthPresent: JulyMonthPresent,\r\n                AugustMonthPresent: AugustMonthPresent,\r\n                SeptemberMonthPresent: SeptemberMonthPresent,\r\n                OctoberMonthPresent: OctoberMonthPresent,\r\n                NovemberMonthPresent: NovemberMonthPresent,\r\n                DecemberMonthPresent: DecemberMonthPresent,\r\n                DisableJanMonth: true,\r\n                DisableFebMonth: true,\r\n                DisableMarMonth: true,\r\n                DisableAprMonth: true,\r\n                DisableMayMonth: true,\r\n                DisableJunMonth: true,\r\n                DisableJulMonth: true,\r\n                DisableAugMonth: true,\r\n                DisableSepMonth: true,\r\n                DisableOctMonth: true,\r\n                DisableNovMonth: true,\r\n                DisableDecMonth: true,\r\n                BookingCanExtend: true,\r\n                RenewalStartWeek:renewalStartWeek,\r\n                CWRenewalWeek:this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays,\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              this.selectedWeeklyBooths.push(ob);\r\n            }\r\n          }\r\n        });\r\n        this.loaderIcon = Promise.resolve(false);\r\n        this.handleWeeklyEndDateChange();\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  async handleWeeklyEndDateChange() {\r\n    this.renewAllBoothsFromGrid = true;\r\n    this.vendorRentalDays = [];\r\n    this.marketDayCountForResale = 0;\r\n\r\n    let rentalDates = this.calculateRentalDates();\r\n    await this.processVendorRentalDays(rentalDates);\r\n  }\r\n\r\n  calculateRentalDates() {\r\n    let rentalDates = [];\r\n    const selectedBooths = this.selectedWeeklyBooths.filter(e => e.NewBooth || e.ExtendRental);\r\n  \r\n    selectedBooths.forEach(record => {\r\n      const selectedDayOfWeek = this.getSelectedDayOfWeek(record);\r\n      let currentDay = new Date(record.RentalStartDate);\r\n      const endDate = new Date(record.RentalEndDate);\r\n  \r\n      while (currentDay <= endDate) {\r\n        if (currentDay.getDay() === selectedDayOfWeek) {\r\n          rentalDates.push({ startDate: this.datePipe.transform(currentDay, 'MMM d, y') });\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n    });\r\n  \r\n    return rentalDates;\r\n  }\r\n\r\n  getSelectedDayOfWeek(record) {\r\n    return record.Sunday ? 0 :\r\n           record.Monday ? 1 :\r\n           record.Tuesday ? 2 :\r\n           record.Wednesday ? 3 :\r\n           record.Thursday ? 4 :\r\n           record.Friday ? 5 :\r\n           record.Saturday ? 6 : null;\r\n  }\r\n\r\n  async processVendorRentalDays(rentalDates) {\r\n    rentalDates.forEach(date => {\r\n      const targetDateString = this.datePipe.transform(date.startDate, \"MM/dd/yyyy\");\r\n      if (!this.vendorRentalDays.some(el => this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\") === targetDateString)) {\r\n        this.vendorRentalDays.push({ VendorRentalDate: targetDateString });\r\n        this.marketDayCountForResale += 1;\r\n        if (this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n          return;\r\n        }\r\n      }\r\n    });\r\n  \r\n    const obj = { VendorID: this.vendorId, VendorRentalDate: new Date() };\r\n    const res = await this.rentalService.getVendorRentalDays(obj).toPromise();\r\n  \r\n    if (res && res.length > 0) {\r\n      res.forEach(el => {\r\n        const targetDateString = this.datePipe.transform(el.VendorRentalDate, \"MM/dd/yyyy\");\r\n        if (!this.vendorRentalDays.some(data => this.datePipe.transform(data.VendorRentalDate, \"MM/dd/yyyy\") === targetDateString)) {\r\n          this.vendorRentalDays.push({ VendorRentalDate: targetDateString });\r\n          this.marketDayCountForResale += 1;\r\n        }\r\n      });\r\n    }\r\n  \r\n    await this.checkResaleAndBusinessLicense();\r\n  }\r\n\r\n  showModal(modal) {\r\n    modal.classList.add('show');\r\n    modal.style.display = 'block';\r\n  }\r\n\r\n  async checkResaleAndBusinessLicense() {\r\n    if (this.ResaleNumberRequired && !this.exemptResale && !this.resaleNo && this.marketDayCountForResale > this.DaysSellWithoutResaleNumber && !this.resaleOptionSelected) {\r\n      this.showModal(this.modalResaleNo.nativeElement);\r\n    } else if (this.BusinessLicenseNumberRequired && this.marketDayCountForResale > this.DaysSellWithoutBusiLicNumber) {\r\n      if (!this.businessLicenseNumber) {\r\n        await this.promptBusinessLicense();\r\n      } else if (!this.businessLicenseExpiryDate || new Date(this.businessLicenseExpiryDate) < new Date()) {\r\n        await this.promptExpiredBusinessLicense();\r\n      } else {\r\n        this.renewWeeklyAllBooths();\r\n      }\r\n    } else {\r\n      this.renewWeeklyAllBooths();\r\n    }\r\n  }\r\n\r\n  async promptBusinessLicense() {\r\n    const result = await Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Business License Number is required! Do you want to continue without Business License Number?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    });\r\n  \r\n    if (result.value) {\r\n      this.renewWeeklyAllBooths();\r\n    }\r\n  }  \r\n\r\n  async promptExpiredBusinessLicense() {\r\n    const result = await Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Business License is expired! Do you want to continue?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    });\r\n  \r\n    if (result.value) {\r\n      this.renewWeeklyAllBooths();\r\n    }\r\n  }\r\n\r\n  async renewWeeklyAllBooths(){\r\n    var nonAvailableBooths = [];\r\n    for (const item of this.selectedWeeklyBooths) {\r\n      if (new Date(item.RentEndPeriod.split('-')[0]) < new Date(item.CWRenewalWeek.split('-')[0])\r\n        && !item.Drop && item.Reservation) {\r\n        if (item.WeeklyRentalId != 0)\r\n          var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == item.RentStartPeriod && e.RentEndPeriod == item.RentEndPeriod\r\n            && e.BoothNumber == item.BoothNumber && e.WeeklyRentalId == item.WeeklyRentalId);\r\n        else\r\n          var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == item.RentStartPeriod && e.RentEndPeriod == item.RentEndPeriod\r\n            && e.BoothNumber == item.BoothNumber && e.RentalMarketDay == item.RentalMarketDay);\r\n\r\n        if (recordExist != -1) {\r\n          var marketDay;\r\n          var selectedDayOfWeek;\r\n          if (this.selectedWeeklyBooths[recordExist].Sunday == true) {\r\n            marketDay = 'Sun'\r\n            selectedDayOfWeek = 0;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Monday == true) {\r\n            marketDay = 'Mon'\r\n            selectedDayOfWeek = 1;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Tuesday == true) {\r\n            marketDay = 'Tue'\r\n            selectedDayOfWeek = 2;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Wednesday == true) {\r\n            marketDay = 'Wed'\r\n            selectedDayOfWeek = 3;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Thursday == true) {\r\n            marketDay = 'Thu'\r\n            selectedDayOfWeek = 4;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Friday == true) {\r\n            marketDay = 'Fri'\r\n            selectedDayOfWeek = 5;\r\n          }\r\n          else if (this.selectedWeeklyBooths[recordExist].Saturday == true) {\r\n            marketDay = 'Sat'\r\n            selectedDayOfWeek = 6;\r\n          }\r\n\r\n          var selectedRentalDates = [];\r\n          const startDate = new Date(this.selectedWeeklyBooths[recordExist].RentStartPeriod.split('-')[0]);\r\n          const endDate = new Date(item.CWRenewalWeek.split(\"-\")[1]);\r\n          while (new Date(startDate) <= new Date(endDate)) {\r\n            if (startDate.getDay() === selectedDayOfWeek) {\r\n              selectedRentalDates.push(new Date(startDate));\r\n            }\r\n            startDate.setDate(startDate.getDate() + 1);\r\n          }\r\n\r\n          var currentRentedEndDate = new Date(this.selectedWeeklyBooths[recordExist].RentEndPeriod.split(\"-\")[1]);\r\n          const filteredRentalDates = selectedRentalDates.filter(rentalDate => rentalDate > currentRentedEndDate);\r\n          var obj1 = {\r\n            RentalDates: filteredRentalDates,\r\n            BoothNumber: this.selectedWeeklyBooths[recordExist].BoothNumber\r\n          }\r\n\r\n          const res = await this.rentalService.checkRentalExits(this.marketId,obj1).toPromise();\r\n          if (!res.Success) {\r\n            var RentAmount = this.selectedWeeklyBooths[recordExist].Rent;\r\n            var SalesTax = this.selectedWeeklyBooths[recordExist].SalesTax;\r\n            var CityTax = this.selectedWeeklyBooths[recordExist].CityTax;\r\n            var JanRentAmount = this.selectedWeeklyBooths[recordExist].January ?? 0;\r\n            var FebRentAmount = this.selectedWeeklyBooths[recordExist].February ?? 0;\r\n            var MarRentAmount = this.selectedWeeklyBooths[recordExist].March ?? 0;\r\n            var AprRentAmount = this.selectedWeeklyBooths[recordExist].April ?? 0;\r\n            var MayRentAmount = this.selectedWeeklyBooths[recordExist].May ?? 0;\r\n            var JunRentAmount = this.selectedWeeklyBooths[recordExist].June ?? 0;\r\n            var JulRentAmount = this.selectedWeeklyBooths[recordExist].July ?? 0;\r\n            var AugRentAmount = this.selectedWeeklyBooths[recordExist].August ?? 0;\r\n            var SepRentAmount = this.selectedWeeklyBooths[recordExist].September ?? 0;\r\n            var OctRentAmount = this.selectedWeeklyBooths[recordExist].October ?? 0;\r\n            var NovRentAmount = this.selectedWeeklyBooths[recordExist].November ?? 0;\r\n            var DecRentAmount = this.selectedWeeklyBooths[recordExist].December ?? 0;\r\n\r\n            this.totalRentalCharge -= RentAmount.toString().includes('(') && RentAmount.toString().includes(')') ? -1 * parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSalesTax -= SalesTax.toString().includes('(') && SalesTax.toString().includes(')') ? -1 * parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalSecondLeveltax -= CityTax.toString().includes('(') && CityTax.toString().includes(')') ? -1 * parseFloat(CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n            this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n            this.bookingDetailsForm.patchValue({\r\n              rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n              totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n              totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n              totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n            });\r\n\r\n            var extendRentalStartPeriod;\r\n            if (!this.selectedWeeklyBooths[recordExist].NewBooth && this.selectedWeeklyBooths[recordExist].Status != \"R\") {\r\n              extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentalSavedEndDate.split(\"-\")[1])\r\n              extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n            }\r\n            else {\r\n              extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentStartPeriod.split(\"-\")[0]);\r\n            }\r\n\r\n            var obj = {\r\n              BoothTypeId: this.selectedWeeklyBooths[recordExist].BoothTypeId,\r\n              VendorId: this.vendorId,\r\n              RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n              RentalMarketDay: marketDay,\r\n              RentalEndPeriod: new Date(item.CWRenewalWeek.split(\"-\")[1]),\r\n              JanRent: JanRentAmount.toString().includes('(') && JanRentAmount.toString().includes(')') ? -1 * parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JanRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              FebRent: FebRentAmount.toString().includes('(') && FebRentAmount.toString().includes(')') ? -1 * parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(FebRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MarRent: MarRentAmount.toString().includes('(') && MarRentAmount.toString().includes(')') ? -1 * parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MarRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AprRent: AprRentAmount.toString().includes('(') && AprRentAmount.toString().includes(')') ? -1 * parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AprRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              MayRent: MayRentAmount.toString().includes('(') && MayRentAmount.toString().includes(')') ? -1 * parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(MayRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JunRent: JunRentAmount.toString().includes('(') && JunRentAmount.toString().includes(')') ? -1 * parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JunRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              JulRent: JulRentAmount.toString().includes('(') && JulRentAmount.toString().includes(')') ? -1 * parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(JulRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              AugRent: AugRentAmount.toString().includes('(') && AugRentAmount.toString().includes(')') ? -1 * parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(AugRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              SepRent: SepRentAmount.toString().includes('(') && SepRentAmount.toString().includes(')') ? -1 * parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SepRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              OctRent: OctRentAmount.toString().includes('(') && OctRentAmount.toString().includes(')') ? -1 * parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(OctRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              NovRent: NovRentAmount.toString().includes('(') && NovRentAmount.toString().includes(')') ? -1 * parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(NovRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n              DecRent: DecRentAmount.toString().includes('(') && DecRentAmount.toString().includes(')') ? -1 * parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(DecRentAmount.toString().replace(/[^0-9.-]/g, '')),\r\n            }\r\n            const res = await this.rentalService.getBoothRentalWeeklyCharges(this.marketId, obj).toPromise();         \r\n              this.selectedWeeklyBooths[recordExist].RentEndPeriod = item.CWRenewalWeek;\r\n              this.selectedWeeklyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n              this.selectedWeeklyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n              this.selectedWeeklyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n              this.selectedWeeklyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n              this.selectedWeeklyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n              this.selectedWeeklyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n              this.selectedWeeklyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n              this.selectedWeeklyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n              this.selectedWeeklyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n              this.selectedWeeklyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n              this.selectedWeeklyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n              this.selectedWeeklyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n              this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n              this.selectedWeeklyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n              this.selectedWeeklyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n              this.selectedWeeklyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n              this.selectedWeeklyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0? false : true;\r\n              this.selectedWeeklyBooths[recordExist].ExtendRental = true;\r\n              this.selectedWeeklyBooths[recordExist].TaxModel = res.TaxModel;\r\n\r\n              this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n              this.bookingDetailsForm.patchValue({\r\n                rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n                totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n              });\r\n          }\r\n          else {\r\n            nonAvailableBooths.push(this.selectedWeeklyBooths[recordExist].BoothNumber);\r\n          } \r\n        }\r\n      }\r\n    }\r\n\r\n    if (nonAvailableBooths.length > 0) {\r\n      const nonAvailableBoothsString = nonAvailableBooths.join(', ');\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Cannot be renewed further as the booth number ` + nonAvailableBoothsString + ` is not available`,\r\n        icon: \"info\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  getWeeklyOtherRentals(){\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.selectedOtherItems = [];\r\n    const weekStartDate = this.weeklyMarketDays[0].RentalStartDays.split('-')[0];\r\n    const weekEndDate =   this.weeklyMarketDays[0].RentalStartDays.split('-')[1];    \r\n    const sub = this.rentalService.getWeeklyOtherRentals(this.marketId,this.vendorId).subscribe((res: any[]) => {\r\n      this.allrentedOtherItems = res;\r\n      if (res) {\r\n        res.forEach((el) => {\r\n          var RentalWeekRecord = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalStartDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(el.RentalWeekDay), 'MM/dd/yyyy')\r\n            && this.datePipe.transform(new Date(date.RentalStartDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(el.RentalWeekDay), 'MM/dd/yyyy'))\r\n          if (RentalWeekRecord.length > 0)\r\n            var RentalWeek = RentalWeekRecord[0].RentalStartDays;\r\n          const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e=>e.RentalEndDays == RentalWeek);\r\n          const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex +1].RentalEndDays;\r\n\r\n          if (new Date(el.RentalWeekDay) >= new Date(weekStartDate)) {\r\n            const index = this.selectedOtherItems.findIndex(item => item.Id === el.OtherItemId && item.RentalWeek == el.RentalWeek && item.Reference == el.Reference && item.BoothNo == el.BoothNumber && item.Recurring == el.Recurring);\r\n            if (index !== -1) {\r\n              this.selectedOtherItems[index].Quantity += el.Quantity;\r\n              this.selectedOtherItems[index].WeeklyOtherRentalIds += ',' + el.OtherRentalId\r\n            }\r\n            const ob = {\r\n              Id: el.OtherItemId,\r\n              WeekOtherRentalId: el.OtherRentalId,\r\n              OtherItem: el.OtherItemName,\r\n              OtherItemCharge: this.customCurrency.transform('0'),\r\n              Quantity: el.Quantity,\r\n              OtherItemtotal: this.customCurrency.transform('0'),\r\n              RentalWeek: RentalWeek,\r\n              SalesTax: this.customCurrency.transform('0'),\r\n              CityTax: this.customCurrency.transform('0'),\r\n              CurrentRentalWeek: RentalWeek,\r\n              CurrentOtherItemtotal: this.customCurrency.transform(el.OtherCharge.toString()),\r\n              CurrentSalesTax: this.customCurrency.transform(el.SalesTax.toString()),\r\n              CurrentSecLevelTax: this.customCurrency.transform(el.SecLevelTax.toString()),\r\n              BoothNo: el.BoothNumber,\r\n              Recurring: el.Recurring,\r\n              NewItem: false,\r\n              Reference: el.Reference,\r\n              WeeklyOtherRentalIds: el.OtherRentalId.toString(),\r\n              Status: \"B\",\r\n              RentEndPeriodIndex: rentEndPeriodIndex,\r\n              RenewalStartWeek: renewalStartWeek,\r\n              CWRenewalWeek: renewalStartWeek,\r\n              BookingCanExtend: true\r\n            }\r\n            this.selectedOtherItems.push(ob);\r\n          }\r\n          else {\r\n            var obj = {\r\n              MarketId: this.marketId,\r\n              OtherItemId: el.OtherItemId,\r\n              VendorId: this.vendorId,\r\n              Quantity: el.Quantity,\r\n              OtherItemCharge: el.OtherCharge\r\n            }\r\n\r\n            this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n              const ob = {\r\n                Id: el.OtherItemId,\r\n                MonthOtherRentalId: el.OtherRentalId,\r\n                OtherItem: el.OtherItemName,\r\n                OtherItemCharge: this.customCurrency.transform(el.OtherCharge),\r\n                Quantity: el.Quantity,\r\n                OtherItemtotal: this.customCurrency.transform((el.OtherCharge * el.Quantity).toString()),\r\n                RentalWeek: this.weeklyMarketDays[0].RentalStartDays,\r\n                SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n                CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n                BoothNo: el.BoothNumber ? el.BoothNumber : \"none\",\r\n                Recurring: el.Recurring,\r\n                Reference: el.Reference,\r\n                NewItem: false,\r\n                MonthlyRentalIds: '',\r\n                Status: \"R\",\r\n                RentEndPeriodIndex:rentEndPeriodIndex\r\n              }\r\n              this.selectedOtherItems.push(ob);\r\n              const OtherItemtotal = el.OtherCharge * el.Quantity;\r\n              this.totalOtherRentalCharge += OtherItemtotal;\r\n              this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n              this.totalCharge = this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n              this.bookingDetailsForm.patchValue({\r\n                otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n                totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n                totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n                totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n              });\r\n            });\r\n          }\r\n        });\r\n        this.renewWeeklyOtherCharges();\r\n        this.loaderIcon = Promise.resolve(false);\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  renewWeeklyOtherCharges() {\r\n    if (this.selectedOtherItems.length > 0) {\r\n      this.proceedRenewingWeeklyOtherCharges();\r\n    }\r\n  }\r\n\r\n  updateWeeklyRentalRecord(record) {\r\n    if (record.Reservation && this.allowWeeklyRentalRenewal) {\r\n      const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e => e.RentalEndDays == record.RentEndPeriod);\r\n      const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex + 1].RentalEndDays;\r\n      record.BookingCanExtend = true;\r\n      record.RenewalStartWeek = renewalStartWeek\r\n      record.CWRenewalWeek = renewalStartWeek;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendWeeklyRental(record);\r\n    }\r\n    else {\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.CWRenewalWeek = record.CurrentRentEndPeriod;\r\n      record.RentEndPeriod = record.CurrentRentEndPeriod;\r\n      this.totalRentalCharge -= record.Rent.toString().includes('(') && record.Rent.toString().includes(')') ? -1 * parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.Rent = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  extendWeeklyRental(extendRentalRecord) {\r\n    if (extendRentalRecord) {\r\n      var recordExist = this.selectedWeeklyBooths.findIndex(e => e.RentStartPeriod == extendRentalRecord.RentStartPeriod && e.RentEndPeriod == extendRentalRecord.RentEndPeriod\r\n        && e.BoothNumber == extendRentalRecord.BoothNumber)\r\n      if (recordExist != -1) {\r\n        const rentalDates = [];\r\n        const currentMonthRentalDates = [];\r\n        var rentalstartDate;\r\n        var marketDays = 0;\r\n        var marketDay;\r\n        \r\n        if (this.selectedWeeklyBooths[recordExist].Sunday == true) {\r\n          marketDay = 'Sun'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Monday == true) {\r\n          marketDay = 'Mon'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Tuesday == true) {\r\n          marketDay = 'Tue'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Wednesday == true) {\r\n          marketDay = 'Wed'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Thursday == true) {\r\n          marketDay = 'Thu'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Friday == true) {\r\n          marketDay = 'Fri'\r\n        }\r\n        else if (this.selectedWeeklyBooths[recordExist].Saturday == true) {\r\n          marketDay = 'Sat'\r\n        }\r\n\r\n        var RentAmount = this.selectedWeeklyBooths[recordExist].Rent;\r\n        var SalesTax = this.selectedWeeklyBooths[recordExist].SalesTax;\r\n        var CityTax = this.selectedWeeklyBooths[recordExist].CityTax;\r\n\r\n        this.totalRentalCharge -= RentAmount.toString().includes('(') && RentAmount.toString().includes(')') ? -1 * parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, '')) : parseFloat(RentAmount.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax -= SalesTax.toString().includes('(') && SalesTax.toString().includes(')') ? -1 * parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax -= CityTax.toString().includes('(') && CityTax.toString().includes(')') ? -1 * parseFloat(CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n         this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.bookingDetailsForm.patchValue({\r\n          rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n\r\n        var extendRentalStartPeriod;\r\n        if (!this.selectedWeeklyBooths[recordExist].NewBooth  && this.selectedWeeklyBooths[recordExist].Status != \"R\") {\r\n          extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentalSavedEndDate.split(\"-\")[1]);\r\n          extendRentalStartPeriod.setDate(extendRentalStartPeriod.getDate() + 1);\r\n        }\r\n        else {\r\n          extendRentalStartPeriod = new Date(this.selectedWeeklyBooths[recordExist].RentStartPeriod.split(\"-\")[0]);\r\n        }\r\n\r\n        var obj = {\r\n          BoothTypeId: this.selectedWeeklyBooths[recordExist].BoothTypeId,\r\n          VendorId: this.vendorId,\r\n          RentalMarketDay: marketDay,\r\n          RentalStartPeriod: new Date(extendRentalStartPeriod),\r\n          RentalEndPeriod: new Date(extendRentalRecord.CWRenewalWeek.split(\"-\")[1]),\r\n          PerDiemApplicable: false\r\n        }\r\n        this.rentalService.getBoothRentalWeeklyCharges(this.marketId,obj).subscribe((res: any) => {\r\n          this.selectedWeeklyBooths[recordExist].RentEndPeriod =extendRentalRecord.CWRenewalWeek;\r\n          this.selectedWeeklyBooths[recordExist].January = this.customCurrency.transform(res.JanRent);\r\n          this.selectedWeeklyBooths[recordExist].February = this.customCurrency.transform(res.FebRent);\r\n          this.selectedWeeklyBooths[recordExist].March = this.customCurrency.transform(res.MarRent);\r\n          this.selectedWeeklyBooths[recordExist].April = this.customCurrency.transform(res.AprRent);\r\n          this.selectedWeeklyBooths[recordExist].May = this.customCurrency.transform(res.MayRent);\r\n          this.selectedWeeklyBooths[recordExist].June = this.customCurrency.transform(res.JunRent);\r\n          this.selectedWeeklyBooths[recordExist].July = this.customCurrency.transform(res.JulRent);\r\n          this.selectedWeeklyBooths[recordExist].August = this.customCurrency.transform(res.AugRent);\r\n          this.selectedWeeklyBooths[recordExist].September = this.customCurrency.transform(res.SepRent);\r\n          this.selectedWeeklyBooths[recordExist].October = this.customCurrency.transform(res.OctRent);\r\n          this.selectedWeeklyBooths[recordExist].November = this.customCurrency.transform(res.NovRent);\r\n          this.selectedWeeklyBooths[recordExist].December = this.customCurrency.transform(res.DecRent);\r\n          this.selectedWeeklyBooths[recordExist].Rent = this.customCurrency.transform(res.Rent);\r\n          this.selectedWeeklyBooths[recordExist].SalesTax = this.customCurrency.transform(res.SalesTax);\r\n          this.selectedWeeklyBooths[recordExist].CityTax = this.customCurrency.transform(res.CityTax);\r\n          this.selectedWeeklyBooths[recordExist].JanuaryMonthPresent = res.JanuaryMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].FebruaryMonthPresent = res.FebruaryMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].MarchMonthPresent = res.MarchMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].AprilMonthPresent = res.AprilMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].MayMonthPresent = res.MayMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].JuneMonthPresent = res.JuneMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].JulyMonthPresent = res.JulyMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].AugustMonthPresent = res.AugustMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].SeptemberMonthPresent = res.SeptemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].OctoberMonthPresent = res.OctoberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].NovemberMonthPresent = res.NovemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].DecemberMonthPresent = res.DecemberMonthPresent;\r\n          this.selectedWeeklyBooths[recordExist].DisableJanMonth = res.JanRent || res.JanRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableFebMonth = res.FebRent || res.FebRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableMarMonth = res.MarRent || res.MarRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableAprMonth = res.AprRent || res.AprRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableMayMonth = res.MayRent || res.MayRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableJunMonth = res.JunRent || res.JunRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableJulMonth = res.JulRent || res.JulRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableAugMonth = res.AugRent || res.AugRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableSepMonth = res.SepRent || res.SepRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableOctMonth = res.OctRent || res.OctRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableNovMonth = res.NovRent || res.NovRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].DisableDecMonth = res.DecRent || res.DecRent == 0 ? false : true;\r\n          this.selectedWeeklyBooths[recordExist].ExtendRental = true;\r\n\r\n          this.totalRentalCharge += res.Rent.toString().includes('(') && res.Rent.toString().includes(')') ? -1 * parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.Rent.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.bookingDetailsForm.patchValue({\r\n            rentalCharge: this.customCurrency.transform(this.totalRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n        });      \r\n      }\r\n    }\r\n  }\r\n\r\n  extendWeeklyOtherRental(item) {\r\n    const cuurentWeek = new Date(item.RentalWeek.split('-')[1]);\r\n    if (cuurentWeek < new Date(item.CWRenewalWeek.split('-')[1]) && item.Recurring && this.allowWeeklyRentalRenewal) {\r\n      var nextDate = this.addDays(new Date(item.RentalWeek.split('-')[0]), 7);\r\n      var rentalWeekDate = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalEndDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n        && this.datePipe.transform(new Date(date.RentalEndDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n      if (rentalWeekDate.length > 0)\r\n        var rentalStartWeek = rentalWeekDate[0].RentalStartDays;\r\n\r\n      var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n      if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n        otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n      }\r\n      var obj = {\r\n        MarketId: this.marketId,\r\n        OtherItemId: item.Id,\r\n        VendorId: this.vendorId,\r\n        Quantity: item.Quantity,\r\n        OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n      }\r\n\r\n      this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n        const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n        const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n        const finalCharge = isNegative ? -totalValue : totalValue;\r\n        item.OtherItemtotal =this.customCurrency.transform((parseFloat(item.OtherItemtotal.replace(/[^0-9.-]/g, '')) + (finalCharge * item.Quantity)).toString());\r\n        item.Quantity += item.Quantity;\r\n        item.OtherItemCharge = otherItemCharge;\r\n        item.MonthlyRentalIds += ',' + item.Id\r\n        item.CWRenewalWeek = rentalStartWeek;\r\n\r\n        this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n        this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n        this.bookingDetailsForm.patchValue({\r\n          otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n          totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n          totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n          totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n        });\r\n      });\r\n    }\r\n    else {\r\n      item.BookingCanExtend = false;\r\n      item.RenewalStartMonth = \"This booking cannot be extended further!\";\r\n      item.CMRenewalMonth = item.RentalMonth;\r\n    }\r\n  }\r\n\r\n  updateWeeklyOtherItemRecord(record){\r\n    if (record.Recurring && this.allowOtherItemRenewal) {\r\n      const rentEndPeriodIndex = this.weeklyMarketDays.findIndex(e => e.RentalEndDays == record.RentalWeek);\r\n      const renewalStartWeek = this.weeklyMarketDays[rentEndPeriodIndex + 1].RentalEndDays;\r\n      record.BookingCanExtend = true;\r\n      record.RenewalStartWeek = renewalStartWeek\r\n      record.CWRenewalWeek = renewalStartWeek;\r\n      record.RentEndPeriodIndex = rentEndPeriodIndex\r\n      this.extendWeeklyOtherRental(record);\r\n    }\r\n    else {\r\n      record.BookingCanExtend = false;\r\n      record.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n      record.CWRenewalWeek = record.RentalWeek;\r\n      this.totalOtherRentalCharge -= record.OtherItemtotal.toString().includes('(') && record.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSalesTax -= record.SalesTax.toString().includes('(') && record.SalesTax.toString().includes(')') ? -1 * parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalSecondLeveltax -= record.CityTax.toString().includes('(') && record.CityTax.toString().includes(')') ? -1 * parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(record.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n      this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n      this.bookingDetailsForm.patchValue({\r\n        otherCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n        totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n        totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n        totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n      });\r\n      record.Rent = this.customCurrency.transform(\"0\");\r\n    }\r\n  }\r\n\r\n  addDays(date: Date, days: number): Date {\r\n    const result = new Date(date);\r\n    result.setDate(result.getDate() + days);\r\n    return result;\r\n  }\r\n  \r\n  proceedRenewingWeeklyOtherCharges(){\r\n    for(const item of this.selectedOtherItems){\r\n      if (new Date(item.RentalWeek.split('-')[0]) < new Date(item.CWRenewalWeek.split('-')[0])\r\n        && item.Recurring && this.allowOtherItemRenewal) {\r\n        var nextDate = this.addDays(new Date(item.RentalWeek.split('-')[0]), 7);\r\n        var rentalWeekDate = this.weeklyMarketDays.filter(date => this.datePipe.transform(new Date(date.RentalEndDays.split('-')[0]), 'MM/dd/yyyy') <= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy')\r\n          && this.datePipe.transform(new Date(date.RentalEndDays.split('-')[1]), 'MM/dd/yyyy') >= this.datePipe.transform(new Date(nextDate), 'MM/dd/yyyy'))\r\n        if (rentalWeekDate.length > 0)\r\n          var rentalStartWeek = rentalWeekDate[0].RentalStartDays;\r\n\r\n        var recordExist = this.selectedOtherItems.findIndex(e => e.RentalWeek == rentalStartWeek && e.Id == item.Id && e.Reference == item.Reference && e.BoothNumber == item.item.BoothNo)\r\n        var otherItemCharge = this.otherItemList.filter(e => e.Id == item.Id)[0].OtherItemCharge;\r\n        if (!this.masterRentChargeforResOtherItems && this.allrentedOtherItems.length > 0) {\r\n          otherItemCharge = this.customCurrency.transform(this.allrentedOtherItems.filter(e => e.OtherItemId == item.Id)[0].OtherCharge);\r\n        }\r\n        var obj = {\r\n          MarketId: this.marketId,\r\n          OtherItemId: item.Id,\r\n          VendorId: this.vendorId,\r\n          Quantity: item.Quantity,\r\n          OtherItemCharge: otherItemCharge.includes('(') && otherItemCharge.includes(')') ? (-1) * parseFloat(otherItemCharge.replace(/[^0-9.-]/g, '')) : parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''))\r\n        }\r\n        this.rentalService.getOtherItemsRentalCharges(obj).subscribe((res: any) => {\r\n          if (recordExist == -1) {\r\n            const isNegative = otherItemCharge.includes('(') && otherItemCharge.includes(')');\r\n            const totalValue = parseFloat(otherItemCharge.replace(/[^0-9.-]/g, ''));\r\n            const finalCharge = isNegative ? -totalValue : totalValue;\r\n            item.OtherItemtotal = this.customCurrency.transform((finalCharge * item.Quantity).toString());\r\n            const ob = {\r\n              Id: item.Id,\r\n              WeekOtherRentalId: 0,\r\n              OtherItem: item.OtherItem,\r\n              OtherItemCharge: otherItemCharge,\r\n              Quantity: item.Quantity,\r\n              OtherItemtotal: item.OtherItemtotal,\r\n              RentalWeek: rentalStartWeek,\r\n              SalesTax: this.customCurrency.transform(res.SalesTax.toString()),\r\n              CityTax: this.customCurrency.transform(res.CityTax.toString()),\r\n              BoothNo: item.othChgBooths ?? \"none\",\r\n              Recurring: item.Recurring,\r\n              NewItem: true,\r\n              Reference: item.Reference,\r\n              WeeklyOtherRentalIds: ''\r\n            }\r\n            this.selectedOtherItems.push(JSON.parse(JSON.stringify(ob)));\r\n          }\r\n          this.totalOtherRentalCharge += item.OtherItemtotal.toString().includes('(') && item.OtherItemtotal.toString().includes(')') ? -1 * parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, '')) : parseFloat(item.OtherItemtotal.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSalesTax += res.SalesTax.toString().includes('(') && res.SalesTax.toString().includes(')') ? -1 * parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.SalesTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalSecondLeveltax += res.CityTax.toString().includes('(') && res.CityTax.toString().includes(')') ? -1 * parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, '')) : parseFloat(res.CityTax.toString().replace(/[^0-9.-]/g, ''));\r\n          this.totalCharge = this.priorBalance + this.totalRentalCharge + this.totalOtherRentalCharge + this.totalSalesTax + this.totalSecondLeveltax;\r\n          this.bookingDetailsForm.patchValue({\r\n            totalOtherRentalCharge: this.customCurrency.transform(this.totalOtherRentalCharge.toString()),\r\n            totalSalesTax: this.customCurrency.transform(this.totalSalesTax.toString()),\r\n            totalSecondLeveltax: this.customCurrency.transform(this.totalSecondLeveltax.toString()),\r\n            totalCharge: this.customCurrency.transform(this.totalCharge.toString())\r\n          });\r\n        });\r\n      }\r\n      else{\r\n        item.BookingCanExtend = false;\r\n        item.RenewalStartWeek = \"This booking cannot be extended further!\";\r\n        item.CWRenewalWeek = item.RentalWeek;\r\n      }\r\n    }\r\n  }\r\n    \r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div class=\"container-fluid\">\r\n    <form [formGroup]=\"rentalForm\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n                <app-rental-menu IsVendorLogin=\"IsVendorLogin\"></app-rental-menu>\r\n            </div>\r\n            <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n                <div class=\"container mainContainer\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-5 text-left mt-4\">\r\n                            <label class=\"mainHeading mb-0\">{{pageName}}</label>\r\n                        </div>\r\n                        <div class=\"col-7 text-right pl-0 mt-4\">\r\n                            <label class=\"mainHeading mb-0\">{{marketName}}</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-12 text-center mt-3\">\r\n                            <label class=\"welcome\">Welcome {{vendorName}}</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <button #btnRentOnline class=\"btn btnMain mr-3 mt-2\" (click)=\"rentOnline()\" *ngIf=\"anyRentalTypeEnabledForBooking\">Rent Online</button>\r\n                            <button #ContactInfo class=\"btn btnMain mr-3 mt-2\" (click)=\"contactInfo()\">Current Contact\r\n                                Information</button>\r\n                            <button #btnLoginInfo class=\"btn btnMain mr-3 mt-2\" (click)=\"LoginInfo()\">Online Login\r\n                                Info</button>\r\n                            <button #btnBookings class=\"btn btnMain mr-3 mt-2\" (click)=\"MyBookings()\">My Bookings</button>\r\n                        </div>\r\n                    </div>\r\n                    <div #divContactInfo class=\"bgWghite shadow mt-2\"\r\n                        [ngStyle]=\"{ display: showrentOnline ? 'block' : 'none' }\">\r\n                        <div class=\"container\">\r\n                            <div class=\"row mt-1 pl-4\">\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0 mt-2\" *ngIf=\"AllowBookingsDaily\">\r\n                                    <input type=\"radio\" id=\"rdDaily\" class=\"form-check-input\" value=\"1\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdDaily\" class=\"form-check-label\">Daily</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0 mt-2\" *ngIf=\"AllowBookingsWeekly\">\r\n                                    <input type=\"radio\" id=\"rdWeekly\" class=\"form-check-input\" value=\"3\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdWeekly\" class=\"form-check-label\">Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0 mt-2\" *ngIf=\"AllowBookingsMonthly\">\r\n                                    <input type=\"radio\" id=\"rdMonthly\" class=\"form-check-input\" value=\"2\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdMonthly\" class=\"form-check-label\">Monthly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0 mt-2\" *ngIf=\"AllowBookingsCw\">\r\n                                    <input type=\"radio\" id=\"rdCombinedWeek\" class=\"form-check-input\" value=\"5\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdCombinedWeek\" class=\"form-check-label\">Combined Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0 mt-2\" *ngIf=\"AllowBookingsCm\">\r\n                                    <input type=\"radio\" id=\"rdCombinedMonth\" class=\"form-check-input\" value=\"4\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdCombinedMonth\" class=\"form-check-label\">Combined Monthly</label>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row mt-1 pl-2\">\r\n                                <div class=\"col-md-12 col-lg-12 col-sm-12 col-xl-12 ml-lg-12 ml-xl-0\">\r\n                                    <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 1\" style=\"color: red;font-size:12px;\">Booths can be rented\r\n                                        for single or multiple market days on a one time\r\n                                        basis.</span>\r\n                                    <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 2\" style=\"color: red;font-size:12px;\">Booths can be rented for\r\n                                        one market day per week on permanent monthly basis.</span>\r\n                                    <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 3\" style=\"color: red;font-size:12px;\">Booths can be rented for\r\n                                        one market day in the week on permanent weekly basis.</span>\r\n                                    <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 4\" style=\"color: red;font-size:12px;\">Booth can be rented\r\n                                        for all market days in the month on monthly basis.</span>\r\n                                    <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 5\" style=\"color: red;font-size:12px;\">Booths can be rented\r\n                                        for all market days in the week on weekly basis.</span>                                \r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-center\">\r\n                                    <hr class=\"my-2\" />\r\n                                </div>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '1'\">\r\n                                <app-dailyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\"></app-dailyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '2'\">\r\n                                <app-monthlyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\"></app-monthlyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '3'\">\r\n                                <app-weeklyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\"></app-weeklyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '4'\">\r\n                                <app-combinedmonthlyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\"></app-combinedmonthlyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '5'\">\r\n                                <app-combinedweeklyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\"></app-combinedweeklyrental-online>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divOnlineAccess class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showContactInfo ? 'block' : 'none' }\">\r\n                        <div class=\"container\" formGroupName=\"contactInfoForm\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Name:</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"firstName\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Last Name</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"lastName\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">Company Name:</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"companyName\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Street Address:</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"address\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>City</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"city\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>State/ Province</label>\r\n                                        <select id=\"ddlState\" class=\"form-control\" *ngIf=\"showStateDropDown\" tabindex=\"9\" formControlName=\"state\">\r\n                                            <option *ngFor=\"let st of stateList\" [value]=\"st.StateCode\">{{st.StateCode}}\r\n                                            </option>\r\n                                        </select>\r\n                                        <input type=\"text\" *ngIf=\"!showStateDropDown\" maxlength=\"2\" tabindex=\"9\" class=\"form-control\"\r\n                                            formControlName=\"state\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Country</label>\r\n                                        <select id=\"ddlCountry\" class=\"form-control\" formControlName=\"country\" tabindex=\"11\" (change)=\"onCountryChange()\">\r\n                                            <option *ngFor=\"let ct of countryList\" [value]=\"ct.Code\">{{ct.Name}}</option>\r\n                                        </select>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Zip/Postal Code</label>\r\n                                        <ejs-maskedtextbox [mask]=\"ZipCodeMask\" tabindex=\"13\" name=\"ZipCode\"\r\n                                        id=\"ZipCode\" formControlName=\"postalCode\"></ejs-maskedtextbox>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">Work Phone</label>\r\n                                        <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"workPhone\" id=\"workPhone\"\r\n                                            formControlName=\"workPhone\" (keyup)=\"onKeyUp('workPhone')\"></ejs-maskedtextbox>\r\n                                        <small style=\"color: red;\" *ngIf=\"showWorkPhoneError\" i18n>Enter valid work\r\n                                            phone number</small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Cell Phone</label>\r\n                                        <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"cellPhone\" id=\"cellPhone\"\r\n                                            formControlName=\"cellPhone\" (keyup)=\"onKeyUp('cellPhone')\"></ejs-maskedtextbox>\r\n                                        <small style=\"color: red;\" *ngIf=\"showCellPhoneError\" i18n>Enter valid cell\r\n                                            phone number</small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span class=\"required\">*</span>Email</label>\r\n                                        <input type=\"text\" class=\"form-control text-left\" formControlName=\"email\"\r\n                                        [pattern]=\"emailIdsPattern\" (keypress)=\"restrictSpace($event)\">\r\n                                        <div class=\"alert alert-danger\"\r\n                                            *ngIf=\"this.rentalForm.controls['contactInfoForm'].get('email').errors && ( this.rentalForm.controls['contactInfoForm'].get('email').dirty ||  this.rentalForm.controls['contactInfoForm'].get('email').touched)\">\r\n                                            <span *ngIf=\" this.rentalForm.controls['contactInfoForm'].get('email').errors.pattern\" i18n>\r\n                                                Enter valid Email ID</span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-right my-3\">\r\n                                    <button class=\"btn btn-outline-primary mr-1\" (click)=\"cancelContactModification()\">Cancel</button>\r\n                                    <button class=\"btn btn-primary\" (click)=\"UpdateVendor()\" [disabled]=\"validateContactForm()\">Update</button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divLoginInfo class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showLoginInfo ? 'block' : 'none' }\">\r\n                        <div class=\"container\" formGroupName=\"onlineLoginForm\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*User Name</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"onlineUserName\">\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Password</label>\r\n                                        <div class=\"input-group\">\r\n                                            <input [type]=\"passwordFieldType\" class=\"form-control\" formControlName=\"onlinePassword\"\r\n                                                placeholder=\"Enter Password\" />\r\n                                            <span class=\"input-group-text\" (click)=\"togglePasswordVisibility()\">\r\n                                                <i [ngClass]=\"passwordFieldType === 'password' ? 'fa fa-eye' : 'fa fa-eye-slash'\"></i>\r\n                                            </span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">Confirm Password</label>\r\n                                        <div class=\"input-group\">\r\n                                            <input [type]=\"passwordFieldType\" class=\"form-control\" formControlName=\"confirmPassword\">\r\n                                            <span class=\"input-group-text\" (click)=\"togglePasswordVisibility()\">\r\n                                                <i [ngClass]=\"passwordFieldType === 'password' ? 'fa fa-eye' : 'fa fa-eye-slash'\"></i>\r\n                                            </span>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Security Question</label>\r\n                                        <select id=\"ddlState\" class=\"form-control\" tabindex=\"9\" formControlName=\"securityQuestions\">\r\n                                            <option *ngFor=\"let questions of securityQuestion\" [value]=\"questions.ID\">{{questions.SecurityQuestion}}\r\n                                            </option>\r\n                                        </select>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Answer</label>\r\n                                        <input type=\"text\" class=\"form-control\" formControlName=\"securityAnswer\">\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-right my-3\">\r\n                                    <button class=\"btn btn-outline-primary mr-1\">Cancel</button>\r\n                                    <button class=\"btn btn-primary\" (click)=\"saveVendorLoginDetail()\">Update</button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divBookings class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showBookings ? 'block' : 'none' }\" style=\"padding-bottom: 2rem;\">\r\n                        <div class=\"container\">\r\n                            <div class=\"row mt-1 pl-4\">\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsDaily\">\r\n                                    <input type=\"radio\" id=\"rdBookingsDaily\" class=\"form-check-input\" value=\"1\" formControlName=\"bookingRentalTypes\">\r\n                                    <label for=\"rdBookingsDaily\" class=\"form-check-label\">Daily</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsWeekly || AllowRenewalsWeekly\">\r\n                                    <input type=\"radio\" id=\"rdBookingsWeekly\" class=\"form-check-input\" value=\"3\" formControlName=\"bookingRentalTypes\">\r\n                                    <label for=\"rdBookingsWeekly\" class=\"form-check-label\">Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsMonthly || AllowRenewalsMonthly\">\r\n                                    <input type=\"radio\" id=\"rdBookingsMonthly\" class=\"form-check-input\" value=\"2\" formControlName=\"bookingRentalTypes\">\r\n                                    <label for=\"rdBookingsMonthly\" class=\"form-check-label\">Monthly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCw || AllowRenewalsCw\">\r\n                                    <input type=\"radio\" id=\"rdBookingsCombinedWeek\" class=\"form-check-input\" value=\"5\" formControlName=\"bookingRentalTypes\">\r\n                                    <label for=\"rdBookingsCombinedWeek\" class=\"form-check-label\">Combined Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCm || AllowRenewalsCm\">\r\n                                    <input type=\"radio\" id=\"rdBookingsCombinedMonth\" class=\"form-check-input\" value=\"4\" formControlName=\"bookingRentalTypes\">\r\n                                    <label for=\"rdBookingsCombinedMonth\" class=\"form-check-label\">Combined Monthly</label>\r\n                                </div>\r\n                            </div>   \r\n                            <div *ngIf=\"showBookings && (this.rentalForm.value['bookingRentalTypes'] == '1' || this.rentalForm.value['bookingRentalTypes'] == '4' || this.rentalForm.value['bookingRentalTypes'] == '5')\">\r\n                                <app-booking-details [rentalType]=\"this.rentalForm.value['bookingRentalTypes']\" [marketId]=\"marketId\" [vendorId]=\"vendorId\" [paymentOnly]=\"paymentOnly\"></app-booking-details>\r\n                            </div>\r\n\r\n                            <div *ngIf=\"showBookings && (this.rentalForm.value['bookingRentalTypes'] == '2' || this.rentalForm.value['bookingRentalTypes'] == '3')\">\r\n                                <app-booking-details-weekly-monthly [rentalType]=\"this.rentalForm.value['bookingRentalTypes']\" [marketId]=\"marketId\" [vendorId]=\"vendorId\" [paymentOnly]=\"paymentOnly\"></app-booking-details-weekly-monthly>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divBookings class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showReviewRegistration ? 'block' : 'none' }\">\r\n                        <div class=\"container\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n                                    <label class=\"mb-0\">Registeration Fee</label>\r\n                                    <br />\r\n                                    <input type=\"text\" class=\"form-control\">\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n                                    <label class=\"mb-0\">Registration Exp Date</label>\r\n                                    <br />\r\n                                    <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false></ejs-datepicker>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-left\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">\r\n                                            <input type=\"checkbox\" id=\"chkRenewReg\" class=\"CheckboxClass mt-3\">\r\n                                            <label class=\"chkAlign mb-0\" for=\"chkRenewReg\" style=\"margin-top: -27px !important\">I authorize ABC Flea Market to charge this amount to my\r\n                                                Credit Card. Upon authorization and full payment by the issuing card\r\n                                                company, ABC Flea Market will submit a confirmation number, as verification\r\n                                                of charged transaction, to the above named cardholder.</label>\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-left mt-2\">\r\n                                    <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                                        class=\"img-fluid\" />\r\n                                    &nbsp;<a class=\"rules\">Click here to read the Rules and Regulations</a>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-left mt-2 mb-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">\r\n                                            <input type=\"checkbox\" id=\"chkAck\" class=\"CheckboxClass mt-3\">\r\n                                            <p class=\"chkAlign mb-0\" for=\"chkAck\" style=\"margin-top: -27px !important\">By checking this box, I acknowledge that I have read,\r\n                                                understand, and agree to the rules and regulations, and will Abide by them.\r\n                                                Please visit the office for a copy of the rules and regulations</p>\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n  selector: 'app-rent-online',\r\n  templateUrl: './rent-online.component.html',\r\n  styleUrls: ['./rent-online.component.scss']\r\n})\r\nexport class RentOnlineComponent implements OnInit, OnDestroy {\r\n  showrentOnline: boolean = true;\r\n  showContactInfo: boolean = false;\r\n  showLoginInfo:boolean=false;\r\n  showBookings:boolean=false;\r\n  showReviewRegistration:boolean=false;\r\n  IsVendorLogin:boolean=true;\r\n  pageName:string=\"Rent Online\";\r\n  currentPassword: string = null;\r\n  @ViewChild('btnRentOnline') btnRentOnline!: ElementRef;\r\n  @ViewChild('ContactInfo') ContactInfo!: ElementRef;\r\n  @ViewChild('btnLoginInfo') btnLoginInfo!: ElementRef;\r\n  @ViewChild('btnBookings') btnBookings!: ElementRef;\r\n  @ViewChild('btnRegistration') btnRegistration!: ElementRef;\r\n  marketId;\r\n  rentalForm: FormGroup;  \r\n  public loaderIcon: Promise<boolean>;  \r\n  AllowBookingsCw = false;\r\n  AllowBookingsWeekly = false;\r\n  AllowBookingsCm = false;\r\n  AllowBookingsMonthly = false;\r\n  AllowBookingsDaily = false;\r\n  AllowRenewalsCw = false;\r\n  AllowRenewalsWeekly = false;\r\n  AllowRenewalsCm = false;\r\n  AllowRenewalsMonthly = false;\r\n  paymentOnly = false;\r\n  private subscriptions: Subscription[] = [];\r\n  defaultRentalTypeSelected;\r\n  marketName = \"\";\r\n  stateList = [];\r\n  countryList = [];\r\n  vendorId;\r\n  vendorInfo;\r\n  enabledRentalTypes = [];\r\n  showStateDropDown;\r\n  securityQuestion = [];\r\n  showCellPhoneError = false;\r\n  showWorkPhoneError = false;\r\n  vendorMarketID = \"\";\r\n  anyRentalTypeEnabledForBooking = true;\r\n  selected='1';\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  vendorName;\r\n  bookingPage=\"\";\r\n  bookingPageRentalType = \"\";\r\n  public PhoneNumberMask: String = '000-000-0000';\r\n  public ZipCodeMask: String = '00000-0000';\r\n  emailIdsPattern = '^(([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,}))([\\\\s]?[,;]{1}[\\\\s]?([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,})){0,4}$';\r\n  constructor(private renderer: Renderer2,\r\n    private formbuilder: FormBuilder,\r\n    private vendorService:VendorService,\r\n    private route: ActivatedRoute,\r\n    private sharedDataService: SharedDataService,\r\n    public router: Router,\r\n    public rentalService: RentalService,\r\n    private toastr: ToastrService,\r\n    private marketInfoService: MarketInfoService\r\n  ) {\r\n    this.rentalForm = this.formbuilder.group({\r\n      rentalTypes: [\"1\"],\r\n      contactInfoForm: this.formbuilder.group({\r\n        firstName: ['',[Validators.required]],\r\n        lastName: ['',[Validators.required]],\r\n        companyName: [''],\r\n        address: ['',[Validators.required]],\r\n        city: ['',[Validators.required]],\r\n        state: ['',[Validators.required]],\r\n        country: ['',[Validators.required]],\r\n        postalCode: ['',[Validators.required]],\r\n        workPhone: ['',[Validators.minLength(10),Validators.maxLength(12)]],\r\n        cellPhone: ['',[Validators.required,Validators.minLength(10),Validators.maxLength(12)]],\r\n        email: [['', this.noWhitespaceValidator, Validators.pattern(this.emailIdsPattern)],[Validators.required]],\r\n      }),\r\n      onlineLoginForm: this.formbuilder.group({\r\n        onlineUserName: [''],\r\n        onlinePassword: [''],\r\n        confirmPassword: [''],\r\n        securityQuestions: [''],\r\n        securityAnswer: ['']\r\n      }),      \r\n      bookingRentalTypes: ['']     \r\n    })\r\n  }\r\n  passwordFieldType: string = 'password';\r\n  togglePasswordVisibility(): void {\r\n    this.passwordFieldType = this.passwordFieldType === 'password' ? 'text' : 'password';\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId= params['vendorId'];\r\n      this.bookingPage = params['bookingpage'];\r\n      this.marketInfoService.setMarketId(this.marketId);\r\n      this.bookingPageRentalType =  params['rentaltype'];\r\n      if(this.bookingPage == \"br\"){\r\n        this.MyBookings();\r\n      }\r\n    });\r\n    this.getStatesAndCountries();\r\n    this.getMarketDetails();\r\n    this.getWebRentalSetting();      \r\n\r\n    this.rentalForm.get('bookingRentalTypes')?.valueChanges.subscribe(value => {\r\n      this.refreshBookingDetails();\r\n    });\r\n  }\r\n\r\n  public noWhitespaceValidator(control: FormControl) {\r\n    if ((control.value !== '') && (control.value !== null)) {\r\n      if (control.value) {\r\n        const isWhitespace = (control.value).trim().length === 0;\r\n        const isValid = !isWhitespace;\r\n        return isValid ? null : { 'whitespace': true };\r\n      }\r\n    }\r\n  }\r\n\r\n  restrictSpace(eve) {\r\n    if (eve.which === 32) {\r\n      eve.preventDefault();\r\n    }\r\n  }\r\n  \r\n  refreshBookingDetails() {\r\n    if (this.showBookings) {\r\n      this.showBookings = false;\r\n      setTimeout(() => {\r\n        this.showBookings = true;\r\n      }, 0);\r\n    }\r\n  }\r\n\r\n  onKeyUp(field: string) {\r\n    const phoneControl = this.rentalForm.controls['contactInfoForm'].get(field);\r\n    if (field === 'cellPhone') {\r\n      this.showCellPhoneError = phoneControl && phoneControl.invalid && phoneControl.touched;\r\n    } else if (field === 'workPhone') {\r\n      this.showWorkPhoneError = phoneControl && phoneControl.invalid && phoneControl.touched;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#DDEBFC');\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }  \r\n\r\n  onCountryChange() {    \r\n    this.showStateDropDown = true;\r\n    if (this.rentalForm.value['country'] == 2) {\r\n      this.showStateDropDown = false;\r\n    }    \r\n  }\r\n\r\n  getStatesAndCountries() {\r\n    forkJoin({\r\n      resCountries: this.vendorService.getCountries(),\r\n      resStates: this.vendorService.getUSStates(),\r\n      resSecurityQuestion :this.vendorService.getVendorLoginSecurityQuestion()\r\n    }).subscribe(({ resCountries, resStates,resSecurityQuestion }) => {\r\n      if (resCountries) {\r\n        this.countryList = resCountries;\r\n      }\r\n      if (resStates) {\r\n        this.stateList = resStates;\r\n      }\r\n      if(resSecurityQuestion){\r\n        this.securityQuestion = resSecurityQuestion;\r\n      }\r\n      this.getVendorInfobyId();\r\n      this.getVendorLoginInfo();\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  getVendorInfobyId() {\r\n    this.vendorService.GetVendorById(this.vendorId, this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.vendorInfo = response.body;\r\n        this.vendorMarketID = this.vendorInfo.MarketVendorId;\r\n        this.vendorName = this.vendorInfo.VendorName\r\n        this.rentalForm.controls['contactInfoForm'].get('firstName').setValue(this.vendorInfo.FirstName);       \r\n         this.rentalForm.controls['contactInfoForm'].get('lastName').setValue(this.vendorInfo.LastName);\r\n         this.rentalForm.controls['contactInfoForm'].get('companyName').setValue(this.vendorInfo.CompanyName);\r\n         this.rentalForm.controls['contactInfoForm'].get('address').setValue(this.vendorInfo.Address);\r\n         this.rentalForm.controls['contactInfoForm'].get('city').setValue(this.vendorInfo.City);\r\n         this.rentalForm.controls['contactInfoForm'].get('state').setValue(this.vendorInfo.State);\r\n         this.rentalForm.controls['contactInfoForm'].get('country').setValue(this.vendorInfo.CountryCode);\r\n         this.rentalForm.controls['contactInfoForm'].get('postalCode').setValue(this.vendorInfo.ZipCode);\r\n         this.rentalForm.controls['contactInfoForm'].get('workPhone').setValue(this.vendorInfo.WorkPhone);\r\n         this.rentalForm.controls['contactInfoForm'].get('cellPhone').setValue(this.vendorInfo.CellPhone);\r\n         this.rentalForm.controls['contactInfoForm'].get('email').setValue(this.vendorInfo.Email);\r\n        this.onCountryChange();\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  getVendorLoginInfo() {\r\n    this.vendorService.getVendorLoginInfo(this.vendorId, this.marketId).subscribe((response:any) => {\r\n      if (response) {\r\n        this.currentPassword = response.OnlinePassword;\r\n        this.rentalForm.controls['onlineLoginForm'].patchValue({\r\n          onlineUserName: response.OnlineUserId,\r\n          onlinePassword: response.OnlinePassword,\r\n          confirmPassword: response.OnlinePassword,\r\n          securityQuestions: response.SecurityQuestionId,\r\n          securityAnswer: response.SecurityQuestionAnswer\r\n        })\r\n      }\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  saveVendorLoginDetail() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const check = this.checkValidations();\r\n    if (!check) {\r\n      this.loaderIcon = Promise.resolve(false);\r\n      return\r\n    }\r\n    var obj ={\r\n      VendorId: this.vendorId,\r\n      VendorName: this.vendorName,\r\n      OnlineUserId: this.rentalForm.controls['onlineLoginForm'].value['onlineUserName'],\r\n      OnlinePassword: this.rentalForm.controls['onlineLoginForm'].value['onlinePassword'],\r\n      SecurityQuestionId: this.rentalForm.controls['onlineLoginForm'].value['securityQuestions'],\r\n      SecurityQuestionAnswer: this.rentalForm.controls['onlineLoginForm'].value['securityAnswer'],\r\n      OnlineRegistrationDate: new Date(),\r\n      OnlineAccess: true\r\n    }\r\n    this.vendorService.SaveVendorLoginDetail(obj).subscribe((res) => {\r\n      if (res.Success) {\r\n        this.currentPassword = null;\r\n        this.toastr.success($localize`Online Login Info Saved Successfully`, $localize`Success`,this.toasterConfig);\r\n      }\r\n      else {\r\n        this.toastr.error($localize`Error occured while saving Online Login Info`,$localize`Error`, this.toasterConfig)\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, (err) => {\r\n      console.log(err);\r\n      this.toastr.error($localize`Save was Unsuccessful`, $localize`Error`, this.toasterConfig)\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  checkValidations() {\r\n    let valid = true;\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['onlineUserName'] === \"\") {\r\n      valid = false;\r\n      this.toastr.error($localize`Online User Id is required`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['onlinePassword'] === \"\") {\r\n      valid = false;\r\n      this.toastr.error($localize`Online Password is required`, $localize`Error`, this.toasterConfig)\r\n    }\r\n\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['onlinePassword'] != this.rentalForm.controls['onlineLoginForm'].value['confirmPassword']) {\r\n      valid = false;\r\n      this.toastr.error($localize`Online Password and Confirm Password should be same`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['securityQuestions'] === 0) {\r\n      valid = false;\r\n      this.toastr.error($localize`Security Question is required`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['securityAnswer'] === \"\") {\r\n      valid = false;\r\n      this.toastr.error($localize`Security Question Answer is required`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['onlinePassword'].length < 6 && this.rentalForm.controls['onlineLoginForm'].value['onlinePassword'] !== \"\") {\r\n      valid = false;\r\n      this.toastr.error($localize`Password must be atleast 6 character`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    if (this.rentalForm.controls['onlineLoginForm'].value['securityAnswer'].length < 4) {\r\n      valid = false;\r\n      this.toastr.error($localize`Hint Answer must be atleast 4 character`, $localize`Error`, this.toasterConfig)\r\n    }\r\n    return valid;\r\n  }\r\n\r\n  validateContactForm() {\r\n    if (this.rentalForm['controls'].contactInfoForm.invalid) {\r\n      return true\r\n    } else {\r\n      return false\r\n    }\r\n  }\r\n\r\n  UpdateVendor(): void {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const vendorinfo = {\r\n      VendorId: this.vendorId,\r\n      FirstName:  this.rentalForm.controls['contactInfoForm'].get('firstName').value,    \r\n      LastName :  this.rentalForm.controls['contactInfoForm'].get('lastName').value,\r\n      CompanyName :  this.rentalForm.controls['contactInfoForm'].get('companyName').value,\r\n      Address :  this.rentalForm.controls['contactInfoForm'].get('address').value ,   \r\n      City :  this.rentalForm.controls['contactInfoForm'].get('city').value,    \r\n      State :  this.rentalForm.controls['contactInfoForm'].get('state').value,\r\n      CountryCode :  this.rentalForm.controls['contactInfoForm'].get('country').value,\r\n      CellPhone :  this.rentalForm.controls['contactInfoForm'].get('cellPhone').value,\r\n      ZipCode :  this.rentalForm.controls['contactInfoForm'].get('postalCode').value,\r\n      WorkPhone :  this.rentalForm.controls['contactInfoForm'].get('workPhone').value,\r\n      Email:  this.rentalForm.controls['contactInfoForm'].get('email').value ,\r\n      MarketId: this.marketId     \r\n    }\r\n    if(this.vendorId != 0){\r\n        this.subscriptions.push(this.vendorService.UpdateVendor(vendorinfo).subscribe((res) => {\r\n          if (res.Success) {\r\n            this.toastr.success($localize`Contact Info saved successfully`, $localize`Success`, this.toasterConfig);\r\n          }\r\n          else {\r\n            this.toastr.error($localize`Error occured while saving contact info`, $localize`Error`,this.toasterConfig)\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n          this.rentalForm['controls'].contactInfoForm.markAsPristine();\r\n          \r\n        }, (err) => {\r\n          this.toastr.error($localize`Something Went Wrong`,$localize`Error`, this.toasterConfig)\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }));\r\n    }\r\n  }\r\n  \r\n  rentOnline(){\r\n    this.showrentOnline=true;\r\n    this.showContactInfo=false;\r\n    this.showLoginInfo=false;\r\n    this.showBookings=false;\r\n    this.showReviewRegistration=false;\r\n    this.pageName=\"Rent Online\";\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnBookings.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnRegistration.nativeElement, 'background-color', '#EEF2FF');\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    var sub = forkJoin({\r\n      res: this.marketInfoService.getWebRentalSetting(this.marketId),\r\n      resRentalSettings: this.rentalService.getRentalSettings(this.marketId)\r\n    }).subscribe(\r\n      ({ res, resRentalSettings }: any) => {\r\n        if (res) {\r\n          this.AllowBookingsDaily = res.AllowBookingsDaily;\r\n          this.AllowBookingsMonthly = res.AllowBookingsMonthly;\r\n          this.AllowBookingsCm = res.AllowBookingsCm;\r\n          this.AllowBookingsWeekly = res.AllowBookingsWeekly;\r\n          this.AllowBookingsCw = res.AllowBookingsCw;\r\n\r\n          this.anyRentalTypeEnabledForBooking = this.AllowBookingsDaily || this.AllowBookingsMonthly || this.AllowBookingsCm\r\n            || this.AllowBookingsWeekly || this.AllowBookingsCw;\r\n          if (!this.anyRentalTypeEnabledForBooking) {\r\n            this.contactInfo();\r\n            this.subscriptions.push(this.marketInfoService.GetEnabledRentalTypesForMarket(this.marketId)\r\n              .subscribe((res: any) => {\r\n                this.enabledRentalTypes = res;\r\n                var defaultBookingType = 0;\r\n                this.AllowBookingsDaily = this.enabledRentalTypes.some(rentalType => rentalType.Id === 1);\r\n                this.AllowBookingsMonthly = this.enabledRentalTypes.some(rentalType => rentalType.Id === 2);\r\n                this.AllowBookingsWeekly = this.enabledRentalTypes.some(rentalType => rentalType.Id === 3);\r\n                this.AllowBookingsCm = this.enabledRentalTypes.some(rentalType => rentalType.Id === 4);\r\n                this.AllowBookingsCw = this.enabledRentalTypes.some(rentalType => rentalType.Id === 5);\r\n                defaultBookingType = resRentalSettings.DefaultRentalType.toString();\r\n                this.rentalForm.get('bookingRentalTypes').setValue(defaultBookingType.toString());\r\n              }));\r\n          }\r\n\r\n          this.AllowRenewalsMonthly = res.AllowRenewalsMonthly;\r\n          this.AllowRenewalsCm = res.AllowRenewalsCm;\r\n          this.AllowRenewalsWeekly = res.AllowRenewalsWeekly;\r\n          this.AllowRenewalsCw = res.AllowRenewalsCw;\r\n          this.paymentOnly = !(this.AllowRenewalsMonthly || this.AllowRenewalsWeekly || this.AllowRenewalsCm\r\n            || this.AllowRenewalsCw);\r\n          this.rentalForm.get('rentalTypes').setValue(res.DefaultRentalType.toString());\r\n          if (this.anyRentalTypeEnabledForBooking)\r\n            this.rentalForm.get('bookingRentalTypes').setValue(res.DefaultRentalType.toString());\r\n          if (this.bookingPage == \"br\" && this.bookingPageRentalType) {\r\n            this.rentalForm.get('bookingRentalTypes').setValue(this.bookingPageRentalType.toString());\r\n          }\r\n\r\n          if (this.sharedDataService.rentalType) {\r\n            this.rentalForm.get('rentalTypes').setValue(this.sharedDataService.rentalType.toString());\r\n            this.sharedDataService.rentalType = \"\";\r\n            this.sharedDataService.paymentSharedData.RentalMethod = \"\";\r\n          }\r\n        }\r\n      }, err => {\r\n      });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  contactInfo(){\r\n    this.showrentOnline=false;\r\n    this.showContactInfo=true;\r\n    this.showLoginInfo=false;\r\n    this.showBookings=false;\r\n    this.showReviewRegistration=false;\r\n    this.pageName=\"Current Contact Information\";\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnBookings.nativeElement, 'background-color', '#EEF2FF');\r\n   // this.renderer.setStyle(this.btnRegistration.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#EEF2FF');\r\n  }\r\n\r\n  LoginInfo(){\r\n    this.showrentOnline=false;\r\n    this.showContactInfo=false;\r\n    this.showLoginInfo=true;\r\n    this.showBookings=false;\r\n    this.showReviewRegistration=false;\r\n    this.pageName=\"Online Login Info\";\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnBookings.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnRegistration.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#EEF2FF');\r\n  }\r\n\r\n  MyBookings(){\r\n    this.showrentOnline=false;\r\n    this.showContactInfo=false;\r\n    this.showLoginInfo=false;\r\n    this.showBookings=true;\r\n    this.showReviewRegistration=false;\r\n    this.pageName=\"My Bookings\";\r\n    this.renderer.setStyle(this.btnBookings.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnRegistration.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#EEF2FF');\r\n  }\r\n\r\n  ReviewRegistration(){\r\n    this.showrentOnline=false;\r\n    this.showContactInfo=false;\r\n    this.showLoginInfo=false;\r\n    this.showBookings=false;\r\n    this.showReviewRegistration=true;\r\n    this.pageName=\"Renew Registration\";\r\n    this.renderer.setStyle(this.btnRegistration.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#EEF2FF');\r\n    this.renderer.setStyle(this.btnBookings.nativeElement, 'background-color', '#EEF2FF');\r\n  }\r\n\r\n  setDirtyFlag(eve) {\r\n   \r\n  }\r\n\r\n  isCancelClicked(eve) {\r\n    this.rentalForm.get('rentalTypes').setValue('0');   \r\n    setTimeout(() => {\r\n      this.rentalForm.get('rentalTypes').setValue(eve);\r\n    }, 0); \r\n  }\r\n  \r\n  cancelContactModification() {\r\n    if (this.rentalForm['controls'].contactInfoForm.dirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.getVendorInfobyId();\r\n          this.rentalForm['controls'].contactInfoForm.markAsPristine();\r\n        } else {\r\n          //do nothing\r\n        }\r\n      });\r\n    } else {\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div class=\"container-fluid\">\r\n    <div class=\"row\">\r\n        <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n            <app-rental-menu></app-rental-menu>\r\n        </div>\r\n        <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n            <form [formGroup]=\"marketMap\">\r\n                <div class=\"container mainContainer\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-5 text-left mt-4\">\r\n                            <label class=\"mainHeading\">Market Map</label>\r\n                        </div>\r\n                        <div class=\"col-7 text-right mt-4\">\r\n                            <label class=\"mainHeading\">{{marketName}}</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"bgWghite shadow pt-2 mt-2\">\r\n                        <div class=\"container\" style=\"max-width: 100% !important;\">\r\n                            <div class=\"row mt-1 pl-4\" *ngIf=\"anyRentalTypeEnabledForBooking\">\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsDaily\">\r\n                                    <input type=\"radio\" id=\"rdDaily\" class=\"form-check-input\" value=\"1\"\r\n                                        formControlName=\"rentalTypes\" (change)=\"rentalTypeChange()\">\r\n                                    <label for=\"rdDaily\" class=\"form-check-label\">Daily</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\"\r\n                                    *ngIf=\"AllowBookingsWeekly\">\r\n                                    <input type=\"radio\" id=\"rdWeekly\" class=\"form-check-input\" value=\"3\"\r\n                                        formControlName=\"rentalTypes\" (change)=\"rentalTypeChange()\">\r\n                                    <label for=\"rdWeekly\" class=\"form-check-label\">Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\"\r\n                                    *ngIf=\"AllowBookingsMonthly\">\r\n                                    <input type=\"radio\" id=\"rdMonthly\" class=\"form-check-input\" value=\"2\"\r\n                                        formControlName=\"rentalTypes\" (change)=\"rentalTypeChange()\">\r\n                                    <label for=\"rdMonthly\" class=\"form-check-label\">Monthly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCw\">\r\n                                    <input type=\"radio\" id=\"rdCombinedWeek\" class=\"form-check-input\" value=\"5\"\r\n                                        formControlName=\"rentalTypes\" (change)=\"rentalTypeChange()\">\r\n                                    <label for=\"rdCombinedWeek\" class=\"form-check-label\">Combined Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCm\">\r\n                                    <input type=\"radio\" id=\"rdCombinedMonth\" class=\"form-check-input\" value=\"4\"\r\n                                        formControlName=\"rentalTypes\" (change)=\"rentalTypeChange()\">\r\n                                    <label for=\"rdCombinedMonth\" class=\"form-check-label\">Combined Monthly</label>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-center\">\r\n                                    <hr class=\"my-2\" />\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-left\"></div>\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-10 col-xl-10 text-right\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-sm-12 col-md-3 col-lg-4 col-xl-3 text-left\">\r\n                                            <label class=\"mt-3 mb-0\">Select Layout Part</label>\r\n                                        </div>\r\n                                        <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-2\">\r\n                                            <select class=\"form-control alignLayoutPart\" formControlName=\"marketParts\"\r\n                                                (change)=\"changeMarketMap()\">\r\n                                                <option *ngFor=\"let item of parts\" [value]=\"item.PartId\">\r\n                                                    {{item.PartDescription}}</option>\r\n                                            </select>\r\n                                        </div>\r\n                                        <div class=\"col-sm-12 col-md-3 col-lg-2 col-xl-2 text-left mt-2\">\r\n                                            <button class=\"btn btn-primary alignLayoutPart\" (click)=\"viewLayout()\">View Layout</button>\r\n                                        </div>\r\n                                        <div class=\"col-sm-12 col-md-6 col-lg-2 col-xl-2 d-flex layout_buttons mt-1\">\r\n                                            <button class=\"btn btnZoom alignLayoutPart mr-1\" (click)=\"layoutZoomInClick($event)\">\r\n                                                <img src=\"../assets/images/ZoomIn.svg\" class=\"img-fluid\" />\r\n                                            </button>\r\n                                            <button class=\"btn btnZoom\" (click)=\"layoutZoomOutClick($event)\">\r\n                                                <img src=\"../assets/images/ZoomOut.svg\" class=\"img-fluid\" />\r\n                                            </button>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-3 text-left mt-2\" *ngIf=\"anyRentalTypeEnabledForBooking\">\r\n                                    <div class=\"card shadow\">\r\n                                        <div class=\"card-header fw-700\">\r\n                                            Market Day(s):\r\n                                        </div>\r\n                                        <ul class=\"list-group list-group-flush\">\r\n                                            <li class=\"list-group-item\" *ngIf=\"monday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkMonday\" formControlName=\"marketWeekMonday\"\r\n                                                    (change)=\"toggleDaySelection('Monday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkMonday\" i18n>\r\n                                                        Monday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"tuesday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkTuesday\" formControlName=\"marketWeekTuesday\"\r\n                                                    (change)=\"toggleDaySelection('Tuesday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkTuesday\" i18n>\r\n                                                        Tuesday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"wednesday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkWednesday\" formControlName=\"marketWeekWednesday\"\r\n                                                    (change)=\"toggleDaySelection('Wednesday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkWednesday\" i18n>\r\n                                                        Wednesday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"thursay\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkThursday\" formControlName=\"marketWeekThursday\"\r\n                                                    (change)=\"toggleDaySelection('Thursday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkThursday\" i18n>\r\n                                                        Thursday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"friday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkFriday\" formControlName=\"marketWeekFriday\"\r\n                                                    (change)=\"toggleDaySelection('Friday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkFriday\" i18n>\r\n                                                        Friday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"saturday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSaturday\" formControlName=\"marketWeekSaturday\"\r\n                                                    (change)=\"toggleDaySelection('Saturday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkSaturday\" i18n>\r\n                                                        Saturday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                            <li class=\"list-group-item\" *ngIf=\"sunday\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" id=\"chkSunday\" formControlName=\"marketWeekSunday\"\r\n                                                    (change)=\"toggleDaySelection('Sunday', $event)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" for=\"chkSunday\" i18n>\r\n                                                        Sunday\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n                                    <div class=\"card shadow mt-2\" *ngIf=\"this.marketMap.value['rentalTypes'] == '1'\">\r\n                                        <div class=\"card-header fw-700\">\r\n                                            Rental Day(s):\r\n                                        </div>\r\n                                        <ul class=\"list-group list-group-flush marketDates\">\r\n                                            <li class=\"list-group-item\"\r\n                                                *ngFor=\"let item of filteredMarketDays; let i=index\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" [id]=\"'chk' + (i + 1)\" (change)=\"checkboxChanged($event,item)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" [attr.for]=\"'chk' + (i + 1)\" i18n>\r\n                                                        {{item.MarketDays}}\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n\r\n                                    <div class=\"card shadow mt-2\"\r\n                                        *ngIf=\"this.marketMap.value['rentalTypes'] == '3' || this.marketMap.value['rentalTypes'] == '5'\">\r\n                                        <div class=\"card-header fw-700\">\r\n                                            Weekly Market(s):\r\n                                        </div>\r\n                                        <div class=\"mt-1\">\r\n                                            <select class=\"form-control\" (change)=\"checkRentalWeeks()\"\r\n                                                formControlName=\"rentalStartDate\">\r\n                                                <option *ngFor=\"let item of weeklyMarketDays;\"\r\n                                                    [value]=\"item.RentalStartDays\">\r\n                                                    {{item.RentalStartDays}}</option>\r\n                                            </select>\r\n                                        </div>\r\n                                        <div class=\"mt-1\">\r\n                                            <select class=\"form-control\" (change)=\"checkRentalWeeks()\"\r\n                                                formControlName=\"rentalEndDate\">\r\n                                                <option *ngFor=\"let item of weeklyMarketDays;\"\r\n                                                    [value]=\"item.RentalEndDays\">\r\n                                                    {{item.RentalEndDays}}</option>\r\n                                            </select>\r\n                                        </div>\r\n                                        <div class=\"row mt-1 mb-1\" style=\"padding: .375rem .75rem;\">\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <label class=\"mb-0\" i18n>Rental Start Date</label>\r\n                                            </div>\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <select class=\"form-control\" formControlName=\"weeklyRentalStartDates\">\r\n                                                    <option *ngFor=\"let item of rentalStartDates;\"\r\n                                                        [value]=\"item.startDate\">\r\n                                                        {{item.startDate}}</option>\r\n                                                </select>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n\r\n                                    <div class=\"card shadow mt-2\"\r\n                                        *ngIf=\"this.marketMap.value['rentalTypes'] == '2' || this.marketMap.value['rentalTypes'] == '4'\">\r\n                                        <div class=\"card-header fw-700\">\r\n                                            Monthly Market(s):\r\n                                        </div>\r\n                                        <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <label class=\"mb-0\" i18n>Rental Start Month</label>\r\n                                            </div>\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <select class=\"form-control\" formControlName=\"rentalStartMonth\"\r\n                                                    (change)=\"checkRentalMonths()\">\r\n                                                    <option *ngFor=\"let item of monthlyMarketDays;\"\r\n                                                        [value]=\"item.RentalMonths\">\r\n                                                        {{item.RentalMonths}}</option>\r\n                                                </select>\r\n                                            </div>\r\n                                        </div>\r\n                                        <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <label class=\"mb-0\">Rental End Month</label>\r\n                                            </div>\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <select class=\"form-control\" formControlName=\"rentalEndMonth\"\r\n                                                    (change)=\"checkRentalMonths()\">\r\n                                                    <option *ngFor=\"let item of monthlyMarketDays;\"\r\n                                                        [value]=\"item.RentalMonths\">\r\n                                                        {{item.RentalMonths}}</option>\r\n                                                </select>\r\n                                            </div>\r\n                                        </div>\r\n\r\n                                        <div class=\"row mt-1\" style=\"padding: .375rem .75rem;\">\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <label class=\"mb-0\" i18n>Rental Start Date</label>\r\n                                            </div>\r\n                                            <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                                                <select class=\"form-control\" formControlName=\"monthlyRentalStartDates\">\r\n                                                    <option *ngFor=\"let item of monthlyRentalStartDates;\"\r\n                                                        [value]=\"item.startDate\">\r\n                                                        {{item.startDate}}</option>\r\n                                                </select>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-4 col-xl-3 text-left mt-2\" *ngIf=\"!anyRentalTypeEnabledForBooking\">\r\n                                    <div class=\"card shadow mt-2\" *ngIf=\"this.marketMap.value['rentalTypes'] == '1'\">\r\n                                        <div class=\"card-header fw-700\">\r\n                                            Rental Day(s):\r\n                                        </div>\r\n                                        <ul class=\"list-group list-group-flush marketDates\">\r\n                                            <li class=\"list-group-item\"\r\n                                                *ngFor=\"let item of filteredMarketDays; let i=index\">\r\n                                                <div class=\"form-check d-flex align-items-center\">\r\n                                                    <input class=\"form-check-input CheckboxClass\" type=\"checkbox\" [id]=\"'chk' + (i + 1)\" (change)=\"checkboxChanged($event,item)\">\r\n                                                    <label class=\"form-check-label ml-2 mt-1\" [attr.for]=\"'chk' + (i + 1)\" i18n>\r\n                                                        {{item.MarketDays}}\r\n                                                    </label>\r\n                                                </div>\r\n                                            </li>\r\n                                        </ul>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-9 text-left pl-lg-0 mt-2\">\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-md-12\">\r\n                                            <div class=\"Layout\">\r\n                                                <ejs-diagram #diagram id=\"diagram\" width=\"100%\" height=\"500px\"\r\n                                                    style=\"overflow: visible;\" (created)='created($event)'\r\n                                                    [selectedItems]=\"selectedItems\" [snapSettings]='snapSettings'></ejs-diagram>\r\n                                            </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"row\">\r\n                                        <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                                    <input type=\"checkbox\" class=\"CheckboxClass chkAvailable mt-2\" disabled>\r\n                                                    <p i18n class=\"chkAlign\">Available</p>\r\n                                        </div>\r\n                                        <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                                    <input type=\"checkbox\" class=\"CheckboxClass chkBooked mt-2\" disabled>\r\n                                                    <p i18n class=\"chkAlign\">Booked</p>\r\n                                        </div>\r\n                                        <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                                    <input type=\"checkbox\" class=\"CheckboxClass chkReserved mt-2\" disabled>\r\n                                                    <p i18n class=\"chkAlign\">Reserved</p>\r\n                                        </div>\r\n                                        <div class=\"col-sm-6 col-md-6 col-lg-3 col-xl-3 text-left\">\r\n                                                    <input type=\"checkbox\" class=\"CheckboxClass chkNonRentable mt-2\"\r\n                                                        disabled>\r\n                                                    <p i18n class=\"chkAlign\">Non Rentable</p>\r\n                                        </div>\r\n                                    </div>\r\n                                    <div class=\"row\" *ngIf=\"anyRentalTypeEnabledForBooking\">\r\n                                        <div class=\"col-12 text-center mt-3 mb-3\">\r\n                                            <label style=\"color: red\">Please log in for renting or renewing the\r\n                                                spaces</label>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </form>\r\n        </div>\r\n    </div>\r\n</div>\r\n","import { DatePipe } from '@angular/common';\r\nimport { Component, OnInit, ViewChild } from '@angular/core';\r\nimport { FormBuilder, FormGroup } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport {\r\n  DiagramComponent, NodeModel, NodeConstraints, MarginModel, ZoomOptions, ConnectorModel, SelectorConstraints,\r\n  AnnotationConstraints, SelectorModel, PaletteModel,DiagramTooltipModel, ImageModel, DiagramTools, SnapConstraints , SnapSettingsModel, DiagramBeforeMenuOpenEventArgs, BasicShapeModel, PathAnnotationModel, TextModel,\r\n  ScrollSettingsModel\r\n} from '@syncfusion/ej2-angular-diagrams';\r\nimport Swal from 'sweetalert2';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\n\r\ninterface DateString {\r\n  startDate: string;\r\n}\r\n@Component({\r\n  selector: 'app-market-map',\r\n  templateUrl: './market-map.component.html',\r\n  styleUrls: ['./market-map.component.scss']\r\n})\r\nexport class MarketMapComponent implements OnInit {\r\n  public loaderIcon: Promise<boolean>;\r\n  marketMap: FormGroup;\r\n  @ViewChild('diagram', { static: false })\r\n  public diagram: DiagramComponent;\r\n  private subscriptions: Subscription[] = [];\r\n  selectedDays: Set<number> = new Set();\r\n  selectedWeekdays: string[] = [];\r\n  additionalMarketDate=[];\r\n  excludedMarketDate = [];\r\n  excludedMarketDays=[];\r\n  public snapSettings: SnapSettingsModel = {\r\n    constraints: SnapConstraints.None, \r\n  };\r\n  parts=[];\r\n  dailyMarketDays=[];\r\n  exclusivedates = []; \r\n  filteredMarketDays = [];\r\n  selectedDates=[];\r\n  sunday = false;\r\n  monday = false;\r\n  tuesday = false;\r\n  wednesday = false;\r\n  thursay = false;\r\n  friday = false;\r\n  saturday = false;\r\n  AllowBookingsCw = false;\r\n  AllowBookingsWeekly = false;\r\n  AllowBookingsCm = false;\r\n  AllowBookingsMonthly = false;\r\n  anyRentalTypeEnabledForBooking = false;\r\n  rentalStartDates = [];\r\n  monthlyRentalStartDates = [];\r\n  AllowBookingsDaily = false;\r\n  selectedDailyRentalMarketDays=[];\r\n  selectedItems: SelectorModel;\r\n  defaultPart;\r\n  selectedMarketDays=[];\r\n  boothShapes;\r\n  fontName;\r\n  weeklyMarketDays=[];\r\n  monthlyMarketDays=[];\r\n  defaultZoomFactor=0.2;\r\n  fontStyle = [];\r\n  layoutImages = [];\r\n  monthlyCMResvPeriod =0;\r\n  defaultRentalTypeSelected;\r\n  images = [];\r\n  public palettes?: PaletteModel[];\r\n  weeklyCWResvPeriod = 0;\r\n  marketId;\r\n  marketName = \"\";\r\n  constructor(\r\n    private formbuilder: FormBuilder,\r\n    private route: ActivatedRoute,\r\n    private rentalService: RentalService,\r\n    private marketInfoService:MarketInfoService,\r\n    private datePipe: DatePipe,\r\n    public router: Router) {\r\n    this.marketMap = this.formbuilder.group({\r\n        rentalTypes: [\"1\"],\r\n        marketWeekSunday:[0],\r\n        marketWeekMonday:[0],\r\n        marketWeekTuesday:[0],\r\n        marketWeekWednesday:[0],\r\n        marketWeekThursday:[0],\r\n        marketWeekFriday:[0],\r\n        marketWeekSaturday:[0],\r\n        marketParts:[''],\r\n        rentalStartDate:[],\r\n        rentalEndDate:[],\r\n        rentalStartMonth:[],\r\n        rentalEndMonth:[],\r\n        monthlyRentalStartDates:[],\r\n        weeklyRentalStartDates:[]\r\n    })\r\n    this.selectedItems = {\r\n      constraints: SelectorConstraints.All &\r\n        ~(SelectorConstraints.ResizeAll | SelectorConstraints.Rotate)\r\n    };\r\n  }\r\n  \r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n    });\r\n    this.getMarketDetails();\r\n    this.getMarketDays();   \r\n    this.getParts();\r\n    this.getListOfValuesData();    \r\n    this.getImages(); \r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getMarketDays() {\r\n    const sub = this.marketInfoService.getMarketDays(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.sunday = res.Sunday;\r\n        this.monday = res.Monday;\r\n        this.tuesday = res.Tuesday;\r\n        this.wednesday = res.Wednesday;\r\n        this.thursay = res.Thursday;\r\n        this.friday = res.Friday;\r\n        this.saturday = res.Saturday;\r\n        this.selectedDays[\"Sunday\"] = res.Sunday;\r\n        this.selectedDays[\"Monday\"] = res.Monday;\r\n        this.selectedDays[\"Tuesday\"] = res.Tuesday;\r\n        this.selectedDays[\"Wednesday\"] = res.Wednesday;\r\n        this.selectedDays[\"Thursday\"] = res.Thursday;\r\n        this.selectedDays[\"Friday\"] = res.Friday;\r\n        this.selectedDays[\"Saturday\"] = res.Saturday;\r\n\r\n        this.marketMap.get('marketWeekSunday').setValue(this.sunday);\r\n        this.marketMap.get('marketWeekMonday').setValue(this.monday);\r\n        this.marketMap.get('marketWeekTuesday').setValue(this.tuesday);\r\n        this.marketMap.get('marketWeekWednesday').setValue(this.wednesday);\r\n        this.marketMap.get('marketWeekThursday').setValue(this.thursay);\r\n        this.marketMap.get('marketWeekFriday').setValue(this.friday);\r\n        this.marketMap.get('marketWeekSaturday').setValue(this.saturday);        \r\n        this.getDailyMarkets();\r\n        this.getWeeklyMarkets();\r\n        this.getMonthlyMarketDays();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getDailyMarkets() {\r\n    this.subscriptions.push(this.marketInfoService.getDailyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.dailyMarketDays = response;\r\n        this.filteredMarketDays = this.dailyMarketDays;\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  checkboxChanged(args, item: any) {\r\n    if (args.srcElement.checked) {\r\n      this.selectedDailyRentalMarketDays.push(new Date(item.MarketDays));     \r\n    } else {\r\n      this.selectedDailyRentalMarketDays = this.selectedDailyRentalMarketDays.filter(day => day.getTime() !== new Date(item.MarketDays).getTime());\r\n    }\r\n  }\r\n\r\n  changeMarketMap(){\r\n    this.diagram.clear();\r\n  }\r\n\r\n  checkRentalWeeks() {\r\n    const rentalStartDate = new Date(this.marketMap.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.marketMap.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.marketMap.get('rentalEndDate').setValue(this.marketMap.value['rentalStartDate']);\r\n    }\r\n    this.selectedWeeklyMarketDays();\r\n  }\r\n\r\n  checkRentalMonths() {\r\n    if (this.marketMap.value['rentalStartMonth'] && this.marketMap.value['rentalEndMonth']) {\r\n      const startMonth = this.marketMap.value['rentalStartMonth'];\r\n      const endMonth = this.marketMap.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n      if (endMonthYear < startYear || (endMonthYear == startYear && endMonthIndex < startMonthIndex)) {\r\n        this.marketMap.get('rentalEndMonth').setValue(startMonth);\r\n      }    \r\n      this.selectedMonthlyMarketDays();      \r\n    }\r\n  }  \r\n\r\n  selectedWeeklyMarketDays(){\r\n    this.selectedMarketDays = [];\r\n    this.marketMap.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.marketMap.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.marketMap.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.marketMap.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.marketMap.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.marketMap.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.marketMap.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n\r\n    const rentalStartDate = new Date(this.marketMap.value['rentalStartDate'].split('-')[0]);\r\n    const rentalEndDate = new Date(this.marketMap.value['rentalEndDate'].split('-')[0]);\r\n    if (rentalEndDate < rentalStartDate) {\r\n      this.marketMap.get('rentalEndDate').setValue(this.marketMap.value['rentalStartDate']);\r\n    }\r\n    const today: Date = new Date(new Date().toDateString())\r\n    this.rentalStartDates = [];\r\n    this.selectedMarketDays.map((el, i) => {\r\n      const startDate = new Date(this.marketMap.value['rentalStartDate'].split(\"-\")[0]);\r\n      const endDate = new Date(this.marketMap.value['rentalEndDate'].split(\"-\")[1]);\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (currentDay <= endDate) {\r\n        if (currentDay >= today) {\r\n          if (currentDay.getDay() === selectedDayOfWeek) {\r\n            this.rentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n          }\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.rentalStartDates.sort(compareDates);\r\n\r\n      if (this.rentalStartDates.length)\r\n        this.marketMap.get('weeklyRentalStartDates').setValue(this.rentalStartDates[0].startDate);     \r\n    });   \r\n  }\r\n\r\n  selectedMonthlyMarketDays() {\r\n    this.selectedMarketDays = [];\r\n    this.marketMap.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.marketMap.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.marketMap.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.marketMap.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.marketMap.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.marketMap.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.marketMap.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n    this.monthlyRentalStartDates = [];\r\n    this.selectedMarketDays.map((el, i) => {      \r\n      const currentDate = new Date();\r\n      const currentYear = currentDate.getFullYear();\r\n      const currentMonth = currentDate.getMonth();\r\n      const startMonth = this.marketMap.value['rentalStartMonth'];\r\n      const endMonth = this.marketMap.value['rentalEndMonth'];\r\n      const [startMonthDate, startYear] = startMonth.split(' ');\r\n      const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n      const excludedDates = this.excludedMarketDays.map(dateString => new Date(dateString));\r\n      const startMonthIndex = this.getMonthIndex(startMonthDate);\r\n      const endMonthIndex = this.getMonthIndex(startMonthDate);\r\n      var startDate;\r\n      if (startYear === currentYear.toString() && startMonthIndex === currentMonth)\r\n        startDate = currentDate\r\n      else\r\n        startDate = new Date(startYear, startMonthIndex, 1);\r\n      const endDate = new Date(startYear, endMonthIndex + 1, 0);;\r\n      const selectedDayOfWeek = el - 1;\r\n      let currentDay = new Date(startDate);\r\n      while (new Date(this.datePipe.transform(currentDay,'MM/dd/yyyy')) <= new Date(this.datePipe.transform(endDate,'MM/dd/yyyy'))) {\r\n        var exludedDate = excludedDates.some(date => {\r\n          return this.datePipe.transform(date, 'MM/dd/yyyy') === this.datePipe.transform(currentDay, 'MM/dd/yyyy');\r\n        });\r\n        if (currentDay.getDay() === selectedDayOfWeek && !exludedDate) {\r\n          this.monthlyRentalStartDates.push({ startDate: this.datePipe.transform(new Date(currentDay), 'MMM d, y') });\r\n        }\r\n        currentDay.setDate(currentDay.getDate() + 1);\r\n      }\r\n      const compareDates = (a: DateString, b: DateString): number => {\r\n        const dateA = new Date(a.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        const dateB = new Date(b.startDate.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n        return dateA - dateB;\r\n      };\r\n      const sortedDates = this.monthlyRentalStartDates.sort(compareDates);\r\n      if (this.monthlyRentalStartDates && this.monthlyRentalStartDates.length > 0) {\r\n        this.marketMap.get('monthlyRentalStartDates').setValue(this.monthlyRentalStartDates[0].startDate)\r\n      }\r\n    });\r\n  }\r\n\r\n  getMonthIndex(monthString: string): number {\r\n    const months = [\r\n      'January', 'February', 'March', 'April', 'May', 'June',\r\n      'July', 'August', 'September', 'October', 'November', 'December'\r\n    ];\r\n    const monthIndex = months.findIndex(month => month.toLowerCase() === monthString.toLowerCase());\r\n    return monthIndex !== -1 ? monthIndex : 0;\r\n  }\r\n\r\n  rentalTypeChange(){\r\n    this.selectedMarketDays =[];\r\n    this.diagram.clear();\r\n   this.getMarketDays();\r\n  }\r\n\r\n  viewLayout() {\r\n    this.diagram.clear(); \r\n    this.selectedMarketDays=[];\r\n    this.marketMap.value['marketWeekSunday'] == true ? this.selectedMarketDays.push(1) : 0;\r\n    this.marketMap.value['marketWeekMonday'] == true ? this.selectedMarketDays.push(2) : 0;\r\n    this.marketMap.value['marketWeekTuesday'] == true ? this.selectedMarketDays.push(3) : 0;\r\n    this.marketMap.value['marketWeekWednesday'] == true ? this.selectedMarketDays.push(4) : 0;\r\n    this.marketMap.value['marketWeekThursday'] == true ? this.selectedMarketDays.push(5) : 0;\r\n    this.marketMap.value['marketWeekFriday'] == true ? this.selectedMarketDays.push(6) : 0;\r\n    this.marketMap.value['marketWeekSaturday'] == true ? this.selectedMarketDays.push(7) : 0;\r\n\r\n    var rentalType = this.marketMap.value['rentalTypes'];\r\n    switch (rentalType) {\r\n      case '1':\r\n        if (this.selectedDailyRentalMarketDays.length == 0) {\r\n          Swal.fire({\r\n            // title: $localize`Warning`,\r\n            text: `Please select a Rental Day`,\r\n            icon: \"warning\",\r\n            confirmButtonText: `Ok`,\r\n          });\r\n        //  Swal.fire('Hey user!', 'You are the rockstar!', 'info');\r\n        }\r\n        else {\r\n          this.loaderIcon = Promise.resolve(true);\r\n          this.subscriptions.push(this.marketInfoService.getAllBoothsForDailyRentalTypeLayout(this.marketId,this.marketMap.value['marketParts'], this.selectedDailyRentalMarketDays).subscribe((res: any) => {\r\n            if (res) {\r\n              const data = res;\r\n              this.bindBoothsToLayout(data);\r\n              this.getBuildingForLayout();\r\n              this.getImagesForLayout();\r\n              this.loaderIcon = Promise.resolve(false);\r\n            }\r\n          }, err => {\r\n            this.loaderIcon = Promise.resolve(false);\r\n          }));\r\n        }\r\n        break;\r\n      case '3':\r\n      case '5':\r\n        this.subscriptions.push(this.rentalService.getRentalSettings(this.marketId).subscribe((response: any) => {\r\n          if (response) {\r\n            const weeklyRentalStartDateYear = new Date(this.marketMap.value['rentalStartDate'].split(\"-\")[0]).getFullYear();\r\n            const weeklyRentalStartDateMonth = new Date(this.marketMap.value['rentalStartDate'].split(\"-\")[0]).getMonth() + 1;\r\n            const weeklyRentalEndDateYear = new Date(this.marketMap.value['rentalEndDate'].split(\"-\")[1]).getFullYear();\r\n            const weeklRentalEndDateMonth = new Date(this.marketMap.value['rentalEndDate'].split(\"-\")[1]).getMonth() + 1;\r\n            const weeklyRentalStartDateYearMonth = `${weeklyRentalStartDateYear}${weeklyRentalStartDateMonth < 10 ? '0' : ''}${weeklyRentalStartDateMonth}`;\r\n            const weeklyRentalEndDateYearMonth = `${weeklyRentalEndDateYear}${weeklRentalEndDateMonth < 10 ? '0' : ''}${weeklRentalEndDateMonth}`;\r\n            var marketDays = '';\r\n            this.selectedMarketDays.forEach(element => {\r\n              marketDays = marketDays.concat(element) + ',';\r\n            });\r\n            if (this.selectedMarketDays.length > 0) {\r\n              this.selectedDates = [];\r\n              this.selectedMarketDays.map((el, i) => {\r\n                const startDate = new Date(this.marketMap.value['rentalStartDate'].split(\"-\")[0]);\r\n                const endDate = new Date(this.marketMap.value['rentalEndDate'].split(\"-\")[1]);\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    this.selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n              });\r\n            }\r\n            var marketDays = '';\r\n            this.selectedMarketDays.forEach(element => {\r\n              marketDays = marketDays.concat(element) + ',';\r\n            });\r\n\r\n            var rentalStartDate = this.selectedDates[0];\r\n            var rentalEndDate = this.selectedDates[this.selectedDates.length - 1];\r\n            var obj = {\r\n              PartId: this.marketMap.value['marketParts'],\r\n              RentalStartDate: new Date(this.marketMap.value['weeklyRentalStartDates']),\r\n              RentalEndDate: new Date(rentalEndDate),\r\n              FirstDayOfRentalStartWeek: new Date(this.marketMap.value['weeklyRentalStartDates']),\r\n              FirstDayOfRentalEndWeek: new Date(rentalEndDate),\r\n              RentalStartDateYearMonth: weeklyRentalStartDateYearMonth,\r\n              RentalEndDateYearMonth: weeklyRentalEndDateYearMonth,\r\n              MarketDays: marketDays.substring(0, marketDays.length - 1),\r\n              WeeklyCombWeeklyReservationPeriod: response.WeeklyCombWeeklyReservationPeriod,\r\n              MonthlyCombMonthlyReservationPeriod: response.MonthlyCombMonthlyReservationPeriod,\r\n              RentalStartDateWeekDayNumber: new Date(rentalStartDate).getDay(),\r\n              AllowVendorVacation: false,\r\n              Monday: this.marketMap.value['marketWeekMonday'] ? true : false,\r\n              Tuesday: this.marketMap.value['marketWeekTuesday'] ? true : false,\r\n              Wednesday: this.marketMap.value['marketWeekWednesday'] ? true : false,\r\n              Thursday: this.marketMap.value['marketWeekThursday'] ? true : false,\r\n              Friday: this.marketMap.value['marketWeekFriday'] ? true : false,\r\n              Saturday: this.marketMap.value['marketWeekSaturday'] ? true : false,\r\n              Sunday: this.marketMap.value['marketWeekSunday'] ? true : false,\r\n            }\r\n            this.subscriptions.push(this.marketInfoService.getALLBoothsForLayoutALLRentalTypes(this.marketId, obj).subscribe((response) => {\r\n              let data = response;\r\n              this.bindBoothsToLayout(data);\r\n              this.getBuildingForLayout();\r\n              this.getImagesForLayout();\r\n            }, err => {\r\n            }));\r\n          }\r\n        }));\r\n        break;\r\n      case '2':\r\n      case '4':\r\n        this.subscriptions.push(this.rentalService.getRentalSettings(this.marketId).subscribe((response: any) => {\r\n          if (response) {\r\n            const rentalStartDateYear = new Date(this.marketMap.get('rentalStartMonth').value.split('-')[0]).getFullYear();\r\n            const rentalStartDateMonth = new Date(this.marketMap.get('rentalStartMonth').value.split('-')[0]).getMonth() + 1;\r\n            const rentalEndDateYear = new Date(this.marketMap.get('rentalEndMonth').value.split('-')[0]).getFullYear();\r\n            const rentalEndDateMonth = new Date(this.marketMap.get('rentalEndMonth').value.split('-')[0]).getMonth() + 1;\r\n            const rentalStartDateYearMonth = `${rentalStartDateYear}${rentalStartDateMonth < 10 ? '0' : ''}${rentalStartDateMonth}`;\r\n            const rentalEndDateYearMonth = `${rentalEndDateYear}${rentalEndDateMonth < 10 ? '0' : ''}${rentalEndDateMonth}`;\r\n            if (this.selectedMarketDays.length > 0) {\r\n              this.selectedDates = [];\r\n              this.selectedMarketDays.map((el, i) => {\r\n                const startDate = new Date(this.marketMap.get('rentalStartMonth').value.split('-')[0])\r\n                const endMonth = this.marketMap.value['rentalEndMonth'];\r\n                const [endMonthDate, endMonthYear] = endMonth.split(' ');\r\n                const endMonthIndex = this.getMonthIndex(endMonthDate);\r\n                const endDate = new Date(endMonthYear, endMonthIndex + 1, 0);\r\n\r\n                const selectedDayOfWeek = el - 1;\r\n                let currentDay = new Date(startDate);\r\n                while (currentDay <= endDate) {\r\n                  if (currentDay.getDay() === selectedDayOfWeek) {\r\n                    this.selectedDates.push(this.datePipe.transform(new Date(currentDay), 'MM/dd/yyyy'));\r\n                  }\r\n                  currentDay.setDate(currentDay.getDate() + 1);\r\n                }\r\n\r\n                const compareDates = (a, b): number => {\r\n                  const dateA = new Date(a.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  const dateB = new Date(b.replace(/(\\d+)(st|nd|rd|th)/, '$1')).getTime();\r\n                  return dateA - dateB;\r\n                };\r\n                const sortedDates = this.selectedDates.sort(compareDates);\r\n              });\r\n            }\r\n            var marketDays = '';\r\n            this.selectedMarketDays.forEach(element => {\r\n              marketDays = marketDays.concat(element) + ',';\r\n            });\r\n\r\n            var rentalStartDate = this.selectedDates[0];\r\n            var rentalEndDate = this.selectedDates[this.selectedDates.length - 1];\r\n            var obj = {\r\n              PartId: this.marketMap.value['marketParts'],\r\n              RentalStartDate: new Date(this.marketMap.value['monthlyRentalStartDates']),\r\n              RentalEndDate: new Date(rentalEndDate),\r\n              FirstDayOfRentalStartWeek: new Date(this.marketMap.value['monthlyRentalStartDates']),\r\n              FirstDayOfRentalEndWeek: new Date(rentalEndDate),\r\n              RentalStartDateYearMonth: rentalStartDateYearMonth,\r\n              RentalEndDateYearMonth: rentalEndDateYearMonth,\r\n              MarketDays: marketDays.substring(0, marketDays.length - 1),\r\n              WeeklyCombWeeklyReservationPeriod: response.WeeklyCombWeeklyReservationPeriod,\r\n              MonthlyCombMonthlyReservationPeriod: response.MonthlyCombMonthlyReservationPeriod,\r\n              RentalStartDateWeekDayNumber: new Date(rentalStartDate).getDay(),\r\n              AllowVendorVacation: false,\r\n              Monday: this.marketMap.value['marketWeekMonday'] ? true : false,\r\n              Tuesday: this.marketMap.value['marketWeekTuesday'] ? true : false,\r\n              Wednesday: this.marketMap.value['marketWeekWednesday'] ? true : false,\r\n              Thursday: this.marketMap.value['marketWeekThursday'] ? true : false,\r\n              Friday: this.marketMap.value['marketWeekFriday'] ? true : false,\r\n              Saturday: this.marketMap.value['marketWeekSaturday'] ? true : false,\r\n              Sunday: this.marketMap.value['marketWeekSunday'] ? true : false,\r\n            }\r\n            this.subscriptions.push(this.marketInfoService.getALLBoothsForLayoutALLRentalTypes(this.marketId, obj).subscribe((response) => {\r\n              let data = response;\r\n              this.bindBoothsToLayout(data);\r\n              this.getBuildingForLayout();\r\n              this.getImagesForLayout();\r\n            }, err => {\r\n            }));\r\n          }\r\n        }));\r\n        break;\r\n    }\r\n  }\r\n\r\n  getWeeklyMarkets() {\r\n    this.marketInfoService.getWeeklyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.weeklyMarketDays = response;\r\n        this.marketMap.patchValue({\r\n          rentalStartDate: response[0].RentalStartDays,\r\n          rentalEndDate: response[0].RentalEndDays,\r\n        });\r\n        this.selectedWeeklyMarketDays();\r\n      }\r\n    }, (err) => {\r\n    });\r\n  }\r\n\r\n  getMonthlyMarketDays() {\r\n    this.subscriptions.push(this.marketInfoService.getMonthlyMarketDays(this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.monthlyMarketDays = response;\r\n        this.marketMap.patchValue({\r\n          rentalStartMonth: response[0].RentalMonths,\r\n          rentalEndMonth: response[0].RentalMonths,\r\n        })\r\n        this.selectedMonthlyMarketDays();  \r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n\r\n  toggleDaySelection(day: string, event: any) {\r\n    this.selectedDailyRentalMarketDays = [];\r\n    var selectedRentalTypes= this.marketMap.value['rentalTypes']\r\n    if (selectedRentalTypes == \"4\" || selectedRentalTypes == \"5\") {\r\n      this.selectedMarketDays.map((el, i) => {\r\n        switch (el) {\r\n          case 1: this.marketMap.get('marketWeekSunday').setValue(true);\r\n            break;\r\n          case 2: this.marketMap.get('marketWeekMonday').setValue(true);\r\n            break;\r\n          case 3: this.marketMap.get('marketWeekTuesday').setValue(true);\r\n            break;\r\n          case 4: this.marketMap.get('marketWeekWednesday').setValue(true);\r\n            break;\r\n          case 5: this.marketMap.get('marketWeekThursday').setValue(true);\r\n            break;\r\n          case 6: this.marketMap.get('marketWeekFriday').setValue(true);\r\n            break;\r\n          case 7: this.marketMap.get('marketWeekSaturday').setValue(true);\r\n            break;\r\n        }\r\n      });\r\n    }\r\n      this.selectedDays[day] = event.target.checked;\r\n      this.filterDates(selectedRentalTypes);\r\n  }\r\n\r\n  filterDates(selectedRentalTypes) {\r\n     if (selectedRentalTypes == \"1\"){\r\n      this.filteredMarketDays = this.dailyMarketDays.filter(item => {\r\n        const dayName = this.getDayNameFromDate(item.MarketDays);\r\n        return this.selectedDays[dayName];\r\n      });\r\n    }\r\n\r\n    var selectedRentalTypes= this.marketMap.value['rentalTypes']\r\n    if (selectedRentalTypes == \"3\" || selectedRentalTypes == \"5\") {\r\n      this.selectedWeeklyMarketDays();\r\n\r\n    } else if (selectedRentalTypes == \"2\" || selectedRentalTypes == \"4\") {\r\n      this.selectedMonthlyMarketDays();\r\n    }\r\n  }\r\n\r\n  getDayNameFromDate(dateString: string): string {\r\n    const date = new Date(dateString);\r\n    return date.toLocaleDateString('en-US', { weekday: 'long' });\r\n  }\r\n\r\n  getParts() {\r\n    const sub = this.marketInfoService.getParts(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.parts = res;\r\n        this.getWebRentalSetting();\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getWebRentalSetting(){\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.defaultPart = res.DefaultLayoutPart;\r\n        this.AllowBookingsDaily =res.AllowBookingsDaily;\r\n        this.AllowBookingsMonthly = res.AllowBookingsMonthly;\r\n        this.AllowBookingsCm =res.AllowBookingsCm;\r\n        this.AllowBookingsWeekly = res.AllowBookingsWeekly;\r\n        this.AllowBookingsCw = res.AllowBookingsCw;\r\n        this.weeklyCWResvPeriod = res.MaxBookingWeeks;\r\n        this.monthlyCMResvPeriod = res.MaxBookingMonths;\r\n        this.defaultRentalTypeSelected = res.DefaultRentalType;\r\n        this.marketMap.get('marketParts').setValue(this.defaultPart);\r\n        this.marketMap.get('rentalTypes').setValue(this.defaultRentalTypeSelected.toString());\r\n        this.anyRentalTypeEnabledForBooking = this.AllowBookingsDaily || this.AllowBookingsMonthly || this.AllowBookingsCm\r\n        || this.AllowBookingsWeekly || this.AllowBookingsCw;\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getListOfValuesData() {\r\n    forkJoin({\r\n      res: this.marketInfoService.getListOfValuesData(),\r\n      layoutFonts: this.marketInfoService.getLayoutFonts(this.marketId)\r\n    }).subscribe(({ res, layoutFonts }) => {\r\n      if (res) {\r\n        this.boothShapes = res.BoothShapes;\r\n        this.fontName = res.FontName;\r\n        this.fontStyle = res.FontStyle;\r\n      }\r\n      if (layoutFonts) {\r\n        this.defaultZoomFactor = layoutFonts.DefaultZoomFactor ?? 0;\r\n      }\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  bindBoothsToLayout(data){\r\n    if (data.length > 0) {\r\n      this.loaderIcon = Promise.resolve(true);\r\n      data.map((item) => {\r\n        var fontColor = item.Status.toLowerCase() == \"r\" ? \"#fff\" : \"#000\";\r\n        var backColor = \"#fff\"\r\n        var boothStatus = \"Booked\";\r\n        switch (item.Status.toLowerCase()) {\r\n          case \"r\": boothStatus = \"Reserved\"\r\n          backColor = '#0032CC';\r\n            break;\r\n          case \"ro\": boothStatus = \"Reserved Only\"\r\n          backColor = '#483D8B';\r\n            break;\r\n          case \"a\": boothStatus = \"Available\"\r\n          backColor = '#fff';\r\n            break;\r\n          case \"ab\": boothStatus = \"Absentee Booking\"\r\n          backColor = '#4F9F60';\r\n            break;\r\n          default: boothStatus = \"Booked\"\r\n          backColor = '#4F9F60';\r\n            break;\r\n        }\r\n\r\n        if(item.ExcludeForWeb){\r\n          backColor = '#ff007f';\r\n        }\r\n\r\n        const nodeId = 'node_' + item.BoothNumber;\r\n        const diagramNode: NodeModel = {\r\n          id: nodeId,\r\n          shape: {\r\n            type: 'Basic',\r\n            shape: this.boothShapes.filter(e => e.Id == item.ShapeId)[0].Name\r\n          },\r\n          style: {\r\n            fill: backColor,\r\n            strokeColor: this.convertColor(item.BorderColor),\r\n            color: fontColor,\r\n            strokeWidth: 1,\r\n            fontSize: item.FontSize,\r\n            textWrapping: 'Wrap',\r\n            fontFamily: this.fontName.filter(e => e.Id == item.FontName)[0].Name\r\n          },\r\n          annotations:\r\n            [{\r\n              content: item.BoothNumber,\r\n              style: {\r\n                fontSize: item.FontSize,\r\n                color: fontColor,\r\n                fontFamily: this.fontName.filter(e => e.Id == item.FontName)[0].Name,\r\n                textWrapping: 'Wrap',\r\n                bold: this.fontStyle.filter(e => e.Id == item.FontStyle)[0].Name.toLowerCase().includes('bold'),\r\n                italic: this.fontStyle.filter(e => e.Id == item.FontStyle)[0].Name.toLowerCase().includes('italic')\r\n              },\r\n              constraints: AnnotationConstraints.ReadOnly\r\n            }],\r\n          width: item.Width * 3,\r\n          height: item.Length * 3,\r\n          addInfo: {\r\n            allowDrag: true,\r\n            name: 'booth',\r\n            status: item.Status\r\n          },\r\n          constraints: NodeConstraints.Default & ~(NodeConstraints.Drag) | NodeConstraints.Tooltip,\r\n          offsetX: item.LeftCoordinate,\r\n          offsetY: item.TopCoordinate,\r\n          rotateAngle: item.RotateAngle\r\n        };\r\n        this.diagram.add(diagramNode);\r\n      });\r\n      this.loaderIcon = Promise.resolve(false);\r\n      this.diagram.fitToPage();\r\n      if (this.defaultZoomFactor) {\r\n        let zoomOptions: ZoomOptions = {\r\n          type: 'ZoomIn',\r\n          zoomFactor: this.defaultZoomFactor\r\n        };\r\n        this.diagram.zoomTo(zoomOptions);\r\n      }\r\n    }    \r\n  }\r\n\r\n  layoutZoomInClick(event) {\r\n    let zoomOptions: ZoomOptions = {\r\n      type: \"ZoomIn\",\r\n      zoomFactor: 0.2\r\n    }\r\n    this.diagram.zoomTo(zoomOptions);\r\n  }\r\n\r\n  layoutZoomOutClick(flag = false) {\r\n    let zoomOptions: ZoomOptions = {\r\n      type: \"ZoomOut\",\r\n      zoomFactor: 0.2\r\n    }\r\n    this.diagram.zoomTo(zoomOptions);\r\n  }\r\n\r\n  getBuildingForLayout() {\r\n    const sub = this.marketInfoService.getBuildingAreasInLayOut(this.marketMap.value['marketParts'], this.marketId).subscribe((res: any) => {\r\n      let data = res;\r\n      if (data.length > 0) {\r\n        data.map((item) => {\r\n          const nodeId = 'node_building' + item.BuildingId;\r\n          const diagramNode: NodeModel = {\r\n            id: nodeId,\r\n            shape: {\r\n              type: 'Basic',\r\n              shape: this.boothShapes.filter(e => e.Id == item.ShapeId)[0].Name\r\n            },\r\n            style: {\r\n              fill: item.BuildingBackColor != 0 ? this.convertColor(item.BuildingBackColor) : \"#000\",\r\n              strokeColor: item.BuildingBackColor != 0 ? this.convertColor(item.BuildingBorderColor) : \"#000\",\r\n              strokeWidth: 1,\r\n              fontSize: item.BuildingFontSize,\r\n              textWrapping: 'Wrap',\r\n              fontFamily: this.fontName.filter(e => e.Id == item.BuildingFontNameId)[0].Name\r\n            },\r\n            annotations:\r\n              [{\r\n                content: item.Caption,\r\n                style: {\r\n                  fontSize: item.BuildingFontSize,\r\n                  fontFamily: this.fontName.filter(e => e.Id == item.BuildingFontNameId)[0].Name,\r\n                  textWrapping: 'Wrap',\r\n                  bold: this.fontStyle.filter(e => e.Id == item.BuildingFontStyleId)[0].Name.toLowerCase().includes('bold'),\r\n                  italic: this.fontStyle.filter(e => e.Id == item.BuildingFontStyleId)[0].Name.toLowerCase().includes('italic')\r\n                },\r\n                constraints: AnnotationConstraints.ReadOnly\r\n              }],\r\n            width: item.BuildingWidth * 3,\r\n            height: item.BuildingLength * 3,\r\n            addInfo: {\r\n              allowDrag: false, // Enable drag-and-drop for this shape\r\n              id: item.BuildingId,\r\n              name: 'building'\r\n            },\r\n            constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n            offsetX: item.LeftCoordinate,\r\n            offsetY: item.TopCoordinate,\r\n            rotateAngle: item.BuildingVerticalDisplay == true ? 90 : 0\r\n          };\r\n          this.diagram.add(diagramNode);\r\n        });\r\n        this.diagram.fitToPage();\r\n        if (this.defaultZoomFactor) {\r\n          let zoomOptions: ZoomOptions = {\r\n            type: 'ZoomIn',\r\n            zoomFactor: this.defaultZoomFactor\r\n          };\r\n          this.diagram.zoomTo(zoomOptions);\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  getImagesForLayout() {\r\n    this.marketInfoService.getLayoutImages(this.marketMap.value['marketParts'], this.marketId).subscribe((response: any) => {\r\n      if (response) {\r\n        let data = response;\r\n        if (data.length > 0) {\r\n\r\n          for (let i = 0; i < data.length; i++) {\r\n            let node = {\r\n              id: 'node_images' + data[i].ImagesForLayoutId,\r\n              addInfo: {\r\n                status: this.layoutImages.filter(e => e.ImageId == data[i].LayoutImagesId)[0].ImagePath,\r\n                id: data[i].ImagesForLayoutId,\r\n                name: \"image\",\r\n                ImageId: data[i].LayoutImagesId,\r\n              },\r\n              style: {\r\n                strokeWidth: 0\r\n              },\r\n              annotations: [\r\n                {\r\n                  //    content: this.layoutImages.filter(e => e.ImageId == data[i].LayoutImagesId)[0].ImageName,\r\n                  constraints: AnnotationConstraints.ReadOnly,\r\n                  offset: { x: 0.05, y: -0.07 }\r\n                }\r\n              ],\r\n              constraints: NodeConstraints.Default & ~(NodeConstraints.Drag),\r\n              shape: { type: 'Image', shape: 'Image' } as ImageModel, // Type assertion to ImageModel\r\n              width: data[i].ImageWidth * 3,\r\n              height: data[i].ImageLength * 3,\r\n              offsetX: data[i].ImageLeftCoordinate,\r\n              offsetY: data[i].ImageTopCoordinate,\r\n            };\r\n\r\n            if ((node.shape as { type: string }).type === 'Image') {\r\n              (node.shape as ImageModel).source = node.addInfo.status;\r\n            }\r\n\r\n            this.diagram.add(node);\r\n          }\r\n          this.diagram.fitToPage();\r\n          if (this.defaultZoomFactor) {\r\n            let zoomOptions: ZoomOptions = {\r\n              type: 'ZoomIn',\r\n              zoomFactor: this.defaultZoomFactor\r\n            };\r\n            this.diagram.zoomTo(zoomOptions);\r\n          }\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  getImages() {\r\n    const sub = this.marketInfoService.getImages().subscribe((res: any) => {\r\n      if (res) {\r\n        this.layoutImages = res;\r\n        let data = this.layoutImages;\r\n        if (this.layoutImages.length > 0) {\r\n          for (let i = 0; i < this.layoutImages.length; i++) {\r\n            const nodeId = 'node_' + data[i].ImageId;\r\n            let node = {\r\n              id: nodeId, addInfo: {\r\n                status: data[i].ImagePath, id: 'z' + data[i].ImageId, name: \"image\", ImageId: data[i].ImageId,\r\n              },\r\n              annotations: [{ content: data[i].ImageName, constraints: AnnotationConstraints.ReadOnly, offset: { x: 0.5, y: -0.07 } }],\r\n              shape: { type: 'Image', shape: 'Image' },\r\n              width: 50, height: 50, offsetX: 50, offsetY: 50,\r\n            };\r\n            if (node.shape.type === 'Image') {\r\n              (node.shape as ImageModel).source = node.addInfo.status;\r\n            }\r\n            this.images.push(node);\r\n          }\r\n\r\n          this.palettes = [\r\n            {\r\n              id: 'Images',\r\n              expanded: true,\r\n              symbols: this.images,\r\n              title: 'Images'\r\n            },\r\n          ]\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  convertColor(colorValue: number): string {\r\n    if (colorValue == 255 || colorValue == 65280 || colorValue == 0)\r\n      return '#' + colorValue.toString(16).padStart(6, '0');\r\n    else\r\n      return '#' + colorValue.toString(16);\r\n  }\r\n\r\n  public created(args: Object): void {\r\n    //fit the diagram to the page with respect to mode and region\r\n     this.diagram.fitToPage({\r\n         mode: 'Page',\r\n         region: 'Content',\r\n        //  margin: {\r\n        //      bottom: 50\r\n        //  },\r\n         canZoomIn: true,\r\n     });\r\n     this.diagram.scrollSettings.horizontalOffset = 0;\r\n     this.diagram.scrollSettings.verticalOffset = 0;\r\n}\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\n\r\n@Injectable({\r\n    providedIn: 'root',\r\n})\r\n\r\nexport class NewsService {\r\n    private baseURL: string;\r\n    constructor(private http: HttpClient,\r\n    ) {\r\n        this.baseURL = environment.apiBaseUrl;\r\n    }\r\n\r\n    public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n    getActiveNews(MarketId: any): Observable<any[]> {\r\n        console.log(\"MarketId: \", MarketId);\r\n        return this.http.get<any[]>(\r\n            `${this.baseURL}/News/GetAllActiveNews?MarketId=` + MarketId,\r\n            { observe: 'response' })\r\n            .pipe(\r\n                map(res => {\r\n                    const result = res.body as any[];\r\n                    return result;\r\n                }),\r\n                catchError(this.handleError)\r\n            );\r\n    }\r\n\r\n\r\n    private handleError(error: HttpErrorResponse) {\r\n        console.error('server error:', error);\r\n        if (error.error instanceof Error) {\r\n            const errMessage = error.error.message;\r\n            return throwError(errMessage);\r\n        }\r\n        return throwError(error || 'Node.js server error');\r\n    }\r\n}","<div class=\"container-fluid\">\r\n    <div class=\"row\">\r\n        <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n            <app-rental-menu></app-rental-menu>\r\n        </div>\r\n        <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n            <div class=\"container mainContainer\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-5 text-left mt-4\">\r\n                        <label class=\"mainHeading\">News</label>\r\n                    </div>\r\n                    <div class=\"col-7 text-right mt-4\">\r\n                        <label class=\"mainHeading\">{{marketName}}</label>\r\n                    </div>\r\n                </div>\r\n                <div class=\"bgWghite shadow mt-2\">\r\n                    <div *ngFor=\"let data of filteredNews let i = index;\">\r\n                        <div class=\"container\">\r\n                            <div class=\"row pt-4 pb-3\">\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-10 col-xl-10 text-start\">\r\n                                    <label class=\"newsHeading mt-2\">{{data.NewsTitle}}</label>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-12 col-lg-2 col-xl-2 text-start\">\r\n                                    <button class=\"btn btn-primary\" data-toggle=\"modal\" data-target=\"#modalReadMore\"\r\n                                        (click)=\"openModal(data)\">Read More</button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                        <hr class=\"my-0\" />\r\n                    </div>\r\n                    <div class=\"container\" [hidden]=\"this.NewsData.length<=4\">\r\n                        <div class=\"row\">\r\n                            <div class=\"col-12 text-start my-3\">\r\n                                <a style=\"font-size: 15px; color: #007bff;\" (click)=\"loadMoreNews()\">\r\n                                    <label><u>{{label}}</u></label>\r\n                                </a>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <!-- Modal Read More-->\r\n    <!-- <div class=\".d_box modal fade\" id=\"modalReadMore\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"modalReadMoreTitle\"\r\n        aria-hidden=\"true\">\r\n        <div class=\"d_box modal-dialog modal-dialog-centered\" role=\"document\">\r\n            <div class=\"modal-content\">\r\n                <div class=\"modal-body py-5\">\r\n                    <h5 class=\"justify fw-700\">{{selectedNews?.NewsTitle}}</h5>\r\n                    <label class=\"justify mt-2\" style=\"font-size: 16px;\">{{selectedNews?.Description}}</label>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div> -->\r\n    \r\n    <div class=\"modal fade\" id=\"modalReadMore\" tabindex=\"-1\" role=\"dialog\" aria-labelledby=\"modalReadMoreTitle\"\r\n        aria-hidden=\"true\">\r\n        <div class=\"modal-dialog modal-dialog-centered modal-lg\" role=\"document\">\r\n            <div class=\"modal-content\">\r\n                <div class=\"modal-header\">\r\n                    <h5 class=\"modal-title\" id=\"exampleModalLabel\" style=\"font-size: 18px;\">\r\n                        <b>{{selectedNews?.NewsTitle}}</b>\r\n                    </h5>\r\n                    <button type=\"button\" class=\"close\" data-dismiss=\"modal\" aria-label=\"Close\">\r\n                        <span aria-hidden=\"true\">&times;</span>\r\n                    </button>\r\n                </div>\r\n                <div class=\"modal-body\">\r\n                    <p class=\"mt-2\" style=\"font-size: 16px; white-space: pre-wrap;\">{{selectedNews?.Description}}</p>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n    <!-- Modal Read More Ends Here-->\r\n</div>","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { Subscription } from 'rxjs';\r\nimport { NewsService } from 'src/app/services/News.service';\r\nimport { DatePipe } from \"@angular/common\";\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\n@Component({\r\n  selector: 'app-news',\r\n  templateUrl: './news.component.html',\r\n  styleUrls: ['./news.component.scss']\r\n})\r\nexport class NewsComponent {\r\n  MarketId: any;\r\n  private subscriptions: Subscription[] = [];\r\n  news: any[];\r\n  selectedNews: any;\r\n  error: any;\r\n  filteredNews: any[];\r\n  isMoreNews: boolean;\r\n  label: string;\r\n  marketName = \"\";\r\n  public loaderIcon: Promise<boolean>;\r\n  constructor(public newsService: NewsService, private route: ActivatedRoute, public datePipe: DatePipe,\r\n    private marketInfoService: MarketInfoService\r\n  ) { }\r\n\r\n  public NewsData: any;\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.MarketId = params.marketId;\r\n      this.getMarketDetails();\r\n      this.getNewsData();\r\n      this.isMoreNews = true;\r\n      this.label = '<<More News';\r\n      console.log('Market ID:', this.MarketId);\r\n    });\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.MarketId).subscribe((res: any) => {\r\n      if (res) {\r\n          this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getNewsData() {\r\n    this.newsService.getActiveNews(this.MarketId).subscribe({\r\n      next: (data) => {\r\n        this.NewsData = data;\r\n        this.filteredNews = this.NewsData.slice(0, 4);\r\n      },\r\n      error: (err) => {\r\n        this.error = err;\r\n        console.error('Error fetching news data:', err);\r\n      }\r\n    });\r\n  }\r\n\r\n  openModal(newsData: any) {\r\n    this.selectedNews = newsData;\r\n  }\r\n\r\n  loadMoreNews() {\r\n    if (this.isMoreNews) {\r\n      this.filteredNews = this.NewsData;\r\n      this.label = 'Less News>>';\r\n      this.isMoreNews = false;\r\n    } else {\r\n      this.filteredNews = this.NewsData.slice(0,4);\r\n      this.label = '<<More News';\r\n      this.isMoreNews = true;\r\n    }\r\n  }\r\n}","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpParams } from '@angular/common/http';\r\nimport { Observable, of, throwError } from 'rxjs';\r\nimport { map, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { AuthService } from './auth.service';\r\nimport { MarketInfoService } from './MarketInfoService.service';\r\n@Injectable({\r\n  providedIn: 'root',\r\n})\r\n\r\nexport class ContactUsService {\r\n  private baseURL: string;\r\n  constructor(private http: HttpClient, private marketInfoService: MarketInfoService\r\n  ) {\r\n    this.baseURL = environment.apiBaseUrl;\r\n  }\r\n\r\n  public options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n\r\n\r\n  SubmitContactUs(ContactUs): Observable<any> {\r\n    var marketId = null;\r\n    this.marketInfoService.getMarketId().subscribe(mrktId => {\r\n      marketId = mrktId;\r\n    });\r\n    const options = { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) };\r\n    const url = `${this.baseURL}/ContactUs/PostContactUsMail/${marketId}`\r\n    return this.http.post<any>(url, ContactUs, options)\r\n      .pipe(\r\n        map(res => {\r\n          const response = res as any[];\r\n          return response;\r\n        }),\r\n        catchError(this.handleError)\r\n      );\r\n  }\r\n\r\n\r\n  private handleError(error: HttpErrorResponse) {\r\n    console.error('server error:', error);\r\n    if (error.error instanceof Error) {\r\n      const errMessage = error.error.message;\r\n      return throwError(errMessage);\r\n    }\r\n    return throwError(error || 'Node.js server error');\r\n  }\r\n}\r\n","<div class=\"container-fluid\">\r\n  <div class=\"row\">\r\n    <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2 px-1\">\r\n      <app-rental-menu></app-rental-menu>\r\n    </div>\r\n    <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n      <div class=\"container mainContainer\">\r\n        <div class=\"row\">\r\n          <div class=\"col-5 text-left mt-4\">\r\n            <label class=\"mainHeading\">Contact Us</label>\r\n          </div>\r\n          <div class=\"col-7 text-right mt-4\">\r\n            <label class=\"mainHeading\">{{marketName}}</label>\r\n          </div>\r\n        </div>\r\n        <div class=\"bgWghite shadow pt-2 mt-2\">\r\n          <div class=\"container\">\r\n            <form [formGroup]=\"contactUsForm\" (ngSubmit)=\"onSubmit()\">\r\n              <div class=\"row\">\r\n                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-start mt-3\">\r\n                  <label class=\"mb-0\">Name:</label>\r\n                  <input type=\"text\" class=\"form-control\" formControlName=\"name\">\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('name').hasError('required')\" i18n>* required </small>\r\n                </div>\r\n                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-start mt-3\">\r\n                  <label class=\"mb-0\">Phone:</label>\r\n                  <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" formControlName=\"phone\" tabindex=\"13\" name=\"telephone\"\r\n                    id=\"telephone\"></ejs-maskedtextbox>\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('phone').hasError('minlength')\" i18n>* invalid</small>\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('phone').hasError('required')\" i18n>* required </small>\r\n                </div>\r\n                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-start mt-3\">\r\n                  <label class=\"mb-0\">E-Mail:</label>\r\n                  <input type=\"email\" class=\"form-control\" formControlName=\"email\">\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('email').hasError('required')\" i18n>* required </small>\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('email').hasError('email')\" i18n>* invalid </small>\r\n                </div>\r\n              </div>\r\n              <div class=\"row\">\r\n                <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-3\">\r\n                  <label class=\"mb-0\">Subject</label>\r\n                  <input class=\"form-control\" formControlName=\"subject\">\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('subject').hasError('required')\" i18n>* required </small>\r\n                </div>\r\n              </div>\r\n              <div class=\"row\">\r\n                <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-3\">\r\n                  <label class=\"mb-0\">Comments</label>\r\n                  <textarea class=\"form-control\" formControlName=\"comments\"></textarea>\r\n                  <small style=\"color: red;\" *ngIf=\"contactUsForm.get('comments').hasError('required')\" i18n>* required </small>\r\n                </div>\r\n              </div>\r\n              <div class=\"row\">\r\n                <div class=\"col-sm-8 col-md-8 col-lg-5 col-xl-5 text-left mt-3\"\r\n                  style=\"font-size: medium; font-weight: bold; display: flex;\">\r\n                  <label class=\"mb-0 mt-2\"><span id=\"firstNum\"></span> + <span id=\"secondNum\"></span> =</label>\r\n                  <input type=\"text\" style=\"width: 23%; font-weight: bold;\" class=\"form-control ml-2\"\r\n                    formControlName=\"captchaResult\" (keydown)=\"validateCaptchaResult($event)\" maxlength=\"4\">\r\n                  <i type=\"button\" class=\"fas fa-refresh ml-2 mt-2\" style=\"font-weight: bold;\"\r\n                    (click)=\"generateCaptcha()\"></i>\r\n                </div>\r\n              </div>\r\n              <div class=\"row\">\r\n                <div class=\"col-12 text-right mt-2 mb-3\">\r\n                  <button class=\"btn btn-outline-primary mr-1\" type=\"button\" (click)=\"resetForm()\">Cancel</button>\r\n                  <button class=\"btn btn-primary\" type=\"submit\">Submit</button>\r\n                </div>\r\n              </div>\r\n            </form>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</div>","import { Component, OnInit } from '@angular/core';\r\nimport { ContactUsService } from 'src/app/services/ContactUs.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { ActivatedRoute, Params } from '@angular/router';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { Subscription } from 'rxjs';\r\nimport { FormGroup, FormBuilder, Validators } from '@angular/forms'; // Import FormGroup and FormBuilder\r\n\r\n@Component({\r\n  selector: 'app-contact-us',\r\n  templateUrl: './contact-us.component.html',\r\n  styleUrls: ['./contact-us.component.scss']\r\n})\r\nexport class ContactUsComponent implements OnInit {\r\n  contactUsForm: FormGroup;  // Declare form group\r\n  public PhoneNumberMask: String = '000-000-0000';\r\n  marketId: any;\r\n  firstNum: number;\r\n  secondNum: number;\r\n  public loaderIcon: Promise<boolean>;\r\n  marketName = \"\";\r\n  private subscriptions: Subscription[] = [];\r\n\r\n  constructor(\r\n    private contactUsService: ContactUsService,\r\n    private toastr: ToastrService,\r\n    private route: ActivatedRoute,\r\n    private marketInfoService: MarketInfoService,\r\n    private fb: FormBuilder // Inject FormBuilder\r\n  ) { }\r\n\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.marketInfoService.setMarketId(this.marketId);\r\n    });\r\n    this.getMarketDetails();\r\n    this.generateCaptcha();\r\n\r\n    this.contactUsForm = this.fb.group({\r\n      name: ['', Validators.required],\r\n      phone: ['', [Validators.required,Validators.minLength(10), Validators.maxLength(12)]],\r\n      email: ['', [Validators.required, Validators.email]],\r\n      subject: ['', Validators.required],\r\n      comments: ['', Validators.required],\r\n      captchaResult: ['']\r\n    });\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  onSubmit(): void {\r\n    if (this.contactUsForm.invalid) {\r\n      this.toastr.error('Please check the form.', 'Error', this.toasterConfig);\r\n      return;\r\n    }\r\n\r\n    if (!this.validateCaptcha()) {\r\n      this.toastr.error('Captcha verification failed.', 'Error', this.toasterConfig);\r\n      this.generateCaptcha();\r\n      return;\r\n    }\r\n\r\n    const contactUsFormValue = this.contactUsForm.value;\r\n    const contactUsForm = {\r\n      MarketId: this.marketId,\r\n      Name: contactUsFormValue.name,\r\n      Phone: contactUsFormValue.phone,\r\n      Email: contactUsFormValue.email,\r\n      Subject: contactUsFormValue.subject,\r\n      comments: contactUsFormValue.comments\r\n    };\r\n\r\n    this.submitContactUsForm(contactUsForm);\r\n  }\r\n\r\n  submitContactUsForm(contactUsForm) {\r\n    this.contactUsService.SubmitContactUs(contactUsForm)\r\n      .subscribe(\r\n        res => {\r\n          if (res.Success) {\r\n            this.toastr.success('Submitted Successfully', 'Success', this.toasterConfig);\r\n            this.resetForm();\r\n          } else {\r\n            this.toastr.error('Submit Unsuccessful', 'Error', this.toasterConfig);\r\n          }\r\n        },\r\n        err => {\r\n          this.toastr.error(err.Message, 'Error', this.toasterConfig);\r\n        }\r\n      );\r\n  }\r\n\r\n  generateCaptcha(): void {\r\n    this.firstNum = Math.floor(Math.random() * 25) + 1;\r\n    this.secondNum = Math.floor(Math.random() * 25) + 1;\r\n\r\n    const firstNumElement = document.getElementById(\"firstNum\");\r\n    const secondNumElement = document.getElementById(\"secondNum\");\r\n\r\n    if (firstNumElement && secondNumElement) {\r\n      firstNumElement.textContent = this.firstNum.toString();\r\n      secondNumElement.textContent = this.secondNum.toString();\r\n    }\r\n  }\r\n\r\n  validateCaptchaResult(event) {\r\n    const key = event.key || event.keyCode;\r\n\r\n    if (((event.keyCode >= 65 && event.keyCode <= 95) || event.keyCode >= 106 || (event.keyCode >= 48 && event.keyCode <= 57 && isNaN(event.key))) && event.keyCode != 32) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  validateCaptcha(): boolean {\r\n    //const enteredResult = Number((<HTMLInputElement>document.getElementById(\"captchaResult\")).value);\r\n    const enteredResult = Number(this.contactUsForm.value.captchaResult);\r\n\r\n    const expectedResult = this.firstNum + this.secondNum;\r\n\r\n    return enteredResult === expectedResult;\r\n  }\r\n\r\n  resetForm(): void {\r\n    this.contactUsForm.reset();\r\n    this.generateCaptcha();\r\n  }\r\n}\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div class=\"col-lg-12 col-xl-12 text-left\" [ngClass]=\"{'bgBlue': !newVendor, 'bgMainSection': !newVendor}\"  *ngIf=\"!openConfirmationPage\">\r\n    <form [formGroup]=\"paymentForm\">\r\n        <div class=\"container\" formGroupName=\"paymentDetails\" *ngIf=\"!processPayment\">\r\n            <div class=\"row\" *ngIf=\"!newVendor\">\r\n                <div class=\"col-12 text-left mt-4\">\r\n                    <label class=\"mainHeading\">Make Payment</label>\r\n                </div>\r\n            </div>\r\n            <div class=\"bgWghite pt-2 mt-2 pl-2 pr-2\"  [ngClass]=\"{'shadow': !newVendor}\">\r\n                <div class=\"container\">\r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 text-left\">\r\n                        <div class=\"row mt-0\" *ngIf=\"enableWifiCodeChangesUfm\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label class=\"pure-material-checkbox\">\r\n                                    <input type=\"checkbox\" [checked]=\"true\"\r\n                                    formControlName=\"enableWifiCodeChanges\">\r\n                                    <span style=\"color: black;\">WIFI Access</span>\r\n                                </label>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\" *ngIf=\"!newVendor\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label for=\"txtFirstName\" i18n>Prior Balance</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly formControlName=\"priorBalance\"\r\n                                    (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Rental Charges</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly\r\n                                formControlName=\"rentalCharge\" (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Other Charges</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly\r\n                                formControlName=\"otherCharge\" (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\" *ngIf=\"enableWifiCodeChangesUfm || applyOtherChargesAutomatically\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Facility Charges</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly\r\n                                formControlName=\"facilityCharge\" (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                              <label i18n>Discounts</label>\r\n                              <input type=\"text\" class=\"form-control text-right\" readonly formControlName=\"discounts\"\r\n                              (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Sales Tax</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly\r\n                                formControlName=\"salesTax\" (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>{{secondTaxName}}</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly\r\n                                formControlName=\"secondTax\" (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Additional Charges</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly formControlName=\"additionalCharges\"\r\n                                    (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\" *ngIf=\"enablePromoCode\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Promo Code</label>\r\n                                <div class=\"d-flex\">\r\n                                    <input type=\"text\" class=\"form-control text-right mr-1\" formControlName=\"promoCode\">\r\n                                    <button type=\"button\" class=\"btn btn-primary\" (click)=\"applyPromoCodeDiscount()\">Apply</button>\r\n                                  </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-5 col-xl-5 text-left\">\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Total Charge</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" formControlName=\"totalDue\" readonly>\r\n                            </div>\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label i18n>Payment Amount</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" formControlName=\"paymentAmount\"\r\n                                    (keypress)=\"numberOnly($event)\" \r\n                                    (input)=\"setCurrencyFormat(paymentForm.controls.paymentDetails.get('paymentAmount'))\"\r\n                                    (blur)=\"setMinimum(paymentForm.controls.paymentDetails.get('paymentAmount'))\"\r\n                                    (click)=\"handleClick($event)\" (dblclick)=\"handledblClick($event)\"\r\n                                    (change)=\"setMinimum(paymentForm.controls.paymentDetails.get('paymentAmount'))\">\r\n                            </div>\r\n\r\n                        </div>\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                            <label i18n>Convenience Fee</label>\r\n                            <input type=\"text\" class=\"form-control text-right\" formControlName=\"convenienceFee\"\r\n                                    readonly>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label style=\"font-weight: 600; font-size: 16px;\" i18n>Total Payment</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly formControlName=\"totalPayment\">\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div class=\"row mt-0\">\r\n                            <div class=\"col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left mt-2\">\r\n                                <label style=\"font-weight: 600; font-size: 16px;\" i18n>Balance Due</label>\r\n                                <input type=\"text\" class=\"form-control text-right\" readonly formControlName=\"balanceDue\"\r\n                                (keypress)=\"numberOnly($event)\">\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n\r\n                <div *ngFor=\"let rule of rulesFormArray; let i = index\" class=\"rule-container mt-2\">\r\n                    <div>\r\n                        <div class=\"d-flex\">\r\n                            <div class=\"checkbox-container\">\r\n                                <input type=\"checkbox\" class=\"CheckboxClass\" [formControlName]=\"isChecked\"\r\n                                    (change)=\"updateArrayDirectly(i, $event)\" />\r\n                            </div>\r\n                            <div class=\"text-container\">\r\n                                <label class=\"mb-0\">{{ rule.rulesAndRegualtions }}</label>\r\n                            </div>\r\n                        </div>\r\n                        <div *ngIf=\"rule.AgreementLinkRequired\" class=\"mt-1\">\r\n                            <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                                class=\"img-fluid me-2\" alt=\"Agreement Icon\" />\r\n                            <a [href]=\"rule.AgreementBlobURL\" target=\"_blank\" class=\"rules\">\r\n                                {{ rule.AgreementLinkTextContent }}\r\n                            </a>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                  \r\n                <div class=\"row\">\r\n                    <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-right mb-3\" style=\"margin-top: 12px;\">\r\n                        <button type=\"button\" i18n class=\"btn btn-outline-primary mr-1\" (click)=\"cancel()\">Cancel</button>\r\n                        <button type=\"button\" i18n class=\"btn btn-primary\" (click)=\"saveRentalWithPayment()\" [disabled]=\"!allCheckboxesCheckedValidator()\">Submit</button>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            </div>\r\n        </div>\r\n\r\n        <div *ngIf=\"processPayment\">\r\n            <app-payment [VendorId]=\"vendorId\" [keyedInTransaction]=\"keyedInTransaction\" [MarketId]=\"marketId\"\r\n                [CCAmount]=\"paymentAmount\" [TransactionType]=\"transactionType\" [voidPayment]=\"voidPayment\"\r\n                (PaymentResponse)=\"PaymentResponse($event)\" [VerifoneId]=\"verifoneId\"\r\n                (ClosePaymentPage)=\"ClosePaymentPage($event)\"></app-payment>\r\n        </div>\r\n\r\n        <div *ngIf=\"voidPayment\">\r\n            <app-payment [VendorId]=\"vendorId\" [voidPayment]=\"voidPayment\" (PaymentResponse)=voidPaymentResponse()\r\n                [VerifoneId]=\"verifoneId\" [MarketId]=\"marketId\"></app-payment>\r\n        </div>      \r\n    </form>\r\n</div>\r\n<div *ngIf=\"openConfirmationPage\">\r\n    <app-rental-confirmation [VendorId]=\"vendorId\" [newVendor]=\"newVendor\" [AccountReceipId]=\"accountReceipId\" [RentalType]=\"this.paymentData.RentalType\"></app-rental-confirmation>\r\n</div>\r\n","import { Component, ElementRef, EventEmitter, HostListener, Input, OnInit, Output, Renderer2, ViewChild } from '@angular/core';\r\nimport { FormGroup, FormBuilder, FormArray, AbstractControl } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService} from 'src/app/services/Vendor.service';\r\nimport Swal from 'sweetalert2';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { SharedDataService } from '../SharedData.service';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { customCurrencyPipe } from '../customCurrency.pipe';\r\nimport { Location } from '@angular/common';\r\nimport { PaymentService } from 'src/app/services/paymentService.service';\r\nimport { ModalDirective } from 'ngx-bootstrap/modal';\r\nimport printJS from 'print-js';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { UserService } from 'src/app/services/User.service';\r\nimport { GeneralService } from 'src/app/services/General.service';\r\n\r\n@Component({\r\n  selector: 'app-vendor-payments',\r\n  templateUrl: './vendor-payments.component.html',\r\n  styleUrls: ['./vendor-payments.component.scss']\r\n})\r\nexport class VendorPaymentsComponent implements OnInit {\r\n  vendorId;\r\n  vendorInfo;\r\n  vendorMarketID;\r\n  displayContract=true;\r\n  rules: any[] = [];\r\n  totalRentalCharges = 0;\r\n  vendorName;\r\n  paymentData;\r\n  public loaderIcon: Promise<boolean>;\r\n  promoCodeAppliedDiscount;\r\n  private subscriptions: Subscription[] = [];\r\n  marketId\r\n  paymentForm: FormGroup;\r\n  warnExcessPayment;\r\n  warnZeroPayment;\r\n  displayOtherChargeByBooth;\r\n  calculateChangeAmount;\r\n  keyedInTransaction = true;\r\n  processPayment = false;\r\n  voidPayment = false;\r\n  verifoneId = \"\";\r\n  transactionType=\"CREDITSALE\"\r\n  creditCardAmount;\r\n  DisablePayment = false;\r\n  displayAmountPaid=false;\r\n  paymentGatewayCredentials;\r\n  processCreditCardOnline;\r\n  applyCCCharge = false;\r\n  thermalPrinting = false;\r\n  actualTotalDue = 0;\r\n  disablePayBtnAfterSubmit=false;\r\n  CcfeeinPercentage;\r\n  promoCodeDiscountAmount = 0;\r\n  AllowPartialPay;\r\n  paymentAmount=0;\r\n  wifiOtherItemModel = [];\r\n  bookingFeeOtherItemModel = [];\r\n  accountReceipId;\r\n  secondTaxName = \"Sec Level Tax\";\r\n  private clickTimeout: any;\r\n  @Input() newVendor;\r\n  @Input() businessLicenseInfo;\r\n  @Output() cancelClick = new EventEmitter<any>();\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  paymentOnly = false; \r\n  openConfirmationPage = false; \r\n  enablePromoCode = false;\r\n  enableWifiCodeChangesUfm = false;\r\n  printWIFIAccessCodeInReceipts = false;\r\n  WIFIOtherItemRentalChargeId;\r\n  facilityOtherItemRentalChargeId;\r\n  otherChargesAutomaticApplicablePeriod;\r\n  applyOtherChargesAutomatically;\r\n  constructor(private operationRentalService: RentalService,\r\n    private vendorService: VendorService,\r\n    private marketInfoService: MarketInfoService,\r\n    private route: ActivatedRoute,\r\n    public router: Router,\r\n    private formBuilder: FormBuilder,\r\n    private userService:UserService,\r\n    private toastr: ToastrService,\r\n    private sharedDataService: SharedDataService,\r\n    private customCurrency:customCurrencyPipe,\r\n    private paymentService: PaymentService,\r\n    private generalService:GeneralService,\r\n    private location: Location,\r\n    private renderer: Renderer2) {\r\n    this.paymentForm = this.formBuilder.group({\r\n      paymentDetails: this.formBuilder.group({\r\n        priorBalance: this.customCurrency.transform('0.00'),\r\n        rentalCharge: this.customCurrency.transform('0.00'),\r\n        otherCharge: this.customCurrency.transform('0.00'),\r\n        facilityCharge: this.customCurrency.transform('0.00'),\r\n        discounts: this.customCurrency.transform('0.00'),\r\n        additionalCharges: this.customCurrency.transform('0.00'),\r\n        paymentAmount: [{ value: this.customCurrency.transform('0.00'), disabled: true }],      \r\n        convenienceFee: this.customCurrency.transform('0.00'),\r\n        changeAmount: this.customCurrency.transform('0.00'),\r\n        balanceDue: this.customCurrency.transform('0.00'),\r\n        totalPayment: this.customCurrency.transform('0.00'),\r\n        totalDue:this.customCurrency.transform('0.00'),\r\n        salesTax:this.customCurrency.transform('0.00'),\r\n        secondTax:this.customCurrency.transform('0.00'),\r\n        rules: this.formBuilder.array(this.initializeRulesArray()),\r\n        enableWifiCodeChanges: [{value:true, disabled: true }],\r\n        promoCode:''\r\n      })\r\n    });\r\n  }\r\n\r\n  initializeRulesArray(): FormGroup[] {\r\n    return this.rules.map(rule => this.formBuilder.group({\r\n      isChecked: [false],  // Initialize checkbox with false\r\n      rulesAndRegualtions: [rule.rulesAndRegualtions],\r\n      AgreementLinkRequired: [rule.AgreementLinkRequired],\r\n      AgreementBlobURL: [rule.AgreementBlobURL],\r\n      AgreementLinkTextContent: [rule.AgreementLinkTextContent]\r\n    }));\r\n  }\r\n\r\n  updateArrayDirectly(index: number, updatedValue: any) {\r\n    const isChecked = (event.target as HTMLInputElement).checked;\r\n    const control = this.rulesFormArray.at(index);\r\n    if (control) {\r\n      this.paymentForm.controls['paymentDetails'].value['rules'][index].isChecked = isChecked;\r\n    }\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n      this.marketInfoService.setMarketId(this.marketId);\r\n    });  \r\n\r\n    if (!this.sharedDataService.paymentSharedData) {\r\n      const url = 'rent-online/' + this.marketId + '/' + this.vendorId +'/';\r\n      this.router.navigate([url]);\r\n    }\r\n\r\n    this.paymentData = this.sharedDataService.paymentSharedData;\r\n    this.vendorId = this.paymentData.VendorId;\r\n    this.totalRentalCharges = (this.paymentData.PriorBalance + this.paymentData.RentalCharge + this.paymentData.SalesTax\r\n                              + this.paymentData.SecLevelTax + this.paymentData.OtherCharge + (this.paymentData.BookingFee ?? 0)) -this.paymentData.DiscountAmount;\r\n    this.paymentOnly = this.paymentData.PaymentOnly;\r\n    this.sharedDataService.rentalType = this.paymentData.RentalType;\r\n\r\n    this.actualTotalDue = this.totalRentalCharges;\r\n    this.paymentForm.controls['paymentDetails'].patchValue({\r\n      priorBalance: this.customCurrency.transform(this.paymentData.PriorBalance),\r\n      rentalCharge: this.customCurrency.transform(this.paymentData.RentalCharge),\r\n      otherCharge: this.customCurrency.transform(this.paymentData.OtherCharge),\r\n      discounts: this.customCurrency.transform(this.paymentData.DiscountAmount),\r\n      additionalCharges: this.customCurrency.transform(this.paymentData.BookingFee ?? 0),\r\n      totalDue: this.customCurrency.transform(this.totalRentalCharges.toString()),\r\n      salesTax:this.customCurrency.transform(this.paymentData.SalesTax),\r\n      secondTax: this.customCurrency.transform(this.paymentData.SecLevelTax),\r\n    });\r\n    this.getRentalAndCustomSettings();\r\n    this.getVendorInfobyId();\r\n    this.getCCCredentials();   \r\n    this.getWebRentalSetting();    \r\n    this.getMarketRulesAndRegulations();\r\n  }\r\n  \r\n  getRentalAndCustomSettings() {\r\n    forkJoin({\r\n      resRentalSettings: this.operationRentalService.getRentalSettings(this.marketId),\r\n      resCustomSettings: this.operationRentalService.getCustomSettings(this.marketId)\r\n    }).subscribe(\r\n      ({ resRentalSettings, resCustomSettings }: any) => {\r\n        if (resRentalSettings) {\r\n          this.secondTaxName = resRentalSettings.SecondTaxName ? resRentalSettings.SecondTaxName : \"Sec Level Tax\";\r\n          this.printWIFIAccessCodeInReceipts = resRentalSettings.PrintWIFIAccessCodeInReceipts;\r\n          this.WIFIOtherItemRentalChargeId = resRentalSettings.WIFIOtherItemRentalChargeId;\r\n        }\r\n        if (resCustomSettings) {\r\n          this.enablePromoCode = resCustomSettings.EnableWrpromocode;\r\n          this.enableWifiCodeChangesUfm = resCustomSettings.EnableWifiCodeChangesUfm;\r\n        }\r\n\r\n        if(this.enableWifiCodeChangesUfm){\r\n          this.getWIFIOtherChargeItem();\r\n        }\r\n      }\r\n    );\r\n  }\r\n\r\n  getFacilityOtherChargeItem() {\r\n    this.subscriptions.push(this.operationRentalService.getWIFIOtherItem(this.marketId, this.facilityOtherItemRentalChargeId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.calculateFacilityCharges(res,true);\r\n      }\r\n    }));\r\n  }\r\n\r\n  getWIFIOtherChargeItem() {\r\n    this.subscriptions.push(this.operationRentalService.getWIFIOtherItem(this.marketId, this.WIFIOtherItemRentalChargeId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.calculateFacilityCharges(res,false);\r\n      }\r\n    }));\r\n  }\r\n\r\n  calculateTotalBookingFeeAmount(res){\r\n    var bookingFee = 0;\r\n    if (this.paymentData.RentalType == 1) {\r\n      this.bookingFeeOtherItemModel = [];\r\n      if (this.paymentData.DailyRentalBooth.length > 0) {\r\n          for (const item of this.paymentData.DailyRentalBooth) {\r\n            this.bookingFeeOtherItemModel.push({\r\n              OtherItemId: res.OtherItemId,\r\n              OtherItemName: res.OtherItem,\r\n              OtherItemCharge: res.OtherItemCharge,\r\n              Quantity: 1,\r\n              RentalDay: item.RentalDay,\r\n              BoothNumber: \"\",\r\n              OtherCharge: res.OtherItemCharge,\r\n              SalesTax: 0,\r\n              SecLevelTax: 0,\r\n              Reference: \"\"\r\n            })\r\n            bookingFee += res.OtherItemCharge;\r\n          }\r\n      }\r\n      this.paymentForm.controls['paymentDetails'].patchValue({\r\n        additionalCharges: this.customCurrency.transform(bookingFee.toString())\r\n      });\r\n      this.actualTotalDue += bookingFee\r\n      this.totalRentalCharges += bookingFee;\r\n      this.calculateBalance();\r\n    }\r\n\r\n  }\r\n\r\n  calculateFacilityCharges(res, automaticOtherCharge) {\r\n    var facilityCharge = 0;\r\n    if (this.paymentData.RentalType == 1) {\r\n      //this.wifiOtherItemModel = [];\r\n      if (this.paymentData.DailyRentalBooth.length > 0) {\r\n        var distinctRentDates = Array.from(\r\n          new Set(this.paymentData.DailyRentalBooth.map((item: any) => \r\n            new Date(item.RentalDay).toISOString().split('T')[0] // Extract YYYY-MM-DD\r\n          ))\r\n        );\r\n\r\n        if (automaticOtherCharge && this.otherChargesAutomaticApplicablePeriod == 1) {\r\n          distinctRentDates.length = 1;\r\n        }\r\n\r\n        if (distinctRentDates.length > 0) {\r\n          for (const item of distinctRentDates) {\r\n            this.wifiOtherItemModel.push({\r\n              OtherItemId: res.OtherItemId,\r\n              OtherItemName: res.OtherItem,\r\n              OtherItemCharge: res.OtherItemCharge,\r\n              Quantity: 1,\r\n              RentalDay: item,\r\n              BoothNumber: \"\",\r\n              OtherCharge: res.OtherItemCharge,\r\n              SalesTax: 0,\r\n              SecLevelTax: 0,\r\n              Reference: \"\"\r\n            })\r\n            facilityCharge += res.OtherItemCharge;\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    else if (this.paymentData.RentalType == 5) {\r\n      this.wifiOtherItemModel = [];\r\n      const distinctRentDates: string[] = [];\r\n      if (this.paymentData.CombinedWeeklyRentalBooth.length > 0) {\r\n        const distinctStartDates = Array.from(\r\n          new Set(\r\n            this.paymentData.CombinedWeeklyRentalBooth.map((item: any) => item.RentalWeeekStartDate)\r\n          )\r\n        );\r\n\r\n        const distinctRentDates = new Set<string>();\r\n\r\n        distinctStartDates.forEach((startDate: string) => {\r\n          const relatedItem = this.paymentData.CombinedWeeklyRentalBooth.find(\r\n            (item: any) => item.RentalWeeekStartDate === startDate\r\n          );\r\n\r\n          if (relatedItem) {\r\n            const rentalWeekStart = new Date(startDate);\r\n            const rentalEndDate = new Date(relatedItem.RentalEndDate);\r\n            let currentWeekStart = new Date(rentalWeekStart);\r\n\r\n            while (currentWeekStart <= rentalEndDate) {\r\n              const formattedDate = currentWeekStart.toISOString().split('T')[0];\r\n              distinctRentDates.add(formattedDate);\r\n              currentWeekStart.setDate(currentWeekStart.getDate() + 7);\r\n            }\r\n          }\r\n        });\r\n\r\n        var uniqueRentDatesArray = Array.from(distinctRentDates);\r\n\r\n        if (uniqueRentDatesArray.length > 0) {\r\n          for (const item of uniqueRentDatesArray) {\r\n            this.wifiOtherItemModel.push({\r\n              OtherItemId: res.OtherItemId,\r\n              OtherItemName: res.OtherItem,\r\n              OtherItemCharge: res.OtherItemCombinedWeeklyCharge,\r\n              Quantity: 1,\r\n              RentalWeek: new Date(item),\r\n              Recurring: false,\r\n              BoothNumber: \"\",\r\n              OtherCharge: res.OtherItemCombinedWeeklyCharge,\r\n              SalesTax: 0,\r\n              SecLevelTax: 0,\r\n              Reference: \"\"\r\n            })\r\n            facilityCharge += res.OtherItemCombinedWeeklyCharge;\r\n            if (this.otherChargesAutomaticApplicablePeriod == 1) // apply for one period\r\n            {\r\n              uniqueRentDatesArray = [];\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    else if (this.paymentData.RentalType == 4 || this.paymentData.RentalType == 2) {\r\n      var otherCharge = this.paymentData.RentalType == 4 ? res.OtherItemCombinedMonthlyCharge : res.OtherItemMonthlyCharge;\r\n      this.wifiOtherItemModel = [];\r\n      if (this.paymentData.MonthlyRentalBooth.length > 0) {\r\n        var distinctRentalYearMonth = Array.from(\r\n          new Set(this.paymentData.MonthlyRentalBooth.map((item: any) => item.RentalYearMonth))\r\n        );\r\n\r\n        if (distinctRentalYearMonth.length > 0) {\r\n          for (const item of distinctRentalYearMonth) {\r\n            this.wifiOtherItemModel.push({\r\n              OtherItemId: res.OtherItemId,\r\n              OtherItemName: res.OtherItem,\r\n              OtherItemCharge: otherCharge,\r\n              Quantity: 1,\r\n              YearMonth: item,\r\n              BoothNumber: \"\",\r\n              OtherCharge: otherCharge,\r\n              SalesTax: 0,\r\n              SecLevelTax: 0,\r\n              Reference: \"\"\r\n            })\r\n            facilityCharge += otherCharge;\r\n            if (this.otherChargesAutomaticApplicablePeriod == 1) // apply for one period\r\n            {\r\n              distinctRentalYearMonth = [];\r\n            }\r\n          }\r\n        }\r\n      }\r\n    }\r\n\r\n    var totalFacilityCharge = this.paymentForm.controls['paymentDetails'].get('facilityCharge').value;\r\n    this.actualTotalDue += facilityCharge;\r\n    this.totalRentalCharges += facilityCharge;\r\n    totalFacilityCharge = totalFacilityCharge.toString().includes('(') && totalFacilityCharge.toString().includes(')') ? -1 * parseFloat(totalFacilityCharge.toString().replace(/[^0-9.-]/g, '')) : parseFloat(totalFacilityCharge.toString().replace(/[^0-9.-]/g, ''));\r\n    if (totalFacilityCharge != 0)\r\n      facilityCharge = totalFacilityCharge + facilityCharge;\r\n    this.paymentForm.controls['paymentDetails'].patchValue({\r\n      facilityCharge: this.customCurrency.transform(facilityCharge.toString())\r\n    });\r\n    this.calculateBalance();\r\n  }\r\n\r\n  getMarketRulesAndRegulations() {\r\n    this.subscriptions.push(this.generalService.getWebrentalMarketRules(this.marketId).subscribe((rules: any) => {\r\n      if (rules) {\r\n        const rulesArray = this.paymentForm.controls['paymentDetails'].get('rules') as FormArray;\r\n        rules.forEach(rule => {\r\n          rulesArray.push(this.formBuilder.group({\r\n            id: rule.ID,\r\n            isChecked: false,\r\n            rulesAndRegualtions: rule.Rules,\r\n            AgreementLinkRequired : rule.AgreementLinkRequired ?? false,\r\n            AgreementLinkTextContent: rule.AgreementLinkTextContent ?? \"\",\r\n            AgreementBlobURL : rule.AgreementBlobURL ?? \"\"\r\n          }));\r\n        });\r\n      }\r\n    }));\r\n  }\r\n\r\n  allCheckboxesCheckedValidator(control: AbstractControl) {\r\n    var allChecked = this.paymentForm.controls['paymentDetails'].value['rules'].filter(e=>!e.isChecked).length > 0 ? false : true;\r\n    return allChecked;\r\n  }\r\n\r\n  get rulesFormArray() {\r\n    return this.paymentForm.controls['paymentDetails'].value['rules'] as FormArray;\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    this.subscriptions.push(this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.applyCCCharge = res.ApplyCcporcessingFeePercentage;\r\n        this.CcfeeinPercentage = res.CcfeeinPercentage;\r\n        this.AllowPartialPay = res.AllowPartialPay;             \r\n        this.paymentForm.controls['paymentDetails'].get('paymentAmount').enable();\r\n        if (!this.AllowPartialPay) {\r\n          this.paymentForm.controls['paymentDetails'].get('paymentAmount').disable();\r\n          this.paymentForm.controls['paymentDetails'].patchValue({\r\n            paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n            totalPayment: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n          })\r\n        }\r\n        this.paymentAmount =  this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n        const creditCardAmount = this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (this.applyCCCharge && creditCardAmount > 0) {\r\n          this.calculateConvenienceFee();\r\n        }\r\n\r\n        this.applyOtherChargesAutomatically = res.ApplyOtherChargesAutomatically;\r\n        this.facilityOtherItemRentalChargeId = res.AutomaticApplicableOtherChargeId;\r\n        this.otherChargesAutomaticApplicablePeriod = res.OtherChargesAutomaticApplicablePeriod;\r\n        if (this.applyOtherChargesAutomatically) {\r\n          this.getFacilityOtherChargeItem();\r\n        }\r\n        const applyBookingFee = res.ApplyBookingFee;\r\n        const applyBookingFeeId = res.ApplyBookingFeeId;\r\n         if (applyBookingFee) {\r\n          this.subscriptions.push(this.operationRentalService.getBookingFeeById(this.marketId, applyBookingFeeId).subscribe((resFee: any) => {\r\n            if (resFee) {\r\n              this.calculateTotalBookingFeeAmount(resFee);\r\n            }\r\n          }));\r\n        }\r\n      }\r\n    }, err => {\r\n    }));\r\n  }\r\n\r\n  setCurrencyFormat(controls) {\r\n    const value = controls.value;\r\n    let inputValue = value;\r\n    if(inputValue.toString().substring(1,2) == \"$\")\r\n    inputValue = `${inputValue.slice(1)}`;\r\n    controls.setValue(inputValue);\r\n  }\r\n\r\n  onCheckNumKeyPress(event: KeyboardEvent) {\r\n    const allowedChars = /[a-zA-Z0-9]/;\r\n    const key = event.key;\r\n    if (event.key === 'Backspace' || event.key === 'Delete' || event.key === 'ArrowLeft' || event.key === 'ArrowRight' || event.key === '#') {\r\n      return;\r\n    }\r\n    if (!key.match(allowedChars)) {\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  applyPromoCodeDiscount() {\r\n    var obj = {\r\n      VendorId: this.vendorId,\r\n      MarketId: this.marketId,\r\n      PromoCode: this.paymentForm.controls['paymentDetails'].value[\"promoCode\"]\r\n    }\r\n    const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat'];\r\n    const bookingDay = days[new Date().getDay()];\r\n    var discountedAmount = this.paymentForm.controls['paymentDetails'].get('discounts').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('discounts').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('discounts').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('discounts').value.toString().replace(/[^0-9.-]/g, ''));\r\n    this.subscriptions.push(this.vendorService.validatePromoCode(obj).subscribe(async (disc) => {\r\n      var promocodeDiscount = 0;   \r\n      const promoCodeUsedCount =  await this.operationRentalService.getPromoCodeAppliedCountForVendor(this.marketId, this.vendorId, disc.PlanSeqId).toPromise(); \r\n      if(promoCodeUsedCount && promoCodeUsedCount.AppliedCount >= disc.UsageLimit)\r\n      {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Promo code is not applicable.`,\r\n          icon: \"info\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n        return false;\r\n      }\r\n      if (!disc || !disc.PlanId || !disc.WebRentalApplicable) {\r\n        Swal.fire({\r\n          title: $localize`Warning`,\r\n          text: $localize`Promo code is not valid.`,\r\n          icon: \"info\",\r\n          confirmButtonText: $localize`Ok`,\r\n        });\r\n      } else {\r\n        if (this.promoCodeDiscountAmount > 0) {\r\n          this.paymentData.DiscountAmount -= this.promoCodeDiscountAmount;\r\n          discountedAmount -= this.promoCodeDiscountAmount;\r\n          this.totalRentalCharges += this.promoCodeDiscountAmount;\r\n          this.actualTotalDue = this.totalRentalCharges;\r\n          if (!this.AllowPartialPay) {\r\n            this.paymentForm.controls['paymentDetails'].patchValue({\r\n              paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n              totalPayment: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n            })\r\n          }\r\n          this.paymentForm.controls['paymentDetails'].patchValue({\r\n            discounts: this.customCurrency.transform(this.paymentData.DiscountAmount),\r\n            totalDue: this.customCurrency.transform(this.totalRentalCharges.toString())\r\n          });\r\n          this.promoCodeDiscountAmount = 0;\r\n        }\r\n        var promoCodeAppliedForCurrentDay = disc[bookingDay]\r\n        if (promoCodeAppliedForCurrentDay) {      \r\n          var promocodeAppliedForRentalType = this.paymentData.RentalType == 1 ? disc.Daily : \r\n                                              this.paymentData.RentalType == 2 ? disc.Monthly:\r\n                                              this.paymentData.RentalType == 3 ? disc.Weekly:\r\n                                              this.paymentData.RentalType == 4 ? disc.CombinedMonthly:\r\n                                              this.paymentData.RentalType == 5 ? disc.CombinedWeekly:false;\r\n\r\n          if (promocodeAppliedForRentalType && disc.Selected) {\r\n            var priorBalance = this.paymentData.PriorBalance;\r\n            if (!disc.BalanceDue || (disc.BalanceDue && priorBalance <= 0)) {\r\n              if (!disc.IsExceedAmount || (disc.IsExceedAmount && this.totalRentalCharges > disc.ExceedAmount)) {\r\n                const discountValue = disc.DiscountValue;\r\n                if (disc.DiscountType == '0') {\r\n                  promocodeDiscount = this.totalRentalCharges * (discountValue / 100);\r\n                }\r\n                else {\r\n                  promocodeDiscount = discountValue;\r\n                }\r\n                discountedAmount += promocodeDiscount;\r\n                this.sharedDataService.rentalType = this.paymentData.RentalType;\r\n                this.totalRentalCharges -= promocodeDiscount;\r\n                this.actualTotalDue = this.totalRentalCharges;\r\n                this.paymentData.DiscountAmount = parseFloat(this.paymentData.DiscountAmount) + promocodeDiscount;\r\n                if (!this.AllowPartialPay) {\r\n                  this.paymentAmount = this.actualTotalDue;\r\n                  this.paymentForm.controls['paymentDetails'].patchValue({\r\n                    paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n                    totalPayment: this.customCurrency.transform(this.actualTotalDue.toString()),\r\n                  })\r\n                }\r\n                this.paymentForm.controls['paymentDetails'].patchValue({\r\n                  discounts: this.customCurrency.transform(this.paymentData.DiscountAmount),\r\n                  totalDue: this.customCurrency.transform(this.totalRentalCharges.toString())\r\n                });                \r\n                this.promoCodeDiscountAmount = promocodeDiscount;\r\n                this.promoCodeAppliedDiscount = \"\";\r\n                this.promoCodeAppliedDiscount = {\r\n                  PlanId: disc.PlanSeqId,\r\n                  DiscountAmount: promocodeDiscount,\r\n                  OtherCharges: disc.OtherItems,\r\n                  SalesTax: disc.SalesTax,\r\n                  SecondLevelTax: disc.SecondLevelTax,\r\n                  DiscountType: disc.DiscountType,\r\n                  DiscountValue: disc.DiscountValue,\r\n                  SalesTaxAmount: 0,\r\n                  SecondLevelTaxAmount: 0\r\n                }\r\n              }\r\n            }\r\n          }\r\n        }\r\n        else{\r\n          Swal.fire({\r\n            title: $localize`Warning`,\r\n            text: $localize`Promo code is not applicable.`,\r\n            icon: \"info\",\r\n            confirmButtonText: $localize`Ok`,\r\n          });\r\n        }\r\n      }\r\n    }));\r\n  }\r\n\r\n  setMinimum(controls) {\r\n    const value = controls.value;\r\n    var enteredAmount = value.toString().includes('(') && value.toString().includes(')')  ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')): parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    if (!enteredAmount) {\r\n      controls.setValue(this.customCurrency.transform(\"0.00\"));\r\n    }\r\n    var totalDue = this.paymentForm.controls['paymentDetails'].value[\"totalDue\"];\r\n    totalDue = totalDue.toString().includes('(') && totalDue.toString().includes(')')  ? -1 * parseFloat(totalDue.toString().replace(/[^0-9.-]/g, '')): parseFloat(totalDue.toString().replace(/[^0-9.-]/g, ''));\r\n    if (enteredAmount > this.actualTotalDue) {\r\n      this.paymentForm.controls['paymentDetails'].get(\"paymentAmount\").setValue(this.actualTotalDue);\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Payment amount cannot be greater than total due.`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n    this.calculateBalance();\r\n  }\r\n\r\n  calculateBalance() {  \r\n    const facilityCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value);\r\n    const additionalCharges = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value);    \r\n    const rentalCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('rentalCharge').value);\r\n    const otherCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('otherCharge').value);\r\n    const salesTax = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('salesTax').value);\r\n    const secondTax = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('secondTax').value);\r\n    const priorBalance = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('priorBalance').value);\r\n    var totalRentalCharge = rentalCharge + otherCharge + salesTax + secondTax + facilityCharge + additionalCharges;\r\n    if (priorBalance < 0 && (totalRentalCharge + priorBalance <= 0)) {\r\n      this.actualTotalDue = 0\r\n    }\r\n    if ((facilityCharge ?? 0) > 0 || (additionalCharges ?? 0) > 0) {    \r\n      if (!this.AllowPartialPay) {\r\n        this.paymentForm.controls['paymentDetails'].patchValue({\r\n          paymentAmount: this.customCurrency.transform(this.actualTotalDue.toString())\r\n        });\r\n      }\r\n    }\r\n    var creditCardAmount = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value);\r\n    this.creditCardAmount = this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue;    \r\n    const convenienceFee = 0;\r\n\r\n    var totalAmount;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    var balanceAmount = totalDue - totalAmount;\r\n    if (priorBalance < 0 && (totalRentalCharge + priorBalance <= 0)) {\r\n      balanceAmount = priorBalance  + totalRentalCharge;\r\n    }\r\n    \r\n    this.paymentForm.controls['paymentDetails'].patchValue({\r\n      totalDue: this.customCurrency.transform(totalDue.toString()),\r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString())\r\n    })\r\n\r\n    this.paymentAmount =  this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n\r\n    if(this.applyCCCharge && creditCardAmount > 0){\r\n      this.calculateConvenienceFee();\r\n    }\r\n\r\n    this.paymentForm.controls['paymentDetails'].get('paymentAmount').setValue(this.customCurrency.transform(creditCardAmount.toString()));\r\n  }\r\n\r\n  getVendorInfobyId() {\r\n    this.subscriptions.push(this.vendorService.GetVendorById(this.vendorId, this.marketId).subscribe((response) => {\r\n      if (response) {\r\n        this.vendorInfo = response.body;\r\n        this.vendorMarketID = this.vendorInfo.MarketVendorId;\r\n        this.vendorName = this.vendorInfo.IsPublicVendor ? (this.paymentData.VendorName != undefined ? this.paymentData.VendorName.toString() : this.vendorInfo.VendorName) : this.vendorInfo.VendorName;\r\n        this.marketId = this.vendorInfo.MarketId\r\n      }\r\n    }, (err) => {\r\n    }));\r\n  }\r\n\r\n  calculateConvenienceFee() {\r\n    var convenienceFee = 0;\r\n    var creditCardAmount = this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var totalDue = this.actualTotalDue;\r\n    if (creditCardAmount > 0) {\r\n      var convenienceFee = creditCardAmount * ((this.CcfeeinPercentage) / 100);\r\n      totalDue += convenienceFee;\r\n      this.creditCardAmount += convenienceFee;\r\n    }\r\n    var totalAmount = 0;\r\n    totalAmount = creditCardAmount + convenienceFee;\r\n    const balanceAmount = totalDue - totalAmount;\r\n\r\n    this.paymentForm.controls['paymentDetails'].patchValue({\r\n      convenienceFee: this.customCurrency.transform(convenienceFee.toString()),\r\n      totalDue: this.customCurrency.transform(totalDue.toString()),\r\n      balanceDue: this.customCurrency.transform(balanceAmount.toString()),\r\n      totalPayment: this.customCurrency.transform(totalAmount.toString())\r\n    })\r\n    this.paymentAmount =  this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('totalPayment').value.toString().replace(/[^0-9.-]/g, ''));\r\n  }\r\n\r\n  numberOnly(event): boolean {\r\n    const inputValue = event.target.value;\r\n    const charCode = (event.which) ? event.which : event.keyCode;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    // Check if the input value is \"$0.00\"\r\n    if (charCode == 45) {\r\n      return false;\r\n    }\r\n    if (currentSelectionLength === inputValue.length) {\r\n      return true;\r\n    }\r\n    if (inputValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return true; // Allow further input\r\n    }\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = inputValue.includes('$');\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = inputValue.slice(0, currentCursorPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign and \"$\" sign is present, prevent input\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign && charCode !== 46 && (charCode < 48 || charCode > 57)) {\r\n      return false;\r\n    }\r\n    // If the entered character is a dot and there's already a dot in the input, prevent input\r\n    if (charCode == 46 && inputValue.includes('.') && inputValue.indexOf('.') !== currentCursorPosition) {\r\n      return false;\r\n    }\r\n    if (charCode > 31 && (charCode < 46 || charCode > 57 || charCode === 47)) {\r\n      return false;\r\n    }\r\n    return true; // Allow input\r\n  }\r\n\r\n  numberOnlyForCash(event: any) {\r\n    // Get the current value of the input field\r\n    const currentValue: string = event.target.value;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    if (currentSelectionLength === currentValue.length) {\r\n      return true;\r\n    }\r\n    // Check if the input value is \"0\" and if it contains a \"$\" sign\r\n    if (currentValue === '0' && !currentValue.includes('$')) {\r\n      // Set the new value with \"$\" sign\r\n      event.target.value = '$0';\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return;\r\n    }\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = currentValue.includes('$');\r\n    // Allow input if the \"$\" sign is not present\r\n    if (!hasDollarSign) {\r\n      return;\r\n    }\r\n    // Get the cursor position\r\n    const caretPosition = event.target.selectionStart;\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = currentValue.slice(0, caretPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign, prevent input\r\n    if (!hasDollarSignBeforeCaret) {\r\n      event.preventDefault();\r\n      return;\r\n    }\r\n\r\n    // Allow digits, a dot, and an optional '-' at the beginning\r\n    const pattern = /^-?\\d*\\.?\\d*$/;\r\n    // Get the character entered by the user\r\n    const inputChar = String.fromCharCode(event.charCode);\r\n    // Check if the input matches the pattern\r\n    if (!pattern.test(inputChar) || // If the entered character is not allowed\r\n      (inputChar === '.' && currentValue.includes('.')) || // Or if the dot is already present\r\n      (inputChar === '-' && currentValue.indexOf('-') !== -1)) { // Or if '-' is entered more than once\r\n      event.preventDefault(); // Prevent the character from being entered\r\n    }\r\n  }\r\n\r\n  handledblClick(event: any) {\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    const inputElement = event.target as HTMLInputElement;\r\n    inputElement.select(); // Select the entire text on double-click\r\n  }\r\n\r\n  handleClick(event: any) {\r\n    // Get the current value of the input field\r\n    let currentValue: string = event.target.value;\r\n    const currentCursorPosition = event.target.selectionStart;\r\n    const currentSelectionLength = event.target.selectionEnd - event.target.selectionStart;\r\n    const inputElement = event.target as HTMLInputElement;\r\n    const inputValue = inputElement.value;\r\n    clearTimeout(this.clickTimeout);\r\n\r\n    this.clickTimeout = setTimeout(() => {\r\n      if (inputValue === '$0.00') {\r\n        const selectionLength = inputElement.selectionEnd - inputElement.selectionStart;\r\n\r\n        // If the entire text is not selected, set the cursor position after the \"$\" sign\r\n        if (selectionLength !== inputValue.length) {\r\n          inputElement.setSelectionRange(1, 1);\r\n        }\r\n      }\r\n    }, 200); // Delay to check for double click\r\n  \r\n    if (currentSelectionLength === currentValue.length) {\r\n      return true;\r\n    }\r\n    // Check if the input value is \"$0.00\"\r\n    if (currentValue === '$0.00') {\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(1, 1);\r\n      return;\r\n    }\r\n\r\n    // Check if the \"$\" sign is present in the current value\r\n    const hasDollarSign = currentValue.includes('$');\r\n    // Get the cursor position\r\n    const caretPosition = event.target.selectionStart;\r\n    // Check if the cursor position is after the \"$\" sign\r\n    const hasDollarSignBeforeCaret = currentValue.slice(0, caretPosition).includes('$');\r\n    // If the cursor is not after the \"$\" sign, adjust the cursor position\r\n    if (!hasDollarSignBeforeCaret && hasDollarSign) {\r\n      // Find the index of \"$\" sign\r\n      const dollarSignIndex = currentValue.indexOf('$');\r\n      // Set the cursor position after the \"$\" sign\r\n      event.target.setSelectionRange(dollarSignIndex + 1, dollarSignIndex + 1);\r\n    }\r\n  }\r\n\r\n  getActualAmountFromInp(value) {\r\n    var amount = value.toString().includes('(') && value.toString().includes(')') ? -1 * parseFloat(value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(value.toString().replace(/[^0-9.-]/g, ''));\r\n    return amount;\r\n  }\r\n\r\n  saveRentalWithPayment() {    \r\n    var paymentAdjustedWithPriorBal = false;\r\n    var creditCardAmount = this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, ''));\r\n    var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n    const rentalCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('rentalCharge').value)\r\n    const otherCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('otherCharge').value)\r\n    const salesTax = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('salesTax').value)\r\n    const secondTax = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('secondTax').value)\r\n    const additionalCharge = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value)\r\n    const priorBalance = this.getActualAmountFromInp(this.paymentForm.controls['paymentDetails'].get('priorBalance').value)\r\n     var totalCharges = rentalCharge + otherCharge + salesTax + secondTax + additionalCharge;\r\n    if (priorBalance < 0 && (totalCharges + priorBalance <= 0)){\r\n      paymentAdjustedWithPriorBal = true;\r\n     }\r\n     const totalAmountPaid = creditCardAmount  + convenienceFee;\r\n    if (totalAmountPaid != 0) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Are you sure you want to proceed with the payment?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.value) {\r\n          if (paymentAdjustedWithPriorBal) {\r\n            var obj = {\r\n              PaymentSuccess: true,\r\n              OrderId: \"\",\r\n              VerifoneId: 0\r\n            }\r\n            this.PaymentResponse(obj)\r\n          } else {\r\n            this.disablePayBtnAfterSubmit = true;\r\n            if (this.paymentGatewayCredentials && this.processCreditCardOnline)\r\n              this.processPayment = true;\r\n            else {\r\n              Swal.fire({\r\n                title: $localize`Warning`,\r\n                text: $localize`Credit card cannot be processed.`,\r\n                icon: \"warning\",\r\n                confirmButtonText: $localize`Ok`,\r\n              });\r\n            }\r\n          }\r\n        }\r\n      });\r\n    }\r\n    else if (paymentAdjustedWithPriorBal) {\r\n      var obj = {\r\n        PaymentSuccess: true,\r\n        OrderId: \"\",\r\n        VerifoneId: 0\r\n      }\r\n      this.PaymentResponse(obj)\r\n    }\r\n    else {\r\n      Swal.fire({\r\n        title: $localize`Warning`,\r\n        text: $localize`Please enter the Payment Amount!`,\r\n        icon: \"warning\",\r\n        confirmButtonText: $localize`Ok`,\r\n      });\r\n    }\r\n  }\r\n\r\n  PaymentResponse(response) {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    if (response.PaymentSuccess) {\r\n      this.verifoneId = response.VerifoneId;\r\n      if (this.newVendor) {\r\n        this.subscriptions.push(\r\n          this.vendorService.SaveVendor(this.sharedDataService.newVendorContactInfo).subscribe((SaveVenresponse: any) => {\r\n            if (SaveVenresponse.Success) {\r\n              this.vendorId = SaveVenresponse.Id;\r\n              this.loaderIcon = Promise.resolve(true);\r\n              this.sharedDataService.newVendorLoginDetails.VendorId = SaveVenresponse.Id;\r\n              this.vendorService.SaveVendorLoginDetail(this.sharedDataService.newVendorLoginDetails).subscribe((res: any) => {\r\n                if (res.Success) {\r\n                  const credentials =\r\n                  {\r\n                    username: this.sharedDataService.newVendorLoginDetails.OnlineUserId,\r\n                    password: this.sharedDataService.newVendorLoginDetails.OnlinePassword,\r\n                    EmailLogin: false,\r\n                    MarketId: this.marketId\r\n                  }\r\n                  this.userService.getToken(credentials).subscribe(async (resTokenGen) => {\r\n                    sessionStorage.setItem('token', resTokenGen.token);\r\n                    if (this.businessLicenseInfo) {\r\n                      if (this.businessLicenseInfo.BusinessLicenseNoRequired) {\r\n                        const obj = {\r\n                          VendorID: this.vendorId,\r\n                          LicenseNameId: 1,\r\n                          LicenseName: \"\",\r\n                          ExpiryDate: new Date(this.businessLicenseInfo.ExpiryDate),\r\n                          LicenseNumber: this.businessLicenseInfo.LicenseNumber\r\n                        }\r\n                        this.subscriptions.push(this.operationRentalService.updateVendorBusinessLicense(this.marketId, obj).subscribe((res: any) => {\r\n                        }));\r\n                      }\r\n                    }\r\n                    // Proceed to save booking details after both vendor and login details are saved\r\n                    this.saveBookingDetails(response);\r\n                    this.sharedDataService.newVendorLoginDetails =\"\";\r\n                    this.sharedDataService.newVendorContactInfo = \"\";\r\n                  });\r\n                } else {\r\n                  this.toastr.error($localize`Failed to save vendor login details`, $localize`Error`, this.toasterConfig);\r\n                  this.loaderIcon = Promise.resolve(false);\r\n                }\r\n              });\r\n            } else {\r\n              this.toastr.error($localize`Failed to save vendor`, $localize`Error`, this.toasterConfig);\r\n              this.loaderIcon = Promise.resolve(false);\r\n            }\r\n          })\r\n        );\r\n      } else {\r\n        // Directly save booking details without vendor saving\r\n        this.saveBookingDetails(response);\r\n      }\r\n    }\r\n    else {\r\n      this.processPayment = false;\r\n      this.voidPayment = false;\r\n      this.disablePayBtnAfterSubmit = false;\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }\r\n  }\r\n\r\n  saveBookingDetails(response) {  \r\n    switch (this.paymentData.RentalType) {\r\n      case 1:\r\n        var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0 && this.paymentOnly) {\r\n          this.paymentOnly = false;\r\n        }\r\n        var obj = {\r\n          VendorId: this.vendorId,\r\n          PaymentOrderId: response.OrderId,\r\n          RentalCharge: this.paymentData.RentalCharge,\r\n          SalesTax: this.paymentData.SalesTax,\r\n          SecLevelTax: this.paymentData.SecLevelTax,\r\n          OtherCharge: this.paymentData.OtherCharge,\r\n          PriorBalance: this.paymentData.PriorBalance,\r\n          TotalBalanceDue: this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n          RentalNotes: this.paymentData.RentalNotes,\r\n          CashAmount: 0,\r\n          CheckAmount: 0,\r\n          CheckNo: \"\",\r\n          ChangeAmount: 0,\r\n          CardAmount: this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DirectDebitAmount: 0,\r\n          CardType: \"\",\r\n          PaymentDone: true,\r\n          WebRentalRequest: true,\r\n          PaymentDueDate: this.paymentData.PaymentDueDate,\r\n          VerifoneId: response.VerifoneId,\r\n          DiscountAmount: this.paymentData.DiscountAmount,\r\n          ConvenienceFee: this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n          BookingFee: this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')),\r\n          FacilityCharge: this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DailyRentalBooth: [],\r\n          DailyRentalOtherCharges: [],\r\n          AppliedDiscountModel: []\r\n        }\r\n\r\n        if (this.paymentData.DailyRentalBooth.length > 0)\r\n          obj.DailyRentalBooth = this.paymentData.DailyRentalBooth;\r\n\r\n        if (this.paymentData.DailyRentalOtherCharges.length > 0)\r\n          obj.DailyRentalOtherCharges = this.paymentData.DailyRentalOtherCharges;\r\n\r\n        if(this.wifiOtherItemModel.length > 0){\r\n          obj.DailyRentalOtherCharges = obj.DailyRentalOtherCharges.concat(this.wifiOtherItemModel);\r\n        }\r\n\r\n        if (this.bookingFeeOtherItemModel.length > 0) {\r\n          obj.DailyRentalOtherCharges = obj.DailyRentalOtherCharges.concat(this.bookingFeeOtherItemModel);\r\n        }\r\n\r\n        if (this.paymentData.AppliedDiscountModel.length > 0)\r\n          obj.AppliedDiscountModel = this.paymentData.AppliedDiscountModel;\r\n\r\n        if (this.promoCodeDiscountAmount > 0) {\r\n          obj.AppliedDiscountModel.push(this.promoCodeAppliedDiscount);\r\n        }\r\n\r\n        const sub = this.operationRentalService.SaveDailyRental(obj).subscribe(async (res: any) => {\r\n          if (res.Success) {\r\n            this.accountReceipId = res.Id;\r\n            this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n            if (this.printWIFIAccessCodeInReceipts && this.WIFIOtherItemRentalChargeId) {        \r\n                const checkMinimum = await this.operationRentalService.CheckMinimumUnusedCodeCount(this.marketId,\"Daily\").toPromise();\r\n                if (checkMinimum.Success) { \r\n                  var distinctRentDates = Array.from(\r\n                    new Set(this.paymentData.DailyRentalBooth.map((item: any) => \r\n                      new Date(item.RentalDay).toISOString().split('T')[0] // Extract YYYY-MM-DD\r\n                    ))\r\n                  );\r\n                  if (distinctRentDates.length > 0) {\r\n                    for (const item of distinctRentDates) {\r\n                      var obj = {\r\n                        RentalType: 'Daily',\r\n                        AccountReceiptId: res.Id,\r\n                        VendorId: this.vendorId,\r\n                        RentalYearMonth: \"\",\r\n                        RentalTypeId: 1,\r\n                        RentalDay: item,\r\n                        MarketId: this.marketId\r\n                      }\r\n                      const updateRes = await this.operationRentalService.updateWIFIAccessCodeForRental(obj).toPromise();\r\n                      if (!updateRes.Success) {\r\n                        this.toastr.error($localize`Please contact market for the WIFI access codes`, $localize`Error`, this.toasterConfig);\r\n                      }\r\n                    }\r\n                  }\r\n                }\r\n                else{\r\n                  this.toastr.error($localize`${checkMinimum.Message}`, $localize`Error`, this.toasterConfig);\r\n                }       \r\n            } \r\n            if (this.paymentData.TempRecordNo != 0) {\r\n              const temp = {\r\n                TempRecordNo: this.paymentData.TempRecordNo.toString(),\r\n                BoothNumber: \"\"\r\n              }\r\n              this.subscriptions.push(\r\n                this.operationRentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n            this.sharedDataService.paymentSharedData = '';\r\n            this.openConfirmationPage = true;\r\n          } else {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            if (this.verifoneId) {\r\n              this.voidPayment = true;\r\n            }\r\n            if (this.paymentData.TempRecordNo != 0) {\r\n              const temp = {\r\n                TempRecordNo: this.paymentData.TempRecordNo.toString(),\r\n                BoothNumber: \"\"\r\n              }\r\n              this.subscriptions.push(\r\n                this.operationRentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }, (err) => {\r\n          this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n          // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n          // this.router.navigate([url]);               \r\n\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n\r\n        this.subscriptions.push(sub);\r\n        break;\r\n      case 2:\r\n        var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0 && this.paymentOnly) {\r\n          this.paymentOnly = false;\r\n        }\r\n        var objMonthly = {\r\n          VendorId: this.vendorId,\r\n          PaymentOrderId: response.OrderId,\r\n          RentalCharge: this.paymentData.RentalCharge,\r\n          SalesTax: this.paymentData.SalesTax,\r\n          SecLevelTax: this.paymentData.SecLevelTax,\r\n          OtherCharge: this.paymentData.OtherCharge,\r\n          PriorBalance: this.paymentData.PriorBalance,\r\n          TotalBalanceDue: this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n          RentalNotes: this.paymentData.RentalNotes,\r\n          CashAmount: 0,\r\n          CheckAmount: 0,\r\n          CheckNo: \"\",\r\n          ChangeAmount: 0,\r\n          CardAmount: this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DirectDebitAmount: 0,\r\n          CardType: \"\",\r\n          PaymentDone: true,\r\n          WebRentalRequest: true,\r\n          PaymentDueDate: this.paymentData.PaymentDueDate,\r\n          VerifoneId: response.VerifoneId,\r\n          DiscountAmount: this.paymentData.DiscountAmount,\r\n          ConvenienceFee: this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n          BookingFee: this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')),\r\n          FacilityCharge: this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n          MonthlyRentalBooth: [],\r\n          MonthlyOtherRentalCharges: [],\r\n          AppliedDiscountModel: []\r\n        }\r\n\r\n        if (this.paymentData.MonthlyRentalBooth.length > 0)\r\n          objMonthly.MonthlyRentalBooth = this.paymentData.MonthlyRentalBooth;\r\n\r\n\r\n        if (this.paymentData.MonthlyOtherRentalCharges.length > 0)\r\n          objMonthly.MonthlyOtherRentalCharges = this.paymentData.MonthlyOtherRentalCharges;\r\n\r\n        if(this.wifiOtherItemModel.length > 0){\r\n          objMonthly.MonthlyOtherRentalCharges  = objMonthly.MonthlyOtherRentalCharges.concat(this.wifiOtherItemModel);\r\n        }\r\n\r\n        if (this.paymentData.AppliedDiscountModel.length > 0)\r\n          objMonthly.AppliedDiscountModel = this.paymentData.AppliedDiscountModel;\r\n\r\n        const subMonthly = this.operationRentalService.saveMonthlyRental(this.marketId, objMonthly).subscribe(async (res: any) => {\r\n          if (res.Success) {\r\n            this.accountReceipId = res.Id;\r\n            this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n\r\n            if (this.printWIFIAccessCodeInReceipts && this.WIFIOtherItemRentalChargeId) {\r\n              const checkMinimum = await this.operationRentalService.CheckMinimumUnusedCodeCount(this.marketId, \"Daily\").toPromise();\r\n              if (checkMinimum.Success) {\r\n                const distinctRentalYearMonth = Array.from(\r\n                  new Set(this.paymentData.MonthlyRentalBooth.map((item: any) => item.RentalYearMonth))\r\n                );\r\n                if (distinctRentalYearMonth.length > 0) {\r\n                  for (const item of distinctRentalYearMonth) {\r\n                    var obj = {\r\n                      RentalType: 'Monthly',\r\n                      AccountReceiptId: res.Id,\r\n                      VendorId: this.vendorId,\r\n                      RentalYearMonth: item,\r\n                      RentalTypeId: 2,\r\n                      MarketId: this.marketId\r\n                    }\r\n                    const updateRes = await this.operationRentalService.updateWIFIAccessCodeForRental(obj).toPromise();\r\n                    if (!updateRes.Success) {\r\n                      this.toastr.error($localize`Please contact market for the WIFI access codes`, $localize`Error`, this.toasterConfig);\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              else {\r\n                this.toastr.error($localize`${checkMinimum.Message}`, $localize`Error`, this.toasterConfig);\r\n              }\r\n            } \r\n            this.sharedDataService.paymentSharedData = '';\r\n            this.openConfirmationPage = true;\r\n          }\r\n          else {\r\n            if (this.verifoneId) {\r\n              this.voidPayment = true;\r\n            }\r\n            this.toastr.error($localize`Error occured while saving the rental transaction`, $localize`Error`, this.toasterConfig)\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }, (err) => {\r\n          this.toastr.error($localize`Error occured while saving the rental transaction`, $localize`Error`, this.toasterConfig)\r\n          const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n        this.subscriptions.push(subMonthly);\r\n        break;\r\n\r\n      case 4:\r\n        var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0 && this.paymentOnly) {\r\n          this.paymentOnly = false;\r\n        }\r\n        var objCombinedMonthly = {\r\n          VendorId: this.vendorId,\r\n          PaymentOrderId: response.OrderId,\r\n          RentalCharge: this.paymentData.RentalCharge,\r\n          SalesTax: this.paymentData.SalesTax,\r\n          SecLevelTax: this.paymentData.SecLevelTax,\r\n          OtherCharge: this.paymentData.OtherCharge,\r\n          PriorBalance: this.paymentData.PriorBalance,\r\n          TotalBalanceDue: this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n          RentalNotes: this.paymentData.RentalNotes,\r\n          CashAmount: 0,\r\n          CheckAmount: 0,\r\n          CheckNo: \"\",\r\n          ChangeAmount: 0,\r\n          CardAmount: this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DirectDebitAmount: 0,\r\n          CardType: \"\",\r\n          PaymentDone: true,\r\n          WebRentalRequest: true,\r\n          PaymentDueDate: this.paymentData.PaymentDueDate,\r\n          VerifoneId: response.VerifoneId,\r\n          DiscountAmount: this.paymentData.DiscountAmount,\r\n          ConvenienceFee: this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n          BookingFee: this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')),\r\n          FacilityCharge: this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n          MonthlyRentalBooth: [],\r\n          MonthlyOtherRentalCharges: [],\r\n          AppliedDiscountModel: []\r\n        }\r\n\r\n        if (this.paymentData.MonthlyRentalBooth.length > 0)\r\n          objCombinedMonthly.MonthlyRentalBooth = this.paymentData.MonthlyRentalBooth;\r\n\r\n\r\n        if (this.paymentData.MonthlyOtherRentalCharges.length > 0)\r\n          objCombinedMonthly.MonthlyOtherRentalCharges = this.paymentData.MonthlyOtherRentalCharges;\r\n\r\n        if(this.wifiOtherItemModel.length > 0){\r\n          objCombinedMonthly.MonthlyOtherRentalCharges  = objCombinedMonthly.MonthlyOtherRentalCharges.concat(this.wifiOtherItemModel);\r\n        }\r\n\r\n        if (this.paymentData.AppliedDiscountModel.length > 0)\r\n          objCombinedMonthly.AppliedDiscountModel = this.paymentData.AppliedDiscountModel;\r\n\r\n        const subCM = this.operationRentalService.SaveCombinedMonthlyRentalTransactions(objCombinedMonthly).subscribe(async (res: any) => {\r\n          if (res.Success) {\r\n            this.accountReceipId = res.Id;\r\n            this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n            if (this.printWIFIAccessCodeInReceipts && this.WIFIOtherItemRentalChargeId) {\r\n              const checkMinimum = await this.operationRentalService.CheckMinimumUnusedCodeCount(this.marketId, \"Daily\").toPromise();\r\n              if (checkMinimum.Success) {\r\n                const distinctRentalYearMonth = Array.from(\r\n                  new Set(this.paymentData.MonthlyRentalBooth.map((item: any) => item.RentalYearMonth))\r\n                );\r\n\r\n                if (distinctRentalYearMonth.length > 0) {\r\n                  for (const item of distinctRentalYearMonth) {\r\n                    var obj = {\r\n                      RentalType: 'Combined Monthly',\r\n                      AccountReceiptId: res.Id,\r\n                      VendorId: this.vendorId,\r\n                      RentalYearMonth: item,\r\n                      RentalTypeId: 4,\r\n                      MarketId: this.marketId\r\n                    }\r\n                    const updateRes = await this.operationRentalService.updateWIFIAccessCodeForRental(obj).toPromise();\r\n                    if (!updateRes.Success) {\r\n                      this.toastr.error($localize`Please contact market for the WIFI access codes`, $localize`Error`, this.toasterConfig);\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              else {\r\n                this.toastr.error($localize`${checkMinimum.Message}`, $localize`Error`, this.toasterConfig);\r\n              }\r\n            } \r\n          \r\n            this.sharedDataService.paymentSharedData = '';\r\n            this.openConfirmationPage = true;\r\n          } else {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            if (this.verifoneId) {\r\n              this.voidPayment = true;\r\n            }\r\n            if (this.paymentData.TempRecordNo != 0) {\r\n              const temp = {\r\n                TempRecordNo: this.paymentData.TempRecordNo.toString(),\r\n                BoothNumber: \"\"\r\n              }\r\n              this.subscriptions.push(\r\n                this.operationRentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }, (err) => {\r\n          this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n          // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n          // this.router.navigate([url]);               \r\n\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n\r\n        this.subscriptions.push(subCM);\r\n        break;\r\n\r\n      case 5:\r\n        var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0 && this.paymentOnly) {\r\n          this.paymentOnly = false;\r\n        }\r\n        var objCombinedWeekly = {\r\n          VendorId: this.vendorId,\r\n          PaymentOrderId: response.OrderId,\r\n          RentalCharge: this.paymentData.RentalCharge,\r\n          SalesTax: this.paymentData.SalesTax,\r\n          SecLevelTax: this.paymentData.SecLevelTax,\r\n          OtherCharge: this.paymentData.OtherCharge,\r\n          PriorBalance: this.paymentData.PriorBalance,\r\n          TotalBalanceDue: this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n          RentalNotes: this.paymentData.RentalNotes,\r\n          CashAmount: 0,\r\n          CheckAmount: 0,\r\n          CheckNo: \"\",\r\n          ChangeAmount: 0,\r\n          CardAmount: this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DirectDebitAmount: 0,\r\n          CardType: \"\",\r\n          PaymentDone: true,\r\n          WebRentalRequest: true,\r\n          PaymentDueDate: this.paymentData.PaymentDueDate,\r\n          VerifoneId: response.VerifoneId,\r\n          DiscountAmount: this.paymentData.DiscountAmount,\r\n          ConvenienceFee: this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n          BookingFee: this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')),\r\n          FacilityCharge: this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('facilityCharge').value.toString().replace(/[^0-9.-]/g, '')),\r\n          CombinedWeeklyRentalBooth: [],\r\n          WeeklyRentalOtherCharges: [],\r\n          AppliedDiscountModel: []\r\n        }\r\n\r\n        if (this.paymentData.CombinedWeeklyRentalBooth.length > 0)\r\n          objCombinedWeekly.CombinedWeeklyRentalBooth = this.paymentData.CombinedWeeklyRentalBooth;\r\n\r\n\r\n        if (this.paymentData.WeeklyRentalOtherCharges.length > 0)\r\n          objCombinedWeekly.WeeklyRentalOtherCharges = this.paymentData.WeeklyRentalOtherCharges;\r\n\r\n        if(this.wifiOtherItemModel.length > 0){\r\n          objCombinedWeekly.WeeklyRentalOtherCharges  = objCombinedWeekly.WeeklyRentalOtherCharges.concat(this.wifiOtherItemModel);\r\n        }\r\n\r\n        if (this.paymentData.AppliedDiscountModel.length > 0)\r\n          objCombinedWeekly.AppliedDiscountModel = this.paymentData.AppliedDiscountModel;\r\n\r\n        const subCW = this.operationRentalService.SaveCombinedWeeklyRentalTransactions(objCombinedWeekly).subscribe(async (res: any) => {\r\n         if (res.Success) {\r\n            this.accountReceipId = res.Id;\r\n            this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n            if (this.printWIFIAccessCodeInReceipts && this.WIFIOtherItemRentalChargeId) {        \r\n              const checkMinimum = await this.operationRentalService.CheckMinimumUnusedCodeCount(this.marketId,\"Daily\").toPromise();\r\n              const distinctStartDates = Array.from(\r\n                new Set(\r\n                  this.paymentData.CombinedWeeklyRentalBooth.map((item: any) => item.RentalWeeekStartDate)\r\n                )\r\n              );\r\n\r\n              const distinctRentDates = new Set<string>();\r\n              distinctStartDates.forEach((startDate: string) => {\r\n                const relatedItem = this.paymentData.CombinedWeeklyRentalBooth.find(\r\n                  (item: any) => item.RentalWeeekStartDate === startDate\r\n                );\r\n\r\n                if (relatedItem) {\r\n                  const rentalWeekStart = new Date(startDate);\r\n                  const rentalEndDate = new Date(relatedItem.RentalEndDate);\r\n                  let currentWeekStart = new Date(rentalWeekStart);\r\n\r\n                  while (currentWeekStart <= rentalEndDate) {\r\n                    const formattedDate = currentWeekStart.toISOString().split('T')[0];\r\n                    distinctRentDates.add(formattedDate);\r\n                    currentWeekStart.setDate(currentWeekStart.getDate() + 7);\r\n                  }\r\n                }\r\n              });\r\n              const uniqueRentDatesArray = Array.from(distinctRentDates);\r\n              if (uniqueRentDatesArray.length > 0) {\r\n                for (const item of uniqueRentDatesArray) {\r\n                  if (checkMinimum.Success) {\r\n                    var obj = {\r\n                      RentalType: 'Combined Weekly',\r\n                      AccountReceiptId: res.Id,\r\n                      VendorId: this.vendorId,\r\n                      RentalYearMonth: \"\",\r\n                      RentalTypeId: 5,\r\n                      WeekStartDate: new Date(item),\r\n                      MarketId: this.marketId\r\n                    }\r\n                    const updateRes = await this.operationRentalService.updateWIFIAccessCodeForRental(obj).toPromise();\r\n                    if (!updateRes.Success) {\r\n                      this.toastr.error($localize`Please contact market for the WIFI access codes`, $localize`Error`, this.toasterConfig);\r\n                    }\r\n                  }\r\n                }\r\n              }\r\n              else{\r\n                this.toastr.error($localize`${checkMinimum.Message}`, $localize`Error`, this.toasterConfig);\r\n              }       \r\n          }\r\n            this.sharedDataService.paymentSharedData = '';\r\n            this.openConfirmationPage = true;\r\n          } else {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            if (this.verifoneId) {\r\n              this.voidPayment = true;\r\n            }\r\n            if (this.paymentData.TempRecordNo != 0) {\r\n              const temp = {\r\n                TempRecordNo: this.paymentData.TempRecordNo.toString(),\r\n                BoothNumber: \"\"\r\n              }\r\n              this.subscriptions.push(\r\n                this.operationRentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }, (err) => {\r\n          this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n          // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n          // this.router.navigate([url]);               \r\n\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n\r\n        this.subscriptions.push(subCW);\r\n        break;\r\n\r\n      case 3:\r\n        var convenienceFee = this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, ''));\r\n        if (convenienceFee > 0 && this.paymentOnly) {\r\n          this.paymentOnly = false;\r\n        }\r\n        var objWeekly = {\r\n          VendorId: this.vendorId,\r\n          PaymentOrderId: response.OrderId,\r\n          RentalCharge: this.paymentData.RentalCharge,\r\n          SalesTax: this.paymentData.SalesTax,\r\n          SecLevelTax: this.paymentData.SecLevelTax,\r\n          OtherCharge: this.paymentData.OtherCharge,\r\n          PriorBalance: this.paymentData.PriorBalance,\r\n          TotalBalanceDue: this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('balanceDue').value.toString().replace(/[^0-9.-]/g, '')),\r\n          RentalNotes: this.paymentData.RentalNotes,\r\n          CashAmount: 0,\r\n          CheckAmount: 0,\r\n          CheckNo: \"\",\r\n          ChangeAmount: 0,\r\n          CardAmount: this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('paymentAmount').value.toString().replace(/[^0-9.-]/g, '')),\r\n          DirectDebitAmount: 0,\r\n          CardType: \"\",\r\n          PaymentDone: true,\r\n          WebRentalRequest: true,\r\n          PaymentDueDate: this.paymentData.PaymentDueDate,\r\n          VerifoneId: response.VerifoneId,\r\n          DiscountAmount: this.paymentData.DiscountAmount,\r\n          ConvenienceFee: this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('convenienceFee').value.toString().replace(/[^0-9.-]/g, '')),\r\n          BookingFee: this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes('(') && this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().includes(')') ? -1 * parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')) : parseFloat(this.paymentForm.controls['paymentDetails'].get('additionalCharges').value.toString().replace(/[^0-9.-]/g, '')),\r\n          WeeklyRentalBooth: [],\r\n          WeeklyRentalOtherCharges: [],\r\n          AppliedDiscountModel: []\r\n        }\r\n\r\n        if (this.paymentData.WeeklyRentalBooth.length > 0)\r\n          objWeekly.WeeklyRentalBooth = this.paymentData.WeeklyRentalBooth;\r\n\r\n\r\n        if (this.paymentData.WeeklyRentalOtherCharges.length > 0)\r\n          objWeekly.WeeklyRentalOtherCharges = this.paymentData.WeeklyRentalOtherCharges;\r\n\r\n        if (this.paymentData.AppliedDiscountModel.length > 0)\r\n          objWeekly.AppliedDiscountModel = this.paymentData.AppliedDiscountModel;\r\n\r\n        const subW = this.operationRentalService.SaveWeeklyRentalTransactions(objWeekly).subscribe((res: any) => {\r\n          if (res.Success) {\r\n            this.accountReceipId = res.Id;\r\n            this.toastr.success($localize`Transaction saved successfully`, $localize`Success`, this.toasterConfig);\r\n            this.sharedDataService.paymentSharedData = '';\r\n            this.openConfirmationPage = true;\r\n          } else {\r\n            this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n            if (this.verifoneId) {\r\n              this.voidPayment = true;\r\n            }\r\n            if (this.paymentData.TempRecordNo != 0) {\r\n              const temp = {\r\n                TempRecordNo: this.paymentData.TempRecordNo.toString(),\r\n                BoothNumber: \"\"\r\n              }\r\n              this.subscriptions.push(\r\n                this.operationRentalService.deleteFromTemp(temp).subscribe((res: any) => {\r\n                })\r\n              );\r\n            }\r\n          }\r\n          this.loaderIcon = Promise.resolve(false);\r\n        }, (err) => {\r\n          this.toastr.error($localize`Error occurred while saving the rental transaction`, $localize`Error`, this.toasterConfig);\r\n          // const url = 'ops/vendors/details/' + this.vendorId + '/3';\r\n          // this.router.navigate([url]);               \r\n\r\n          this.loaderIcon = Promise.resolve(false);\r\n        });\r\n\r\n        this.subscriptions.push(subW);\r\n        break;\r\n    }\r\n  }\r\n\r\n  voidPaymentResponse() {\r\n    this.voidPayment = false;\r\n      const url = 'rent-online/' + this.marketId + '/' + this.vendorId;\r\n      this.router.navigate([url]);\r\n  }\r\n\r\n  getCCCredentials() {\r\n    this.paymentService.getCCCredentials(this.marketId).subscribe((res) => {\r\n      if (res !== null) {\r\n        this.paymentGatewayCredentials = res.GatewayDetails ? JSON.parse(res.GatewayDetails) : null;\r\n        this.processCreditCardOnline = res.ProcessCreditCardOnline;\r\n      }\r\n    })\r\n  }\r\n\r\n  ClearPay() {\r\n    this.paymentForm.controls['paymentDetails'].patchValue({\r\n      cashAmount: this.customCurrency.transform(\"0.00\"),\r\n      checkAmount: this.customCurrency.transform(\"0.00\"),\r\n      creditCardAmount: this.customCurrency.transform(\"0.00\"),\r\n      directDebitAmount: this.customCurrency.transform(\"0.00\"),\r\n      convenienceFee: this.customCurrency.transform(\"0.00\"),\r\n      changeAmount: this.customCurrency.transform(\"0.00\"),\r\n      checkNo: '',\r\n      creditCardTypes:'1',\r\n      totalDue:  this.customCurrency.transform(this.actualTotalDue.toString()),\r\n      balanceAmount:this.customCurrency.transform(this.paymentData.TotalBalanceDue.toString())\r\n    });\r\n  }\r\n\r\n  cancel(){\r\n    Swal.fire({\r\n      title: $localize`Confirm`,\r\n      text: $localize`Are you sure you want cancel ?`,\r\n      icon: \"question\",\r\n      showCancelButton: true,\r\n      confirmButtonText: $localize`Yes`,\r\n      cancelButtonText: $localize`No`,\r\n    }).then((result) => {\r\n      if (result.value) {\r\n        if (this.newVendor) {\r\n          this.cancelClick.emit();\r\n        }\r\n        else {\r\n          const url = 'rent-online/' + this.marketId + '/' + this.vendorId;\r\n          this.router.navigate([url]);      //this.location.();\r\n        }\r\n      }\r\n    });\r\n  }\r\n  \r\n  ClosePaymentPage(){\r\n    this.processPayment = false;\r\n    this.voidPayment = false;\r\n    this.disablePayBtnAfterSubmit = false;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    //this.sharedDataService.paymentSharedData = {};\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { ActivatedRoute, ActivatedRouteSnapshot, CanActivate, Params, Router, RouterStateSnapshot, UrlTree } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../services/auth.service';\r\n\r\n@Injectable({\r\n  providedIn: 'root'\r\n})\r\nexport class AuthGuard implements CanActivate {\r\n\r\n  constructor(private router: Router,\r\n    private route: ActivatedRoute,\r\n    private authService: AuthService) { }\r\n  marketId;\r\n  canActivate(\r\n    route: ActivatedRouteSnapshot,\r\n    state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = route.paramMap.get('marketId');\r\n    });\r\n    let isLoggedIn: boolean = this.authService.isLoginAutenticated();\r\n\r\n    if (isLoggedIn)\r\n      return true;\r\n    else\r\n      this.router.navigate(['/login/' + this.marketId]);\r\n  }\r\n}\r\n","<app-loader *ngIf=\"loaderIcon | async\"></app-loader>\r\n<div class=\"container-fluid\">\r\n    <form [formGroup]=\"rentalForm\">\r\n        <div class=\"row\">\r\n            <div class=\"col-lg-2 col-xl-2 alignMenu shadow text-left pt-2\">\r\n                <app-rental-menu></app-rental-menu>\r\n            </div>\r\n            <div class=\"col-lg-10 col-xl-10 bgMainSection bgBlue text-left\">\r\n                <div class=\"container mainContainer\">\r\n                    <div class=\"row\">\r\n                        <div class=\"col-5 text-left mt-4\">\r\n                            <label class=\"mainHeading mb-0\">{{pageName}}</label>\r\n                        </div>\r\n                        <div class=\"col-7 text-right pl-0 mt-4\">\r\n                            <label class=\"mainHeading mb-0\">{{marketName}}</label>\r\n                        </div>\r\n                    </div>\r\n                    <div class=\"row\">\r\n                        <div class=\"col-sm-12 col-md-12 col-lg-12 col-xl-12 text-left\">\r\n                            <button #btnRentOnline class=\"btn btnMain mr-3 mt-2\">Rent Online</button>\r\n                            <button #ContactInfo class=\"btn btnMain mr-3 mt-2\">Current Contact\r\n                                Information</button>\r\n                            <button #btnLoginInfo class=\"btn btnMain mr-3 mt-2\">Online Login\r\n                                Info</button>\r\n                            <button #btnPayment class=\"btn btnMain mt-2\">Payment</button>\r\n                        </div>\r\n                    </div>\r\n                    <div #divRentOnline class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showrentOnline ? 'block' : 'none' }\">\r\n                        <div class=\"container\">\r\n                            <div class=\"row mt-1 pl-4\">\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsDaily\">\r\n                                    <input type=\"radio\" id=\"rdDaily\" class=\"form-check-input\" value=\"1\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdDaily\" class=\"form-check-label\">Daily</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsWeekly\">\r\n                                    <input type=\"radio\" id=\"rdWeekly\" class=\"form-check-input\" value=\"3\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdWeekly\" class=\"form-check-label\">Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-2 col-sm-12 col-xl-2 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsMonthly\">\r\n                                    <input type=\"radio\" id=\"rdMonthly\" class=\"form-check-input\" value=\"2\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdMonthly\" class=\"form-check-label\">Monthly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCw\">\r\n                                    <input type=\"radio\" id=\"rdCombinedWeek\" class=\"form-check-input\" value=\"5\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdCombinedWeek\" class=\"form-check-label\">Combined Weekly</label>\r\n                                </div>\r\n                                <div class=\"col-md-6 col-lg-3 col-sm-12 col-xl-3 ml-lg-3 ml-xl-0\" *ngIf=\"AllowBookingsCm\">\r\n                                    <input type=\"radio\" id=\"rdCombinedMonth\" class=\"form-check-input\" value=\"4\" formControlName=\"rentalTypes\" >\r\n                                    <label for=\"rdCombinedMonth\" class=\"form-check-label\">Combined Monthly</label>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row mt-1 pl-2\">\r\n                                <div class=\"col-md-12 col-lg-12 col-sm-12 col-xl-12\">\r\n                                    <div class=\"col-md-12 col-lg-10 col-sm-12 col-xl-10\" style=\"display: inline-block;\">\r\n                                        <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 1\" style=\"color: red;font-size:12px;\">Booths can be rented\r\n                                            for single or multiple market days on a one time\r\n                                            basis.</span>\r\n                                        <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 2\" style=\"color: red;font-size:12px;\">Booths can be rented for\r\n                                            one market day per week on permanent monthly basis.</span>\r\n                                        <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 3\" style=\"color: red;font-size:12px;\">Booths can be rented for\r\n                                            one market day in the week on permanent weekly basis.</span>\r\n                                        <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 4\" style=\"color: red;font-size:12px;\">Booth can be rented\r\n                                            for all market days in the month on monthly basis.</span>\r\n                                        <span *ngIf=\"this.rentalForm.value['rentalTypes'] == 5\" style=\"color: red;font-size:12px;\">Booths can be rented\r\n                                            for all market days in the week on weekly basis.</span>                                \r\n                                    </div>\r\n                                    <div class=\"col-md-12 col-lg-2 col-sm-12 col-xl-2\" style=\"display: inline-block;\">\r\n                                        <a [href]=\"howtoRentSpaceDocURL\" target=\"_blank\" class=\"btn btn-primary py-2\">How To Rent</a>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-center\">\r\n                                    <hr class=\"my-2\" />\r\n                                </div>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '1'\">\r\n                                <app-dailyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\" [newVendor]=newVendor (bookingFormCompleted)=\"bookingFormCompleted($event)\" (rentalBookingData)=\"rentalBookingData($event)\" \r\n                                 (resaleNoInputRequired)=\"resaleNoInputRequired($event)\" (businessLicenseRequired)=\"businessLicenseRequired($event)\"></app-dailyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '2'\">\r\n                                <app-monthlyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\" [newVendor]=newVendor (bookingFormCompleted)=\"bookingFormCompleted($event)\" (rentalBookingData)=\"rentalBookingData($event)\"\r\n                                (resaleNoInputRequired)=\"resaleNoInputRequired($event)\" (businessLicenseRequired)=\"businessLicenseRequired($event)\"></app-monthlyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '3'\">\r\n                                <app-weeklyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\" [newVendor]=newVendor (bookingFormCompleted)=\"bookingFormCompleted($event)\" (rentalBookingData)=\"rentalBookingData($event)\"\r\n                                (resaleNoInputRequired)=\"resaleNoInputRequired($event)\" (businessLicenseRequired)=\"businessLicenseRequired($event)\"></app-weeklyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '4'\">\r\n                                <app-combinedmonthlyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\" [newVendor]=newVendor (bookingFormCompleted)=\"bookingFormCompleted($event)\" (rentalBookingData)=\"rentalBookingData($event)\"\r\n                                (resaleNoInputRequired)=\"resaleNoInputRequired($event)\" (businessLicenseRequired)=\"businessLicenseRequired($event)\"></app-combinedmonthlyrental-online>\r\n                            </div>\r\n                            <div *ngIf=\"this.rentalForm.value['rentalTypes'] == '5'\">\r\n                                <app-combinedweeklyrental-online (isFormDirty)=\"setDirtyFlag($event)\" (isCancelClicked)=\"isCancelClicked($event)\" [newVendor]=newVendor (bookingFormCompleted)=\"bookingFormCompleted($event)\" (rentalBookingData)=\"rentalBookingData($event)\"\r\n                                (resaleNoInputRequired)=\"resaleNoInputRequired($event)\" (businessLicenseRequired)=\"businessLicenseRequired($event)\"></app-combinedweeklyrental-online>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divContactInfo class=\"bgWghite shadow pt-2 mt-2\"\r\n                        [ngStyle]=\"{ display: showContactInfo ? 'block' : 'none' }\">\r\n                        <div class=\"container\" formGroupName=\"VendorForm\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-lg-4 pt-3\">\r\n                                    <label for=\"txtFirstName\" i18n>*First Name</label>\r\n                                    <input id=\"txtFirstName\" class=\"form-control\" type=\"text\" #VendorFirstName\r\n                                        formControlName=\"FirstName\" required>\r\n                                    <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('FirstName').hasError('required')\"\r\n                                        i18n>* required </small>\r\n                                    <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('FirstName').hasError('maxlength')\"\r\n                                        i18n>* max length exceeded\r\n                                    </small>\r\n                                </div>\r\n                                <div class=\"col-lg-4 pt-3\"\r\n                                    *ngIf=\"this.VendorGeneralSetting.VendorNameFormat.includes('Middle Name')\">\r\n                                    <label for=\"txtMiddleName\" i18n>Middle Name</label>\r\n                                    <input id=\"txtMiddleName\" class=\"form-control\" type=\"text\" formControlName=\"MiddleName\">\r\n                                    <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('MiddleName').hasError('maxlength')\"\r\n                                        i18n>* max length exceeded\r\n                                    </small>\r\n                                </div>\r\n                                <div class=\"col-lg-4 pt-3\"\r\n                                    *ngIf=\"this.VendorGeneralSetting.VendorNameFormat.includes('Last Name')\">\r\n                                    <label for=\"txtLastName\" i18n>Last Name</label>\r\n                                    <input id=\"txtLastName\" class=\"form-control\" type=\"text\" formControlName=\"LastName\">\r\n                                    <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('LastName').hasError('maxlength')\"\r\n                                        i18n>* max length exceeded\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"vendorAddressMandatory\">*</span>Address</label>\r\n                                        <input id=\"txtAddress\" class=\"form-control\" type=\"text\" formControlName=\"Address\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('Address').hasError('maxlength')\"\r\n                                            i18n>* max length exceeded </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"vendorAddressMandatory\">*</span>City</label>\r\n                                        <input id=\"txtCity\" class=\"form-control\" type=\"text\" formControlName=\"City\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('City').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"vendorAddressMandatory\">*</span>State/ Province</label>\r\n                                        <ejs-dropdownlist id=\"ddlState\" *ngIf=\"showStateDropDown\" tabindex=\"9\"\r\n                                            [dataSource]=\"stateList\" [fields]=\"StateDropDownfields\"\r\n                                            [placeholder]=\"'Select State'\" [popupHeight]=\"200\" [allowFiltering]=\"true\"\r\n                                            filterBarPlaceholder=\"Search for State/Province\" formControlName=\"State\">\r\n                                        </ejs-dropdownlist>\r\n                                        <!-- <select id=\"ddlState\" class=\"form-control\" *ngIf=\"showStateDropDown\" formControlName=\"State\">\r\n                                            <option *ngFor=\"let st of stateList\" [value]=\"st.StateCode\">{{st.StateCode}}</option>\r\n                                        </select> -->\r\n                                        <input type=\"text\" *ngIf=\"!showStateDropDown\" maxlength=\"2\" tabindex=\"9\"\r\n                                            class=\"form-control\" formControlName=\"State\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('State').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Country</label>\r\n                                        <select id=\"ddlCountry\" class=\"form-control\" formControlName=\"CountryCode\"\r\n                                            tabindex=\"11\" (change)=\"onCountryChange()\">\r\n                                            <option *ngFor=\"let ct of countryList\" [value]=\"ct.Code\">{{ct.Name}}</option>\r\n                                        </select>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"vendorAddressMandatory\">*</span>Zip/Postal Code</label>\r\n                                        <!-- <input id=\"txtZipCode\" class=\"form-control\" type=\"text\" formControlName=\"ZipCode\"> -->\r\n                                        <ejs-maskedtextbox [mask]=\"ZipCodeMask\" tabindex=\"13\" name=\"ZipCode\" id=\"ZipCode\"\r\n                                            formControlName=\"ZipCode\"></ejs-maskedtextbox>\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('ZipCode').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">Work Phone</label>\r\n                                        <!-- <input class=\"form-control\" type=\"text\" formControlName=\"WorkPhone\"> -->\r\n                                        <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"WorkPhone\"\r\n                                            id=\"telephone\" formControlName=\"WorkPhone\" (keyup)=\"onKeyUp('WorkPhone')\"></ejs-maskedtextbox>\r\n                                            <small style=\"color: red;\" *ngIf=\"showWorkPhoneError\" i18n>Enter valid work\r\n                                                phone number</small>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Cell Phone</label>\r\n                                        <!-- <input class=\"form-control\" type=\"text\" formControlName=\"CellPhone\"> -->\r\n                                        <ejs-maskedtextbox [mask]=\"PhoneNumberMask\" tabindex=\"13\" name=\"telephone\"\r\n                                            id=\"telephone\" formControlName=\"CellPhone\" (keyup)=\"onKeyUp('CellPhone')\"></ejs-maskedtextbox>\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('CellPhone').hasError('minlength')\"\r\n                                            i18n>* not complete</small>\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('CellPhone').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Email</label>\r\n                                        <input id=\"txtEmail\" class=\"form-control\" type=\"text\" formControlName=\"Email\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('Email').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">Drivers License</label>\r\n                                        <input id=\"txtDriverLicense\" class=\"form-control\" type=\"text\" formControlName=\"DriverLicenseNumber\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('DriverLicenseNumber').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">DL Expiry Date</label>\r\n                                        <!-- <input class=\"form-control\" type=\"text\" formControlName=\"VendorSince\"> -->\r\n                                        <ejs-datepicker format='MM/dd/yyyy' [allowEdit]=false\r\n                                            id=\"filterWorkOrderCreatedDate\" formControlName=\"DLExpiryDate\"\r\n                                            i18n-placeholder=\"DL Expiry Date\" placeholder=\"DL Expiry Date\"></ejs-datepicker>\r\n                                        <div>\r\n                                            <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('DLExpiryDate').invalid\" i18n>* required </small>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"resaleNumberRequired\">*</span>Resale #</label>\r\n                                        <input id=\"txtResaleNumber\" class=\"form-control\" type=\"text\" formControlName=\"ResaleNumber\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('ResaleNumber').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\"><span *ngIf=\"businessLicenseNoRequired\">*</span>Business License #</label>\r\n                                        <input id=\"txtBusinessLicenseNumber\" class=\"form-control\" type=\"text\" formControlName=\"BusinessLicenseNumber\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('BusinessLicenseNumber').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>                               \r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\" *ngIf=\"businessLicenseNoRequired\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Business License Expiry Date</label>\r\n                                        <input type=\"date\" class=\"form-control\" formControlName=\"BusinessLicenseExpiryDate\"\r\n                                        [placeholder]=\"'Business License Expiry Date'\" i18n-placeholder=\"Business License Expiry Date\">\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('BusinessLicenseExpiryDate').hasError('required')\" i18n>* required </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">* Primary Selling Product</label>\r\n                                        <ejs-dropdownlist id=\"ProductPriority\" [dataSource]=\"productList\"\r\n                                            [fields]=\"ProductDropDownfields\" [placeholder]=\"'Select product'\"\r\n                                            [popupHeight]=\"200\" [allowFiltering]=\"true\"\r\n                                            filterBarPlaceholder=\"Search for product\" formControlName=\"ProductPriority\"\r\n                                            (valueChange)=\"primaryproductchange($event)\">\r\n    \r\n                                        </ejs-dropdownlist>\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('ProductPriority').invalid\" i18n>*\r\n                                            required</small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">* Vendor Type</label>\r\n                                        <!-- <input class=\"form-control\" type=\"text\" formControlName=\"VendorType\"> -->\r\n    \r\n                                        <ejs-dropdownlist id=\"ddlType\" [dataSource]=\"VendorTypeList\"\r\n                                            [fields]=\"{text:'VtyTxtVendorType',value:'VtyTxtVendorType'}\"\r\n                                            formControlName=\"VendorType\" tabindex=\"11\" placeholder=\"Select Vendor Type\">\r\n    \r\n                                        </ejs-dropdownlist>\r\n                                        <small style=\"color: red;\" *ngIf=\"rentalForm.controls['VendorForm'].get('VendorType').invalid\" i18n>*\r\n                                            required</small>\r\n                                        \r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-right mb-3\">\r\n                                    <button class=\"btn btn-outline-primary mt-3 mr-1\"\r\n                                    (click)=\"rentOnline()\">Back</button>\r\n                                    <button class=\"btn btn-outline-primary mt-3 mr-2\" (click)=\"cancelContactModification()\">Cancel</button>\r\n                                    <button class=\"btn btn-primary mt-3\" (click)=\"ValidationVendorDetails()\">Next</button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divLoginInfo class=\"bgWghite shadow pt-2 mt-2\"\r\n                    [ngStyle]=\"{ display: showLoginInfo ? 'block' : 'none' }\">\r\n                        <div class=\"container\" formGroupName=\"OnlineAccessForm\">\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*User Name</label>\r\n                                        <input id=\"txtUserName\" class=\"form-control\" type=\"text\" formControlName=\"UserName\">\r\n                                        <small\r\n                                            *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('UserName').invalid && (rentalForm.controls['OnlineAccessForm'].get('UserName').dirty || rentalForm.controls['OnlineAccessForm'].get('UserName').touched)\"\r\n                                            style=\"color: red;\">\r\n                                            <span *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('UserName').hasError('required')\" i18n>*\r\n                                                required</span>\r\n                                            <span *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('UserName').hasError('minlength')\" i18n>*\r\n                                                minimum length is 6 characters</span>\r\n                                        </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Password</label>\r\n                                        <input id=\"txtPassword\" class=\"form-control\" type=\"password\"\r\n                                            formControlName=\"Password\">\r\n                                        <small\r\n                                            *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors && (rentalForm.controls['OnlineAccessForm'].get('Password').dirty || rentalForm.controls['OnlineAccessForm'].get('Password').touched)\"\r\n                                            style=\"color: red;\">\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.required\">*password is\r\n                                                required.</div>\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.minLength\">*password must be\r\n                                                at least 6 characters long.</div>\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.maxlength\">*password must be\r\n                                                at least 20 characters long.</div>\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.specialChar\">*password must\r\n                                                contain at least one special\r\n                                                character.</div>\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.upperCase\">*password must\r\n                                                contain at least one uppercase letter\r\n                                                .</div>\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').errors.lowerCase\">*password must\r\n                                                contain at least one lowercase letter\r\n                                                .</div>\r\n                                        </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Confirm Password</label>\r\n                                        <input id=\"txtConfirmPassword\" class=\"form-control\" type=\"password\"\r\n                                            formControlName=\"ConfirmPassword\">\r\n                                        <small\r\n                                            *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').errors && (rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').dirty || rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').touched)\"\r\n                                            style=\"color: red;\">\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').hasError('required')\">\r\n                                                *confirm password is\r\n                                                required.</div>\r\n                                        </small>\r\n                                        <small\r\n                                            *ngIf=\"(rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').dirty || rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').touched)\"\r\n                                            style=\"color: red;\">\r\n                                            <div\r\n                                                *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Password').value !== rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').value\">\r\n                                                *Confirm password does not match.\r\n                                            </div>\r\n                                        </small>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Security Question</label>\r\n                                        <select id=\"txtSecurityQuestion\" class=\"form-control\"\r\n                                            formControlName=\"SecurityQuestion\" tabindex=\"11\">\r\n                                            <option *ngFor=\"let sq of securityQuestions\" [value]=\"sq.ID\">\r\n                                                {{sq.SecurityQuestion}}</option>\r\n                                        </select>\r\n                                        <small\r\n                                            *ngIf=\"(rentalForm.controls['OnlineAccessForm'].get('SecurityQuestion').dirty || rentalForm.controls['OnlineAccessForm'].get('SecurityQuestion').touched)\"\r\n                                            style=\"color: red;\">\r\n                                            <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('SecurityQuestion').hasError('required')\">\r\n                                                *security question is\r\n                                                required.</div>\r\n                                        </small>\r\n                                    </div>\r\n                                </div>\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Answer</label>\r\n                                        <input id=\"txtAnswer\" class=\"form-control\" type=\"text\" formControlName=\"Answer\">\r\n                                    </div>\r\n                                    <small\r\n                                        *ngIf=\"(rentalForm.controls['OnlineAccessForm'].get('Answer').dirty || rentalForm.controls['OnlineAccessForm'].get('Answer').touched)\"\r\n                                        style=\"color: red;\">\r\n                                        <div *ngIf=\"rentalForm.controls['OnlineAccessForm'].get('Answer').hasError('required')\">*security answer is\r\n                                            required.</div>\r\n                                    </small>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\"\r\n                                *ngIf=\"this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration\">\r\n                                <div class=\"col-sm-12 col-md-6 col-lg-4 col-xl-4 text-left mt-3\">\r\n                                    <div>\r\n                                        <label class=\"mb-0\">*Registeration Fee</label>\r\n                                        <input id=\"txtRegistrationFee\" class=\"form-control text-right\" type=\"text\"\r\n                                            [disabled]=\"true\" [value]=\"rentalForm.controls['OnlineAccessForm'].get('RegistrationFee').value\">\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\"\r\n                                *ngIf=\"this.registrationFee.RegistrationFee!==0 && this.registrationFee.ChargeVendorRegistration\">\r\n                                <div class=\"col-12 text-left mt-3\">\r\n                                    <div class=\"form-check\">\r\n                                        <input class=\"form-check-input\" type=\"checkbox\" id=\"chkCreditCard\"\r\n                                            formControlName=\"registrationPaymentCheck\">\r\n                                        <label class=\"form-check-label\" for=\"chkCreditCard\">\r\n                                            I authorize ABC Flea Market to charge this amount to my Credit Card. Upon\r\n                                            authorization and full payment by the issuing card company, ABC Flea Market will\r\n                                            submit a confirmation number, as verification of charged transaction, to the\r\n                                            above named cardholder.\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-left mt-2\">\r\n                                    <img src=\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMS4xMjQiIGhlaWdodD0iMTUuODQzIiB2aWV3Qm94PSIwIDAgMjEuMTI0IDE1Ljg0MyI+CiAgPHBhdGggaWQ9Ikljb25fYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkYXRhLW5hbWU9Ikljb24gYXdlc29tZS1oYW5kLXBvaW50LXJpZ2h0IiBkPSJNMjEuMTI0LDEwLjFBMS44NiwxLjg2LDAsMCwxLDE5LjI3NiwxMS45aC00LjEyYTIuMDI5LDIuMDI5LDAsMCwxLS4yNiwyLjkyNywxLjg5LDEuODksMCwwLDEtLjY3OSwyLjU3MWMuMzcsMi4wMjctLjkwNSwyLjk0LTMsMi45NC0uMTEzLDAtLjU0OC0uMDA4LS42Ni0uMDA4LTIuNTU3LjAwNy0zLjE3Mi0xLjI4Mi01LjEtMS41ODFhLjk4OS45ODksMCwwLDEtLjgzNi0uOTc4VjEwLjdoMEExLjk4LDEuOTgsMCwwLDEsNS44LDguODljMS4xOTItLjUzNiwzLjkzNy0yLjAyMyw0LjQzNy0zLjE5YTEuNzU5LDEuNzU5LDAsMCwxLDEuNjUtMS4yQTEuOTgyLDEuOTgyLDAsMCwxLDEzLjcsNy4yNmE1LjYwOCw1LjYwOCwwLDAsMS0uNTg0LDEuMDI4aDYuMTU3QTEuODksMS44OSwwLDAsMSwyMS4xMjQsMTAuMVptLTE3LjE2My4wMTR2Ny45MjJhLjk5Ljk5LDAsMCwxLS45OS45OUguOTlhLjk5Ljk5LDAsMCwxLS45OS0uOTlWMTAuMTExYS45OS45OSwwLDAsMSwuOTktLjk5aDEuOThBLjk5Ljk5LDAsMCwxLDMuOTYxLDEwLjExMVpNMi44MDYsMTcuMDQyYS44MjUuODI1LDAsMSwwLS44MjUuODI1QS44MjUuODI1LDAsMCwwLDIuODA2LDE3LjA0MloiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgLTQuNSkiIGZpbGw9IiMwNzI4ZmYiLz4KPC9zdmc+Cg==\"\r\n                                        class=\"img-fluid\" />\r\n                                    &nbsp;<a [href]=\"rulesAndRegulations\" target=\"_blank\" class=\"rules\">Click here to read the Rules and Regulations</a>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-left mt-3\">\r\n                                    <div class=\"form-check\">\r\n                                        <input class=\"form-check-input\" type=\"checkbox\" id=\"chkRules\"\r\n                                            formControlName=\"registrationRuleReadCheck\">\r\n                                        <label class=\"form-check-label\" for=\"chkRules\">\r\n                                            By checking this box, I acknowledge that I have read, understand, and agree to\r\n                                            the rules and regulations, and will Abide by them. Please visit the office for a\r\n                                            copy of the rules and regulations\r\n                                        </label>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                            <div class=\"row\">\r\n                                <div class=\"col-12 text-right mb-3\">\r\n                                    <button class=\"btn btn-outline-primary mt-3 mr-1\"\r\n                                        (click)=\"contactInfo()\">Back</button>\r\n                                    <button class=\"btn btn-outline-primary mt-3 mr-1\" (click)=\"Oncancel()\">Cancel</button>\r\n                                    <button class=\"btn btn-primary mt-3 mr-1\" (click)=\"openPaymentPage()\" [disabled]=\"!rentalForm.controls['OnlineAccessForm'].get('registrationRuleReadCheck').value\">Next</button>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                    <div #divPayemntInfo class=\"bgWghite shadow pt-2 mt-2\" *ngIf=\"openPaymentDetails\" [ngStyle]=\"{ display: showPaymentPage ? 'block' : 'none' }\" style=\"padding-bottom: 2rem;\">\r\n                        <app-vendor-payments [newVendor]=\"newVendor\" [businessLicenseInfo]=\"businessLicenseInfo\" (cancelClick)=\"paymentCancelClick($event)\"></app-vendor-payments>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </form>\r\n</div>\r\n","import { Component, ElementRef, Input, OnDestroy, OnInit, Renderer2, ViewChild } from '@angular/core';\r\nimport { AbstractControl, FormBuilder, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { ToastrService } from 'ngx-toastr';\r\nimport { forkJoin, Subscription } from 'rxjs';\r\nimport { GeneralService } from 'src/app/services/General.service';\r\nimport { MarketInfoService } from 'src/app/services/MarketInfoService.service';\r\nimport { RentalService } from 'src/app/services/Rental.service';\r\nimport { VendorService } from 'src/app/services/Vendor.service';\r\nimport { customCurrencyPipe } from 'src/app/Shared/customCurrency.pipe';\r\nimport { ICountry, IStates, RegistrationFeeModel } from 'src/app/Shared/models/GeneralModel';\r\nimport { IVendorGeneralSettings } from 'src/app/Shared/models/SettingsModel';\r\nimport { IVendorInfo, IVendorLoginInfoModel, IVendorProductImageContents, IVendorProductImages, IVendorProductModel } from 'src/app/Shared/models/VendorModel';\r\nimport { SharedDataService } from 'src/app/Shared/SharedData.service';\r\nimport Swal from 'sweetalert2';\r\n\r\n@Component({\r\n  selector: 'app-new-vendor-rentonline',\r\n  templateUrl: './new-vendor-rentonline.component.html',\r\n  styleUrls: ['./new-vendor-rentonline.component.scss']\r\n})\r\n\r\nexport class NewVendorRentonlineComponent implements OnInit, OnDestroy {\r\n  showrentOnline: boolean = true;\r\n  showContactInfo: boolean = false;\r\n  showLoginInfo: boolean = false;\r\n  showPaymentPage: boolean = false;\r\n  IsVendorLogin: boolean = true;\r\n  pageName: string = \"Rent Online\";\r\n  howtoRentSpaceDocURL = \"\";\r\n  rulesAndRegulations = \"\";\r\n  @ViewChild('btnRentOnline') btnRentOnline!: ElementRef;\r\n  @ViewChild('ContactInfo') ContactInfo!: ElementRef;\r\n  @ViewChild('btnLoginInfo') btnLoginInfo!: ElementRef;\r\n  @ViewChild('btnPayment') btnPayment!: ElementRef;\r\n  marketId;\r\n  rentalForm: FormGroup;\r\n  vendorLoginData: IVendorLoginInfoModel;\r\n  VendorGeneralSetting: IVendorGeneralSettings = {} as IVendorGeneralSettings;\r\n  VendorForm: FormGroup;\r\n  public ProductDropDownfields: Object = { text: 'ProductName', value: 'ProductId' };\r\n  validationResponse: any;\r\n  securityQuestions: any[];\r\n  productList: any[];\r\n  public loaderIcon: Promise<boolean>;\r\n  AllowBookingsCw = false;\r\n  AllowBookingsWeekly = false;\r\n  AllowBookingsCm = false;\r\n  vendorAddressMandatory= false;\r\n  AllowBookingsMonthly = false;\r\n  AllowBookingsDaily = false;\r\n  private subscriptions: Subscription[] = [];\r\n  defaultRentalTypeSelected;\r\n  marketName = \"\";\r\n  countryList = [];\r\n  vendorId;\r\n  openPaymentDetails=false;\r\n  vendorinfo: IVendorInfo;\r\n  showStateDropDown;\r\n  securityQuestion = [];\r\n  showCellPhoneError = false;\r\n  showWorkPhoneError = false;\r\n  vendorMarketID = \"\";\r\n  selected = '1';\r\n  toasterConfig = {\r\n    closeButton: true,\r\n    timeOut: 4500,\r\n    easing: 'ease-out',\r\n    progressBar: true,\r\n    positionClass: 'toast-top-right',\r\n    tapToDismiss: true,\r\n    showEasing: 'swing',\r\n    hideEasing: 'linear',\r\n    showMethod: 'fadeIn',\r\n    hideMethod: 'slideUp'\r\n  };\r\n  vendorName;\r\n  resaleNumberRequired = false;\r\n  businessLicenseNoRequired = false;\r\n  stateList: IStates[];\r\n  registrationFee: RegistrationFeeModel;\r\n  newVendor = true;\r\n  VendorProductsList: IVendorProductModel[] = [];\r\n  VendorProductsImageList: IVendorProductImages[] = [] as IVendorProductImages[];\r\n  VendorProductsImageContentList: IVendorProductImageContents[] = [] as IVendorProductImageContents[];\r\n  public PhoneNumberMask: String = '000-000-0000';\r\n  public StateDropDownfields: Object = { text: 'StateCode', value: 'StateCode' };\r\n  public ZipCodeMask: String = '00000-0000';\r\n  VendorTypeList = [];\r\n  businessLicenseInfo :any;\r\n  initialFormValues: any;\r\n  emailIdsPattern = '^(([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,}))([\\\\s]?[,;]{1}[\\\\s]?([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,})){0,4}$';\r\n  constructor(private renderer: Renderer2,\r\n    private formbuilder: FormBuilder,\r\n    private vendorService: VendorService,\r\n    private route: ActivatedRoute,\r\n    private sharedDataService: SharedDataService,\r\n    private generalService: GeneralService,\r\n    public router: Router,\r\n    private toastr: ToastrService,\r\n    private rentalService:RentalService,\r\n    private customCurrency: customCurrencyPipe,\r\n    private marketInfoService: MarketInfoService,\r\n  ) {\r\n    const passwordValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => {\r\n      const password = control.value;\r\n      const minLength = 6;\r\n      const hasSpecialChar = /[!@#$%^&*()_+\\-=\\[\\]{};':\"\\\\|,.<>\\/?]+/;\r\n      const hasUpperCase = /[A-Z]+/;\r\n      const hasLowerCase = /[a-z]+/;\r\n\r\n      // Check the password against the conditions\r\n      if (password.length < minLength) {\r\n        return { minLength: true };\r\n      }\r\n      if (!hasSpecialChar.test(password)) {\r\n        return { specialChar: true };\r\n      }\r\n      if (!hasUpperCase.test(password)) {\r\n        return { upperCase: true };\r\n      }\r\n      if (!hasLowerCase.test(password)) {\r\n        return { lowerCase: true };\r\n      }\r\n\r\n      return null;\r\n    };\r\n\r\n    this.rentalForm = this.formbuilder.group({\r\n      rentalTypes: [\"1\"],\r\n      VendorForm: this.formbuilder.group(\r\n        {\r\n          Address: ['', [Validators.maxLength(50)]],\r\n          BusAddress: ['', [Validators.maxLength(50)]],\r\n          BusCity: [''],\r\n          BusState: [''],\r\n          BusTelePhone: [''],\r\n          BusZipCode: ['', [Validators.maxLength(10)]],\r\n          CellPhone: ['', [Validators.minLength(10), Validators.maxLength(12)]],\r\n          City: [''],\r\n          CompanyName: ['', [Validators.maxLength(50)]],\r\n          Country: [''],\r\n          CountryCode: [0],\r\n          DLExpiryDate: [null],\r\n          DriverLicenseNumber: [''],\r\n          ResaleNumber: [''],\r\n          BusinessLicenseNumber: [''],\r\n          BusinessLicenseExpiryDate:[null],\r\n          Email: ['', [Validators.maxLength(40), Validators.pattern('^(([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,}))([\\\\s]?[,;]{1}[\\\\s]?([\\\\w+-.%]+)@([\\\\w-.]+)\\\\.([A-Za-z]{2,})){0,4}$')]],\r\n          FirstName: ['', [Validators.required, Validators.maxLength(50)]],\r\n          LastName: ['', [Validators.maxLength(50)]],\r\n          MarketId: [0, [Validators.required]],\r\n          MarketVendorId: [0, [Validators.required]],\r\n          MiddleName: ['', [Validators.maxLength(50)]],\r\n          State: [''],\r\n          VendorId: [0, [Validators.required]],\r\n          VendorSince: [Date],\r\n          VendorType: ['', Validators.required],\r\n          WorkPhone: ['',[Validators.minLength(10),Validators.maxLength(12)]],\r\n          TelePhone: [''],\r\n          ZipCode: [''],\r\n          ProductPriority: ['', [Validators.required]],\r\n        }),\r\n      OnlineAccessForm: this.formbuilder.group(\r\n        {\r\n          UserName: ['', [Validators.maxLength(16), Validators.required]],\r\n          Password: ['', [Validators.required, Validators.minLength(6), Validators.maxLength(20), passwordValidator]],\r\n          ConfirmPassword: ['', Validators.required],\r\n          SecurityQuestion: ['', Validators.required],\r\n          Answer: ['', Validators.required],\r\n          RegistrationFee: [],\r\n          registrationPaymentCheck: new FormControl(false),\r\n          registrationRuleReadCheck: new FormControl(false),\r\n        })\r\n    })\r\n    this.initialFormValues = this.rentalForm.controls['VendorForm'];\r\n  }\r\n\r\n  ngOnInit(): void {\r\n    this.route.params.subscribe((params: Params) => {\r\n      this.marketId = params['marketId'];\r\n      this.vendorId = params['vendorId'];\r\n    });\r\n    this.getVendorGeneralSettings();\r\n    this.getMarketDetails();\r\n    this.getallproducts();\r\n    this.getCountries();\r\n    this.getStates();\r\n    this.getWebRentalSetting();\r\n    this.getVendorTypes();   \r\n    this.RegistrationFee();\r\n    this.getSecurityQuestion();\r\n  }\r\n\r\n  getSecurityQuestion() {\r\n    this.generalService.GetSecurityQuestion().subscribe((response) => {\r\n      if (response) {\r\n        this.securityQuestions = response.body;\r\n      }\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  getCountries() {\r\n    const sub = this.generalService.getCountries().subscribe((response: ICountry[]) => {\r\n      this.countryList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  getStates() {\r\n    const sub = this.generalService.getUSStates().subscribe((response: IStates[]) => {\r\n      this.stateList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  } \r\n\r\n  getVendorGeneralSettings() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.subscriptions.push(this.marketInfoService.getCurrentMarketVendorGeneralSettings(this.marketId).subscribe((res: any) => {\r\n      \r\n      if (res) {\r\n        this.VendorGeneralSetting = {\r\n          IsVendorIdManual : res.SpecifyVendorID,\r\n          VendorAddressMandatory : res.VendAddressMandatory,\r\n          AllowAbsenteeRefund : res.BoothStatusRefund,\r\n          TermForLease : res.LeaseLabel,\r\n          DefaultProductEnabled : res.DefaultProductSelected,\r\n          Product : res.ProductId,\r\n          ResaleNumberRequired : res.ResaleNumberRequired,\r\n          DaysToSellWithoutResaleNo : res.DaysSellWithoutResaleNumber,\r\n          BusinessLicenseNumberReq : res.BusinessLicenseNumberRequired,\r\n          DaysToSellWithoutBusinessLicenseNo : res.DaysSellWithoutBusiLicNumber,\r\n          AlphaNumericField1Reqd : res.AlphaNumericField1Reqd,\r\n          AlphaNumericField2Reqd : res.AlphaNumericField2Reqd,\r\n          AlphaNumericField1Name : res.AlphaNumericField1Name,\r\n          AlphaNumericField2Name : res.AlphaNumericField2Name,\r\n          NumericField1Reqd : res.NumericField1Reqd,\r\n          NumericField2Reqd : res.NumericField2Reqd,\r\n          NumericField1Name : res.NumericField1Name,\r\n          NumericField2Name : res.NumericField2Name,\r\n          VendorNameFormat : res.VendorNamingConvention,\r\n          VendorNameFormatId : res.VendorNamingConventionId,\r\n          BoothTerm : res.BoothTerm\r\n        }\r\n        if(!this.VendorGeneralSetting.IsVendorIdManual){\r\n          this.rentalForm.controls['VendorForm'].get('MarketVendorId').disable(); \r\n        }\r\n\r\n        if(this.VendorGeneralSetting.VendorAddressMandatory){\r\n          this.vendorAddressMandatory = true;\r\n          this.rentalForm.controls['VendorForm'].get('City').setValidators([Validators.required]);\r\n          this.rentalForm.controls['VendorForm'].get('ZipCode').setValidators([Validators.required]);\r\n          this.rentalForm.controls['VendorForm'].get('State').setValidators([Validators.required]);\r\n          \r\n          this.rentalForm.controls['VendorForm'].get('City').updateValueAndValidity();\r\n          this.rentalForm.controls['VendorForm'].get('ZipCode').updateValueAndValidity();\r\n          this.rentalForm.controls['VendorForm'].get('State').updateValueAndValidity();\r\n        }\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n      this.loaderIcon = Promise.resolve(false);    \r\n  }\r\n\r\n  resaleNoInputRequired(val) {\r\n    this.resaleNumberRequired = val;\r\n    if (val) {\r\n      this.rentalForm.controls['VendorForm'].get('ResaleNumber').setValidators([Validators.required]);\r\n      this.rentalForm.controls['VendorForm'].get('ResaleNumber').updateValueAndValidity();\r\n    }\r\n  }\r\n\r\n  businessLicenseRequired(val) {\r\n    this.businessLicenseNoRequired = val;\r\n    this.rentalForm.controls['VendorForm'].get('BusinessLicenseNumber').setValidators([Validators.required]);\r\n    this.rentalForm.controls['VendorForm'].get('BusinessLicenseExpiryDate').setValidators([Validators.required]);\r\n    this.rentalForm.controls['VendorForm'].get('BusinessLicenseNumber').updateValueAndValidity();\r\n    this.rentalForm.controls['VendorForm'].get('BusinessLicenseExpiryDate').updateValueAndValidity();   \r\n  }\r\n\r\n  getallproducts() {\r\n    this.subscriptions.push(this.marketInfoService.GetAllMarketProducts(this.marketId).subscribe((res: any) => {\r\n      this.productList = [];\r\n      res.map((el, i) => {\r\n        const ob = {\r\n          ProductId: el.ProductId,\r\n          ProductName: el.ProductName,\r\n          ProductCategory: el.ProductCategory,\r\n          ProductCategoryId: el.ProductCategoryId,\r\n          IsInActive: el.IsInActive,\r\n          CompanyProductId: el.CompanyProductId,\r\n        }\r\n\r\n        this.productList.push(ob);\r\n\r\n      });\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }));\r\n  }\r\n\r\n  primaryproductchange(args1) {\r\n    const Id = args1;\r\n    const product = this.productList.find(p => p.ProductId === Id);\r\n\r\n    if (product) {\r\n      this.VendorProductsList.pop();\r\n      const newProduct: IVendorProductModel = {\r\n        VProductId: 0,\r\n        ProductId: product.ProductId,\r\n        Priority: true,\r\n        VendorId: 0,\r\n        ProductName: product.ProductName,\r\n        ProductCategoryId: product.ProductCategoryId,\r\n        ProductCategory: product.ProductCategory,\r\n      };\r\n      this.VendorProductsList.push(newProduct);\r\n    } else {\r\n      console.log(\"Product not found with ID:\", Id);\r\n    }\r\n  }\r\n\r\n  public noWhitespaceValidator(control: FormControl) {\r\n    if ((control.value !== '') && (control.value !== null)) {\r\n      if (control.value) {\r\n        const isWhitespace = (control.value).trim().length === 0;\r\n        const isValid = !isWhitespace;\r\n        return isValid ? null : { 'whitespace': true };\r\n      }\r\n    }\r\n  }\r\n\r\n  restrictSpace(eve) {\r\n    if (eve.which === 32) {\r\n      eve.preventDefault();\r\n    }\r\n  }\r\n\r\n  onKeyUp(field: string) {\r\n    const phoneControl = this.rentalForm.controls['VendorForm'].get(field);\r\n    if (field === 'CellPhone') {\r\n      this.showCellPhoneError = phoneControl && phoneControl.invalid && phoneControl.touched;\r\n    } else if (field === 'WorkPhone') {\r\n      this.showWorkPhoneError = phoneControl && phoneControl.invalid && phoneControl.touched;\r\n    }\r\n  }\r\n\r\n  ngAfterViewInit() {\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#DDEBFC');\r\n    this.rentalForm.controls['VendorForm'].patchValue({\r\n      CountryCode: this.countryList[0].Code\r\n    });\r\n    this.onCountryChange();\r\n  }\r\n\r\n  getMarketDetails() {\r\n    this.loaderIcon = Promise.resolve(true);\r\n    const sub = this.marketInfoService.getMarketDetails(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.marketName = res.MarketName;\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err => {\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  onCountryChange() {\r\n    this.showStateDropDown = true;\r\n    if (this.rentalForm.controls['VendorForm'].value['CountryCode'] == 2) {\r\n      this.showStateDropDown = false;\r\n    }\r\n  }\r\n\r\n  getVendorTypes() {\r\n    const sub = this.vendorService.GetVendorTypes(this.marketId).subscribe((response: IStates[]) => {\r\n      this.VendorTypeList = response;\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  ValidationVendorDetails(): void {\r\n    if (this.rentalForm.controls['VendorForm'].value['FirstName'].trim() == '') {\r\n      this.toastr.error($localize`Vendor first name can't be empty`, $localize`Error`, this.toasterConfig)\r\n      this.loaderIcon = Promise.resolve(false);\r\n      return;\r\n    }\r\n\r\n    if(this.resaleNumberRequired){\r\n      if (this.rentalForm.controls['VendorForm'].value['ResaleNumber'].trim() == '') {\r\n        this.toastr.error($localize`Resale Number can't be empty`, $localize`Error`, this.toasterConfig)\r\n        this.loaderIcon = Promise.resolve(false);\r\n        return;\r\n      }\r\n    }\r\n\r\n    if(this.businessLicenseNoRequired){\r\n      if (this.rentalForm.controls['VendorForm'].value['BusinessLicenseNumber'].trim() == '' || !this.rentalForm.controls['VendorForm'].value['BusinessLicenseExpiryDate']) {\r\n        this.toastr.error($localize`Business License Number or Expiry date can't be empty`, $localize`Error`, this.toasterConfig)\r\n        this.loaderIcon = Promise.resolve(false);\r\n        return;\r\n      }\r\n    }\r\n    this.loaderIcon = Promise.resolve(true);\r\n    this.vendorinfo = {\r\n      Address: this.rentalForm.controls['VendorForm'].get('Address').value,\r\n      BusAddress: null,\r\n      BusCity: null,\r\n      BusState: null,\r\n      BusTelePhone: null,\r\n      BusZipCode: null,\r\n      CellPhone: this.rentalForm.controls['VendorForm'].get('CellPhone').value,\r\n      City: this.rentalForm.controls['VendorForm'].get('City').value,\r\n\r\n      CompanyName: this.rentalForm.controls['VendorForm'].get('CompanyName').value,\r\n      Country: this.rentalForm.controls['VendorForm'].get('Country').value,\r\n      CountryCode: this.rentalForm.controls['VendorForm'].get('CountryCode').value,\r\n      DLExpiryDate: this.rentalForm.controls['VendorForm'].get('DLExpiryDate').value,\r\n      DriverLicenseNumber: this.rentalForm.controls['VendorForm'].get('DriverLicenseNumber').value == null ? '' : this.rentalForm.controls['VendorForm'].get('DriverLicenseNumber').value,\r\n      Email: this.rentalForm.controls['VendorForm'].get('Email').value,\r\n      FirstName: this.rentalForm.controls['VendorForm'].get('FirstName').value,\r\n\r\n      LastName: this.rentalForm.controls['VendorForm'].get('LastName').value,\r\n      MarketId: Number(this.marketId),\r\n      MarketVendorId: this.rentalForm.controls['VendorForm'].get('MarketVendorId').value,\r\n      MiddleName: this.rentalForm.controls['VendorForm'].get('MiddleName').value,\r\n\r\n      State: this.rentalForm.controls['VendorForm'].get('State').value,\r\n      TelephoneEXT: null,\r\n      VendorId: this.rentalForm.controls['VendorForm'].get('VendorId').value,\r\n      VendorSince: new Date(),\r\n      VendorType: this.rentalForm.controls['VendorForm'].get('VendorType').value,\r\n      TelePhone: this.rentalForm.controls['VendorForm'].get('TelePhone').value,\r\n      WorkPhone: this.rentalForm.controls['VendorForm'].get('WorkPhone').value,\r\n      ZipCode: this.rentalForm.controls['VendorForm'].get('ZipCode').value,\r\n      BusTelephoneEXT: null,\r\n\r\n      VendorName: \"\",\r\n      VendorProductsList: this.VendorProductsList,\r\n      VendorProductImageList: this.VendorProductsImageList,\r\n      VendorProductImageContentList: this.VendorProductsImageContentList,\r\n      VendorProfile: null,\r\n      VenTxtPhotoFile: null,\r\n      BusinessLicNum: this.rentalForm.controls['VendorForm'].get('BusinessLicenseNumber').value,\r\n      ResaleNum: this.rentalForm.controls['VendorForm'].get('ResaleNumber').value,\r\n      WebRentalRequest: true\r\n    };\r\n\r\n    this.vendorService.RegisterVendorInfoValidation(this.vendorinfo).subscribe((res: any) => {\r\n      this.validationResponse = res;\r\n      if (this.validationResponse.Success) {       \r\n        this.displayOnlineAccess();\r\n      } else {\r\n        this.toastr.error(this.validationResponse.Message, $localize`Error`, this.toasterConfig)\r\n      }\r\n      this.loaderIcon = Promise.resolve(false);\r\n    }, err=>{\r\n      this.loaderIcon = Promise.resolve(false);\r\n    });\r\n  }\r\n\r\n  validateContactForm() {\r\n    if (this.rentalForm['controls'].contactInfoForm.invalid) {\r\n      return true\r\n    } else {\r\n      return false\r\n    }\r\n  }\r\n\r\n  paymentCancelClick(eve) {\r\n    this.ngOnInit();\r\n    this.rentOnline();\r\n  }\r\n\r\n  getWebRentalSetting() {\r\n    const sub = this.marketInfoService.getWebRentalSetting(this.marketId).subscribe((res: any) => {\r\n      if (res) {\r\n        this.AllowBookingsDaily = res.AllowBookingsDaily;\r\n        this.AllowBookingsMonthly = res.AllowBookingsMonthly;\r\n        this.AllowBookingsCm = res.AllowBookingsCm;\r\n        this.AllowBookingsWeekly = res.AllowBookingsWeekly;\r\n        this.AllowBookingsCw = res.AllowBookingsCw;\r\n        this.howtoRentSpaceDocURL = res.HowtoRentSpaceDocURL;\r\n        this.rulesAndRegulations = res.RulesAndRegulationsAttachmentPDFUrl;\r\n        this.rentalForm.get('rentalTypes').setValue(res.DefaultRentalType.toString());\r\n\r\n        if (this.sharedDataService.rentalType) {\r\n          this.rentalForm.get('rentalTypes').setValue(this.sharedDataService.rentalType.toString());\r\n          this.sharedDataService.rentalType = \"\";\r\n          this.sharedDataService.paymentSharedData.RentalMethod = \"\";\r\n        }\r\n      }\r\n    }, err => {\r\n    });\r\n    this.subscriptions.push(sub);\r\n  }\r\n\r\n  bookingFormCompleted(eve) {\r\n    if (eve) {\r\n      this.contactInfo();\r\n    }\r\n  }\r\n\r\n  RegistrationFee() {\r\n    this.marketInfoService.RegistrationFee(this.marketId).subscribe((res: any) => {\r\n      this.registrationFee = res;\r\n      this.rentalForm.controls['OnlineAccessForm'].patchValue(\r\n        {\r\n          RegistrationFee: this.registrationFee.RegistrationFee.toString() != null ? this.customCurrency.transform(String(this.registrationFee.RegistrationFee)) : this.customCurrency.transform(\"0.00\"),\r\n        }\r\n      );\r\n    }, (err) => {\r\n      console.log(err);\r\n    });\r\n  }\r\n\r\n  rentOnline() {\r\n    this.showrentOnline = true;\r\n    this.showContactInfo = false;\r\n    this.showLoginInfo = false;\r\n    this.showPaymentPage = false;\r\n    this.pageName = \"Rent Online\";\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  contactInfo() {\r\n    this.showrentOnline = false;\r\n    this.showContactInfo = true;\r\n    this.showLoginInfo = false;\r\n    this.showPaymentPage = false;\r\n    this.pageName = \"Current Contact Information\";\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  displayOnlineAccess() {\r\n    this.showContactInfo = false;\r\n    this.showLoginInfo = true;\r\n    this.showrentOnline = false;\r\n    this.showPaymentPage = false;\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  paymentInfo() {\r\n    this.showrentOnline = false;\r\n    this.showContactInfo = false;\r\n    this.showLoginInfo = false;\r\n    this.showPaymentPage = true;\r\n    this.openPaymentDetails = true;\r\n    this.pageName = \"Online Payment Info\";\r\n    this.renderer.setStyle(this.btnPayment.nativeElement, 'background-color', '#DDEBFC');\r\n    this.renderer.setStyle(this.btnRentOnline.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.ContactInfo.nativeElement, 'background-color', 'white');\r\n    this.renderer.setStyle(this.btnLoginInfo.nativeElement, 'background-color', 'white');\r\n  }\r\n\r\n  setDirtyFlag(eve) {\r\n\r\n  }\r\n\r\n  isCancelClicked(eve) {\r\n    this.rentalForm.get('rentalTypes').setValue('0');\r\n    setTimeout(() => {\r\n      this.rentalForm.get('rentalTypes').setValue(eve);\r\n    }, 0);\r\n  }\r\n\r\n  cancelContactModification() {\r\n    if (this.rentalForm.controls['VendorForm'].dirty) {\r\n      Swal.fire({\r\n        title: $localize`Confirm`,\r\n        text: $localize`Unsaved changes will be lost. Are you sure you want to cancel?`,\r\n        icon: \"question\",\r\n        showCancelButton: true,\r\n        confirmButtonText: $localize`Yes`,\r\n        cancelButtonText: $localize`No`,\r\n      }).then((result) => {\r\n        if (result.isConfirmed) {\r\n          this.rentalForm.controls['VendorForm'].reset(this.initialFormValues);\r\n          this.rentalForm.controls['VendorForm'].markAsPristine();\r\n        } else {\r\n        }\r\n      });\r\n    } else {\r\n    }\r\n  }\r\n\r\n  Oncancel(){\r\n\r\n  }\r\n\r\n  rentalBookingData(data) {\r\n    this.sharedDataService.paymentSharedData = data;\r\n  }\r\n\r\n  openPaymentPage(){\r\n    this.vendorLoginData = {\r\n      VendorId: 0,\r\n      VendorName: null,\r\n      OnlineAccess: true,\r\n      OnlineUserId:this.rentalForm.controls['OnlineAccessForm'].get('UserName').value,\r\n      OnlinePassword:this.rentalForm.controls['OnlineAccessForm'].get('Password').value,\r\n      SecurityQuestionId:this.rentalForm.controls['OnlineAccessForm'].get('SecurityQuestion').value,\r\n      SecurityQuestionAnswer:this.rentalForm.controls['OnlineAccessForm'].get('Answer').value,\r\n      OnlineRegistrationDate: new Date()\r\n    };\r\n    const check = this.CheckValidations();\r\n    if (!check) {\r\n      this.loaderIcon = Promise.resolve(false);\r\n      return;\r\n    }\r\n\r\n    this.sharedDataService.newVendorLoginDetails = this.vendorLoginData;\r\n    this.sharedDataService.newVendorContactInfo = this.vendorinfo;\r\n    if(this.sharedDataService.paymentSharedData){      \r\n      if (this.rentalForm.value['rentalTypes'] == 1) {\r\n        if (this.sharedDataService.paymentSharedData.DailyRentalBooth && this.sharedDataService.paymentSharedData.DailyRentalBooth.length > 0) {\r\n          for (const item of this.sharedDataService.paymentSharedData.DailyRentalBooth) {\r\n            item.ProductId = this.rentalForm.controls['VendorForm'].value[\"ProductPriority\"];\r\n          }\r\n        }\r\n      }\r\n      else if (this.rentalForm.value['rentalTypes'] == 2 || this.rentalForm.value['rentalTypes'] == 4) {\r\n        if (this.sharedDataService.paymentSharedData.MonthlyRentalBooth && this.sharedDataService.paymentSharedData.MonthlyRentalBooth.length > 0) {\r\n          for (const item of this.sharedDataService.paymentSharedData.MonthlyRentalBooth) {\r\n            item.ProductId = this.rentalForm.controls['VendorForm'].value[\"ProductPriority\"];\r\n          }\r\n        }\r\n      }\r\n      else if (this.rentalForm.value['rentalTypes'] == 3) {\r\n        if (this.sharedDataService.paymentSharedData.WeeklyRentalBooth && this.sharedDataService.paymentSharedData.WeeklyRentalBooth.length > 0) {\r\n          for (const item of this.sharedDataService.paymentSharedData.WeeklyRentalBooth) {\r\n            item.ProductId = this.rentalForm.controls['VendorForm'].value[\"ProductPriority\"];\r\n          }\r\n        }\r\n      }\r\n      else if (this.rentalForm.value['rentalTypes'] == 5) {\r\n        if (this.sharedDataService.paymentSharedData.CombinedWeeklyRentalBooth && this.sharedDataService.paymentSharedData.CombinedWeeklyRentalBooth.length > 0) {\r\n          for (const item of this.sharedDataService.paymentSharedData.CombinedWeeklyRentalBooth) {\r\n            item.ProductId = this.rentalForm.controls['VendorForm'].value[\"ProductPriority\"];\r\n          }\r\n        }\r\n      }\r\n    }\r\n    if (this.businessLicenseNoRequired) {\r\n      this.businessLicenseInfo = [];\r\n      var obj =\r\n      {\r\n        BusinessLicenseNoRequired: this.businessLicenseNoRequired,\r\n        LicenseNumber: this.rentalForm.controls['VendorForm'].value['BusinessLicenseNumber'].trim(),\r\n        ExpiryDate: this.rentalForm.controls['VendorForm'].value['BusinessLicenseExpiryDate']\r\n      }\r\n      this.businessLicenseInfo = obj;\r\n    }\r\n    this.paymentInfo();\r\n  }\r\n\r\n  CheckValidations() {\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('UserName').hasError('required') || this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('required') || this.rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').hasError('required') || this.rentalForm.controls['OnlineAccessForm'].get('SecurityQuestion').hasError('required') || this.rentalForm.controls['OnlineAccessForm'].get('Answer').hasError('required')) {\r\n      this.toastr.error($localize`Please fill all mandatory fields properly`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('minLength')) {\r\n      this.toastr.error($localize`Password must be atleast 6 character`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('maxLength')) {\r\n      this.toastr.error($localize`Password must be at least 20 characters long.`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('upperCase')) {\r\n      this.toastr.error($localize`Password must contain at least one uppercase letter`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('specialChar')) {\r\n      this.toastr.error($localize`Password must contain at least one special`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').hasError('lowerCase')) {\r\n      this.toastr.error($localize`password must contain at least one lowercase letter`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Answer').hasError('minLength')) {\r\n      this.toastr.error($localize`Security Answer must be atleast 4 character`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    if (this.rentalForm.controls['OnlineAccessForm'].get('Password').value != this.rentalForm.controls['OnlineAccessForm'].get('ConfirmPassword').value) {\r\n      this.toastr.error($localize`Confirm Password doesn't match.`, $localize`Error`, this.toasterConfig)\r\n      return false;\r\n    }\r\n    return true;\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this.subscriptions.forEach((subscription) => {\r\n      if (subscription) {\r\n        subscription.unsubscribe();\r\n      }\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\nimport { HomeComponent } from './rental-menu/home/home.component';\r\nimport { VendorRegistrationComponent } from './rental-menu/vendor-registration/vendor-registration.component';\r\nimport { RentalMenuComponent } from './rental-menu/rental-menu.component';\r\nimport { VendorLoginComponent } from './rental-menu/vendor-login/vendor-login.component';\r\nimport { RentOnlineComponent } from './rental-menu/vendor-login/rent-online/rent-online.component';\r\nimport { MarketMapComponent } from './rental-menu/market-map/market-map.component';\r\nimport { NewsComponent } from './rental-menu/news/news.component';\r\nimport { ContactUsComponent } from './rental-menu/contact-us/contact-us.component';\r\nimport { VendorPaymentsComponent } from './Shared/vendor-Payment-details/vendor-payments.component';\r\nimport { RentalConfirmationComponent } from './rental-menu/vendor-login/rent-online/rental-confirmation/rental-confirmation.component';\r\nimport { AuthGuard } from './auth/auth.guard';\r\nimport { NewVendorRentonlineComponent } from './rental-menu/vendor-login/rent-online/new-vendor-rentonline/new-vendor-rentonline.component';\r\n\r\nconst routes: Routes = [\r\n  {\r\n    path: ':marketId',\r\n    component: HomeComponent,\r\n  },\r\n  {\r\n    path: 'home/:marketId',\r\n    component: HomeComponent,\r\n  },\r\n  {\r\n    path: 'registration/:marketId',\r\n    component: VendorRegistrationComponent,\r\n  },\r\n  {\r\n    path: 'menu/:marketId',\r\n    component: RentalMenuComponent,\r\n  },\r\n  {\r\n    path: 'login/:marketId',\r\n    component: VendorLoginComponent,\r\n  },\r\n  {\r\n    path: 'rent-online/:marketId/:vendorId',\r\n    component: RentOnlineComponent,\r\n    canActivate: [AuthGuard]\r\n  },\r\n  {\r\n    path: 'rent-online/:marketId/:vendorId/:bookingpage/:rentaltype',\r\n    component: RentOnlineComponent,\r\n    canActivate: [AuthGuard]\r\n  },\r\n  {\r\n    path:'newven-online/:marketId/:vendorId',\r\n    component:NewVendorRentonlineComponent,\r\n  },\r\n  {\r\n    path: 'map/:marketId',\r\n    component: MarketMapComponent,\r\n  },\r\n  {\r\n    path: 'news/:marketId',\r\n    component: NewsComponent,\r\n  },\r\n  {\r\n    path: 'contact/:marketId',\r\n    component: ContactUsComponent,\r\n  },\r\n  {\r\n    path: 'vendor-payments/:marketId',\r\n    component: VendorPaymentsComponent,\r\n    canActivate: [AuthGuard]\r\n  },\r\n  {\r\n    path: 'vendor-payments/:marketId/:vendorId',\r\n    component: VendorPaymentsComponent,\r\n    canActivate: [AuthGuard]\r\n  },\r\n  {\r\n    path: 'thank-you/:marketId',\r\n    component: RentalConfirmationComponent,\r\n    canActivate: [AuthGuard]\r\n  }\r\n];\r\n\r\n@NgModule({\r\n  imports: [RouterModule.forRoot(routes)],\r\n  exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n  selector: 'app-root',\r\n  templateUrl: './app.component.html',\r\n  styleUrls: ['./app.component.scss']\r\n})\r\nexport class AppComponent {\r\n  title = 'Web Rental';\r\n}\r\n","<router-outlet></router-outlet>","import { Injectable } from '@angular/core';\r\nimport {\r\n  HttpInterceptor,\r\n  HttpRequest,\r\n  HttpHandler,\r\n  HttpEvent,\r\n  HttpHeaders\r\n} from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { UserService } from 'src/app/services/User.service';\r\n\r\n@Injectable()\r\nexport class TokenInterceptor implements HttpInterceptor {\r\n  constructor(private userService: UserService) {}\r\n\r\n  intercept(\r\n    request: HttpRequest<any>,\r\n    next: HttpHandler\r\n  ): Observable<HttpEvent<any>> {\r\n    // Get the token\r\n    //const token = this.userService.getToken();    \r\n    const token=localStorage.getItem('token');\r\n    // Clone the request and add the Bearer token header if a token exists\r\n    if (token) {\r\n      request = request.clone({\r\n        setHeaders: {\r\n          Authorization: `Bearer ${token}`,\r\n        },\r\n      });\r\n    }\r\n    // Clone the request and add additional headers\r\n    const httpRequest = request.clone({\r\n      setHeaders: {\r\n        'Cache-Control': 'no-cache',\r\n        'Pragma': 'no-cache',\r\n        'Expires': 'Sat, 01 Jan 2000 00:00:00 GMT'\r\n      }\r\n    });\r\n\r\n    return next.handle(httpRequest);\r\n  }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({\r\n  name: 'linkify'\r\n})\r\nexport class LinkifyPipe implements PipeTransform {\r\n  transform(value: string): string {\r\n    if (!value) return '';\r\n\r\n    // Regex to detect URLs (http, https, www)\r\n    const urlRegex = /(https?:\\/\\/[^\\s]+|www\\.[^\\s]+)/g;\r\n\r\n    return value.replace(urlRegex, (url) => {\r\n      let hyperlink = url;\r\n      if (!hyperlink.startsWith('http')) {\r\n        hyperlink = 'https://' + hyperlink; // Ensure proper linking for \"www.\" URLs\r\n      }\r\n      return `<a href=\"${hyperlink}\" target=\"_blank\" rel=\"noopener noreferrer\">${url}</a>`;\r\n    });\r\n  }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\nimport { GridAllModule } from '@syncfusion/ej2-angular-grids';\r\nimport { HomeComponent } from './rental-menu/home/home.component';\r\nimport { VendorRegistrationComponent } from './rental-menu/vendor-registration/vendor-registration.component';\r\nimport { RentalMenuComponent } from './rental-menu/rental-menu.component';\r\nimport { VendorLoginComponent } from './rental-menu/vendor-login/vendor-login.component';\r\nimport { RentOnlineComponent } from './rental-menu/vendor-login/rent-online/rent-online.component';\r\nimport { DatePickerModule } from '@syncfusion/ej2-angular-calendars';\r\nimport { MarketMapComponent } from './rental-menu/market-map/market-map.component';\r\nimport { NewsComponent } from './rental-menu/news/news.component';\r\nimport { ContactUsComponent } from './rental-menu/contact-us/contact-us.component';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule, CurrencyPipe, DecimalPipe } from '@angular/common';\r\nimport { HttpClientModule,HTTP_INTERCEPTORS} from '@angular/common/http';\r\nimport { DiagramModule } from '@syncfusion/ej2-angular-diagrams';\r\nimport { DatePipe } from '@angular/common';\r\nimport { ToastrModule } from 'ngx-toastr';\r\nimport { LoaderComponent } from './Shared/loader/loader.component';\r\nimport { MaskedTextBoxModule } from '@syncfusion/ej2-angular-inputs';\r\nimport { DropDownListModule } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { DailyrentalOnlineComponent } from './rental-menu/vendor-login/rent-online/dailyrental-online/dailyrental-online.component'\r\nimport { TokenInterceptor } from './Shared/token.interceptor';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { customCurrencyPipe } from './Shared/customCurrency.pipe';\r\nimport { PaymentComponent } from './Shared/payment/payment.component';\r\nimport { BsModalService } from 'ngx-bootstrap/modal';\r\nimport { WeeklyrentalOnlineComponent } from './rental-menu/vendor-login/rent-online/weeklyrental-online/weeklyrental-online.component';\r\nimport { MonthlyrentalOnlineComponent } from './rental-menu/vendor-login/rent-online/monthlyrental-online/monthlyrental-online.component';\r\nimport { CombinedmonthlyrentalOnlineComponent } from './rental-menu/vendor-login/rent-online/combinedmonthlyrental-online/combinedmonthlyrental-online.component';\r\nimport { CombinedweeklyrentalOnlineComponent } from './rental-menu/vendor-login/rent-online/combinedweeklyrental-online/combinedweeklyrental-online.component';\r\nimport { RentalLayoutComponent } from './rental-menu/vendor-login/rent-online/rentallayout-online/rentallayout-online.component';\r\nimport { VendorPaymentsComponent } from './Shared/vendor-Payment-details/vendor-payments.component';\r\nimport { RentalConfirmationComponent } from './rental-menu/vendor-login/rent-online/rental-confirmation/rental-confirmation.component';\r\nimport { ModalModule } from 'ngx-bootstrap/modal';\r\nimport { BookingDetailsComponent } from './rental-menu/vendor-login/rent-online/booking-details/booking-details.component';\r\nimport { BookingDetailsWeeklyMonthlyComponent } from './rental-menu/vendor-login/rent-online/booking-details-weekly-monthly/booking-details-weekly-monthly.component';\r\nimport { SuccessTickComponent } from './Shared/success-tick/success-tick.component';\r\nimport { FailureCrossComponent } from './Shared/failure-cross/failure-cross.component';\r\nimport { NewVendorRentonlineComponent } from './rental-menu/vendor-login/rent-online/new-vendor-rentonline/new-vendor-rentonline.component';\r\nimport { ComboBoxModule } from '@syncfusion/ej2-angular-dropdowns';\r\nimport { LinkifyPipe } from './Shared/LinkifyPipe.pipe';\r\n\r\n@NgModule({\r\n  declarations: [AppComponent, RentalMenuComponent, PaymentComponent, HomeComponent,SuccessTickComponent,FailureCrossComponent, VendorRegistrationComponent, VendorLoginComponent, RentOnlineComponent, MarketMapComponent, NewsComponent, ContactUsComponent, LoaderComponent, customCurrencyPipe, DailyrentalOnlineComponent, WeeklyrentalOnlineComponent, MonthlyrentalOnlineComponent, CombinedweeklyrentalOnlineComponent, CombinedmonthlyrentalOnlineComponent,RentalLayoutComponent,VendorPaymentsComponent, RentalConfirmationComponent, BookingDetailsComponent, BookingDetailsWeeklyMonthlyComponent, NewVendorRentonlineComponent,LinkifyPipe],\r\n  imports: [GridAllModule, HttpClientModule, CurrencyPipe, DecimalPipe, BrowserAnimationsModule, CommonModule, FormsModule, ReactiveFormsModule, BrowserModule, AppRoutingModule, DatePickerModule, DiagramModule, DropDownListModule, MaskedTextBoxModule,ToastrModule.forRoot({preventDuplicates: true}),  ModalModule.forRoot(),ComboBoxModule],\r\n  exports: [CurrencyPipe, DecimalPipe, DatePickerModule, ToastrModule, customCurrencyPipe, LinkifyPipe],\r\n  providers: [\r\n    { provide: HTTP_INTERCEPTORS, useClass: TokenInterceptor, multi: true },\r\n    DatePipe, CurrencyPipe, customCurrencyPipe,LinkifyPipe, BsModalService, PaymentComponent],\r\n  bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import {IAppConfig} from '../interfaces/app-config.interface';\r\nimport {InjectionToken} from '@angular/core';\r\n\r\nexport const AppConfig: InjectionToken<IAppConfig> = new InjectionToken<IAppConfig>('AppConfig');\r\n","// import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\n// import { AppModule } from './app/app.module';\r\n\r\n\r\n// platformBrowserDynamic().bootstrapModule(AppModule)\r\n//   .catch(err => console.error(err));\r\n\r\nimport { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\nimport { AppConfig } from './app/Shared/app-config.inject';\r\nimport { registerLicense } from '@syncfusion/ej2-base';\r\n\r\nconst requestOrigin = window.location.origin;\r\nif (environment.production) {\r\n  enableProdMode();\r\n}\r\n\r\nfunction bootstrapApp() {\r\n  const req = new XMLHttpRequest();\r\n\r\n  req.addEventListener('error', (res: any) => {\r\n    console.log('Error: ', res);\r\n  });\r\n\r\n\r\n  //to auto login if user session already exists --End--\r\n  req.addEventListener('load', (res: any) => {\r\n    let appConfig = JSON.parse(res.currentTarget.response);\r\n    environment.syncfusionKey = appConfig.syncfusionKey;\r\n    environment.apiBaseUrl = appConfig.apiBaseUrl;\r\n    environment.production = appConfig.production;\r\n    registerLicense(environment.syncfusionKey);\r\n    const loginRequest = {\r\n      scopes: ['']\r\n    }\r\n\r\n    environment.apiBaseUrl = requestOrigin + \"/api\";\r\n    console.log(\"baseURL = \" , environment.apiBaseUrl);\r\n    console.log('config', appConfig);\r\n\r\n    platformBrowserDynamic([\r\n      {\r\n        provide: AppConfig, useValue: {\r\n          ...appConfig\r\n        }\r\n      },\r\n    ]).bootstrapModule(AppModule)\r\n      .then(() => {\r\n        if ('serviceWorker' in navigator && environment.production) {\r\n          navigator.serviceWorker.register('/ngsw-worker.js');\r\n        }\r\n      })\r\n      .catch(err => console.error(err));\r\n  });\r\n\r\n  req.open('GET', '/assets/config/config.json');\r\n  req.send(null);\r\n}\r\n\r\nbootstrapApp();\r\n"],"x_google_ignoreList":[]}